I like this, but I think you could have streamlined the code a little bit. You know, to make it more efficient. Like this:
:state=0,plrwithinzone=1:activateifused=1,sound=$0,timerstart,state=1
:state=1,timergreater=750:activateifused=0,timerstart,state=2
:state=2,timergreater=300:activateifused=1,sound=$0,timerstart,state=1
The way you had the code set up, you were changing states just for the sheer joy of changing states. The way I have it above, you are only changing states when you need to. You are also performing the actions at the same time you are changing states, so it makes more sense to keep it as streamlined as possible.
Other than that, I think it looks good.