Live tap & step record
Two distinct ways to put notes on the grid using a keyboard:
Live tap (transport playing)
With the transport running, every MIDI / QWERTY note-on lands on the step nearest the current playhead — captured at the physical press time, not when the event handler runs (we use KeyboardEvent.timeStamp + Web Audio's getOutputTimestamp so timing stays within ~2–5 ms).
The fractional offset from the grid is preserved as the step's timingOffset — that's what draws the green / red tick marks on the cell. Per-track liveQuantize strength pulls the offset toward 0 (1.0 = full snap, 0.0 = free time).
Step record (transport stopped)
Press R (or click ● Step Rec) to enable. Now MIDI / QWERTY taps insert at the cursor (the highlighted step) and advance one step. Use ← / → or ⌫ to move the cursor.
Practice mode (transport stopped, step-rec off)
MIDI / QWERTY taps audition only — they play the sound but never write to the grid. Good for finding a riff before committing it.