I just made a DDR game for my interactive graphic novel (still needs art, but it's pretty much functional). Check it out here...
Through trial and error, I came to basically the same methods that justifun mentioned, but only for making the arrows (or indicators as I call them) "respawn". Except you would actually use "On collision with" because it will only check for that once and not constantly like it would with "On overlapping."
I decided to compare my internal system clock to the appropriate time when an indicator was supposed to collide with the top. It's actually complicated and simple at the same time.
Also, Construct seems to be a lot more sensitive (at least for me) when comparing the distance for scoring a perfect vs a good. It's pretty much impossible to get a perfect if you only have a 4 pixel window to work with. You also have to take into account the speed of your indicators (I use bullet motion), and you'd have to be a robot to get a perfect in that window.
Here's my capx. Keep in mind that you have to use your own time windows.