The synth/SF2 audition note-off matched a voice purely by pitch, and isActive stays true through a voice's release tail. So tapping a key, then immediately holding it again, landed the note-off on the still-releasing first voice (a no-op) and left the held one stuck, needing a MIDI panic. Two fingers on one key hit the same trap. Give voices an isGated flag (held = ADSR not in release/idle) and make auditionSlotOff / liveNoteOff release a gated voice of that pitch in preference to one already ringing out. Add SynthVoiceGateTest covering the gate/release distinction and the exact stuck-note scenario. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5.1 KiB
5.1 KiB