

You can cache the fact that an event was hit (Koreographer's events happen early in the Update loop) and then check for button press in your main Update loop (or even in the event callback, for that matter), but it's extremely precise (OneOffs only trigger in one frame). One key here is that OneOff events will only trigger on a single frame. If you track what the "next" event is, you can always check and see how far away you are from that timing and make the decision about whether the user is too early, too late, or. You treat the Koreography as an event list and manage where you are manually. This is the approach that the Rhythm Game Demo that is included with Koreographer implements.

You then manually watch for a "window of time" that you configure - each event would start a "timer" that you manage for each button press (presumably this would only be for a few frames, maximum, depending upon the music). You move the OneOff events (I assume you're using OneOffs) ahead by a known number of samples to the earliest time that you want to check for "too early". Adjust the event timings in the Koreography Editor (or in script) use them to start Timing Window Timers.Two options are discussed in this FAQ answer on the Koreographer forums. Click to expand.There are multiple ways to handle this and the best solution for you depends on the needs of your game.
