Release velocity: dropped at the router, and no source carries it #134

Open
opened 2026-10-05 23:46:14 +00:00 by bcox · 0 comments
Owner

bcox asked on 2026-10-05 for a ticket for each engine gap in his moregaps.md feature table that no existing ticket covers. Engine claims are from reading the tree at f6aa8eba on main. Instrument claims are from that day's research, read mostly as archive.org OCR of the manuals by research agents and not re-checked; the sources are listed in that document. Nothing here is built, measured or listened to.

Summary

A MIDI note-off's velocity never reaches a voice: the router passes the key and not the second data byte (midi/router.h:246-247), and the shared sources have velocity at note-on only (kSharedVelocity, dsp/mod_source.h). The instruments that use it:

  • Kawai K5: the DDA envelope's release rate is modulated by release velocity.
  • Kawai K4: release velocity as a source (from the research's reading of its manual).
  • Others in the table are marked unknown (Prophet VS, Chroma); the DX7 and most of the analog set have none.

It is also what every modern keyboard and MPE controller sends, and CLAP carries it as a note expression.

The work, as a sketch

  • kSharedReleaseVelocity: a shared source that is zero until note-off and holds the release velocity from then on, so a route from it only matters in the release, which is what the instruments do with it (release time, release level).
  • The router forwards data2 of a note-off, and the fabric's note-off event carries it (fabric/event.h:27, kNoteOff); a note-on with velocity zero is a note-off with no release velocity, as the MIDI spec says.
  • The sequencer's notes and the SMF import would carry it too, or default it.

Open

  • Whether the source should instead replace kSharedVelocity at note-off (one source, two meanings, as some instruments do) rather than be a second one; a second is cleaner for a route that wants both.
bcox asked on 2026-10-05 for a ticket for each engine gap in his `moregaps.md` feature table that no existing ticket covers. Engine claims are from reading the tree at `f6aa8eba` on `main`. Instrument claims are from that day's research, read mostly as archive.org OCR of the manuals by research agents and not re-checked; the sources are listed in that document. **Nothing here is built, measured or listened to.** ## Summary A MIDI note-off's velocity never reaches a voice: the router passes the key and not the second data byte (`midi/router.h:246-247`), and the shared sources have velocity at note-on only (`kSharedVelocity`, `dsp/mod_source.h`). The instruments that use it: - **Kawai K5**: the DDA envelope's release rate is modulated by release velocity. - **Kawai K4**: release velocity as a source (from the research's reading of its manual). - Others in the table are marked unknown (Prophet VS, Chroma); the DX7 and most of the analog set have none. It is also what every modern keyboard and MPE controller sends, and CLAP carries it as a note expression. ## The work, as a sketch - `kSharedReleaseVelocity`: a shared source that is zero until note-off and holds the release velocity from then on, so a route from it only matters in the release, which is what the instruments do with it (release time, release level). - The router forwards data2 of a note-off, and the fabric's note-off event carries it (`fabric/event.h:27`, `kNoteOff`); a note-on with velocity zero is a note-off with no release velocity, as the MIDI spec says. - The sequencer's notes and the SMF import would carry it too, or default it. ## Open - Whether the source should instead replace `kSharedVelocity` at note-off (one source, two meanings, as some instruments do) rather than be a second one; a second is cleaner for a route that wants both.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bcox/tymbal#134
No description provided.