Hold, chord memory and the sustain pedal #11
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Not done on any instrument, and listed as not done for several: the OB-X's hold and chord, the Juno's hold (controller 64), the DW-8000's controller 64, the SH-101's hold, and the Poly-800's hold and chord memory.
engine/midi.his shared by every instrument, so this is one piece of work for all of them: keys released while the pedal is down stay held until it comes up.Things to settle:
engine/player.halready sits between the keys and the synth, for the arpeggiator and the zones, which suggests there.arp.latch), and zones.On the SEM family the pedal is to be a choice of three in the patch, by Ben's word on 2026-10-12: nothing, sustain, or hold.
Today controller 64 there is the Oberheims' sustain footswitch, a longer release, for a sound with
env.pedalon, and nothing otherwise. On the OB-Xa and OB-8, HOLD is a different footswitch at a different jack, so "controller 64 holds keys on every instrument" would take the sustain footswitch away. So when hold is built here, mini-SEM gets one setting with three positions in place ofenv.pedal's switch, a stored patch withenv.pedalon reading as sustain. Issue #31 can later give each footswitch a controller of its own.Hold was done for the Juno on 2026-10-12, as the DW-8000's
voice.hold, and the pedal's bookkeeping for an instrument with no zones is nowengine/damper_pedal.h.Hold and the pedals are done, on main at
3721c04, todocs/superpowers/specs/2026-10-14-hold-and-pedals-design.md:engine/pedals.h,engine/player.h), ahead of the arpeggiator. 66 is sostenuto.--hold-cc,--sostenuto-cc,--sustain-ccand--portamento-ccon every daemon, minisuited, the renderers and the plugins (flags file); 0 is off.hold on|offin the protocol, a Hold box in the page's header. Not stored in a patch.voice.holdretired (old lines load and are ignored);zone.holdkept.Chord memory is not done and stays open here.
Chord memory, the last part of this issue, is done in
0f88240, to docs/superpowers/specs/2026-10-16-chord-memory-design.md: engine/chord_memory.h, one for each zone in the player after the pedals and ahead of the arpeggiator, on every instrument; controller 67 (--chord-cc=N, 0 for none) in the daemons, minisuited and the renderers, not the plugins; the protocol'schord set|on|offandchord, with achord off/chord on 0 4 7line on change and on connecting (version still 4); a Chord button beside Hold on the page; and the suite keeping the chord across a selection. Hold and the pedals were done before. Not yet played by anyone. Closing.