Release carried by the last note only: the CS-80's Sustain II and the Trident's solo release #129

Open
opened 2026-10-05 23:46:13 +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

  • CS-80, Sustain II: only the last note or chord played carries the release; earlier notes that were released are cut when the next is played.
  • Trident, solo release: "release time is only applied to the final note in the series".

Both are the same rule: a note-on ends the ringing releases of the notes before it, so the long release never piles up under a line. VoiceMode has no rule of this kind (dsp/layer.h:267-296); a released voice plays out its own release however many follow it, and only a steal at the polyphony limit ends one early (dsp/voice_allocator.h:827-841).

The work, as a sketch

  • A VoiceMode flag: on a note-on, every released-and-ringing voice on the channel takes a short fixed fade instead of continuing its release. The chord case follows: notes released together are a group, and a note-on cuts the groups before the newest.
  • The fade should be the strip ramp's length or a choke-like constant, so it never clicks; Choke (dsp/voice_allocator.h:305-307) is the immediate form and the wrong sound.
  • It is an allocator rule in the family of #113 (note priority and chord memory), and should be designed with it.

Open

  • Whether "last chord" means notes released within some window, or notes started together.
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 - **CS-80, Sustain II**: only the last note or chord played carries the release; earlier notes that were released are cut when the next is played. - **Trident, solo release**: "release time is only applied to the final note in the series". Both are the same rule: a note-on ends the ringing releases of the notes before it, so the long release never piles up under a line. `VoiceMode` has no rule of this kind (`dsp/layer.h:267-296`); a released voice plays out its own release however many follow it, and only a steal at the polyphony limit ends one early (`dsp/voice_allocator.h:827-841`). ## The work, as a sketch - A `VoiceMode` flag: on a note-on, every released-and-ringing voice on the channel takes a short fixed fade instead of continuing its release. The chord case follows: notes released together are a group, and a note-on cuts the groups before the newest. - The fade should be the strip ramp's length or a choke-like constant, so it never clicks; `Choke` (`dsp/voice_allocator.h:305-307`) is the immediate form and the wrong sound. - It is an allocator rule in the family of #113 (note priority and chord memory), and should be designed with it. ## Open - Whether "last chord" means notes released within some window, or notes started together.
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#129
No description provided.