ee30ca097e
UnifiedMidiEvent (trackId, channel, command, pitch clamp 0-127, velocity normalize float->int 1-127, sourceType, timestampNs) + UnifiedMidiRouter: engineRegistry Map<trackId, engine> (route theo track), dispatchMidiEvent, activeVoiceTracker key trackId_channel_pitch (dem note-on/off dung - het stuck notes, note-off cuoi moi tat voice), panicAllNotesOff. Chua noi vao app (T5-T7). Test node: pitch clamp, velocity normalize, tracker, panic clear - xanh.