Hello! Thanks for reaching out! There are multiple ways to handle this and the best solution for you depends on the needs of your game. Two options are discussed in this FAQ answer on the Koreographer forums. As a quick overview here: Adjust the event timings in the Koreography Editor (or in script); use them to start Timing Window Timers. 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". 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). If the user presses a button in the window defined by your timer you can decide if it was closer to too early, spot on, or too late. Skip the event system and use the Koreography Data directly in script. This is the approach that the Rhythm Game Demo that is included with Koreographer implements. You treat the Koreography as an event list and manage where you are manually. 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... One key here is that OneOff events will only trigger on a single frame. 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). You can also implement a system like #1 and #2 above by converting all your OneOffs to Spans, but this makes the data harder to maintain. In short, I'd recommend using either approach #1 or #2. Feel free to start with the Rhythm Game Demo that's included in Koreographer. Others have done that very thing great success! I hope this helps!