Arpeggiator: held keys into a stream of notes, ahead of the allocator, which nothing in the tree does #112

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

bcox asked on 2026-10-05 for a ticket for each engine gap that the third set of instruments in his moregaps.md left without one. 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

Nothing stands between a held chord and the notes the voices get. A search of the tree for "arpegg" finds only the README's remark about playing one. Fourteen of the instruments in moregaps.md's feature table have an arpeggiator, and on several it is most of what the instrument is played through.

It belongs to no layer. It rewrites which keys become notes, so it sits with the producers of note events, ahead of dsp::VoiceAllocator: the MIDI router (midi/router.h:69-78 pushes one event per instrument channel per message), the sequencer's player on the scheduled lane, and the host lane that control/sequencer.h produces.

What the instruments do

  • SH-101: up, up-and-down, down; hold; an external clock input steps it.
  • Polysix: three ranges; up, down, up/down; latch; an external trigger.
  • Mono/Poly: clocked by MG-2, an LFO. In poly mode each step takes the next of the four VCOs, so a step has its own waveform and octave.
  • Pro-One: up or up/down, latchable; the audio input's gate can step it.
  • Prophet VS: with layers and rests. Prophet-600: up/down and assign. Quadra: up and up/down. Chroma: six arpeggio algorithms among its sixteen keyboard algorithms. AX60.
  • Jupiter-8, Memorymoog, OB-8, Pro 2 and Pro 3: from recollection.

What shapes it

  • Rule zero. An arpeggiator computed on the audio thread from the keys held at the moment of each step is a late event waiting to happen. It is a producer that schedules ahead, the way sequence/player.h keeps the scheduled lane filled ahead of the run count; the held-key set is its input and its steps are stamped events.
  • Clocks. The tempo map (#47 is the ticket for tempo-synced modulation and would give it a grid), a modulator's pulse (the Mono/Poly clocks from an LFO), and an external step (SH-101, Pro-One).
  • Where it lives. Per channel, since a channel is the thing that has a keyboard; a MIDI source's keys route to channels through the router's masks, and the arpeggiator would read what arrives at the channel.
  • Latch and hold keep the set after the keys lift. Range extends it by octaves.
  • Note priority and chord memory are the same kind of rule, keys into notes, and are #113.
  • The Mono/Poly's per-step oscillator rotation is the "different timbre on each voice" row of the table, not this.
  • #47 for the clock.
bcox asked on 2026-10-05 for a ticket for each engine gap that the third set of instruments in his `moregaps.md` left without one. 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 Nothing stands between a held chord and the notes the voices get. A search of the tree for "arpegg" finds only the README's remark about playing one. Fourteen of the instruments in `moregaps.md`'s feature table have an arpeggiator, and on several it is most of what the instrument is played through. It belongs to no layer. It rewrites which keys become notes, so it sits with the producers of note events, ahead of `dsp::VoiceAllocator`: the MIDI router (`midi/router.h:69-78` pushes one event per instrument channel per message), the sequencer's player on the scheduled lane, and the host lane that `control/sequencer.h` produces. ## What the instruments do - SH-101: up, up-and-down, down; hold; an external clock input steps it. - Polysix: three ranges; up, down, up/down; latch; an external trigger. - Mono/Poly: clocked by MG-2, an LFO. In poly mode each step takes the next of the four VCOs, so a step has its own waveform and octave. - Pro-One: up or up/down, latchable; the audio input's gate can step it. - Prophet VS: with layers and rests. Prophet-600: up/down and assign. Quadra: up and up/down. Chroma: six arpeggio algorithms among its sixteen keyboard algorithms. AX60. - Jupiter-8, Memorymoog, OB-8, Pro 2 and Pro 3: from recollection. ## What shapes it - **Rule zero.** An arpeggiator computed on the audio thread from the keys held at the moment of each step is a late event waiting to happen. It is a producer that schedules ahead, the way `sequence/player.h` keeps the scheduled lane filled ahead of the run count; the held-key set is its input and its steps are stamped events. - **Clocks.** The tempo map (#47 is the ticket for tempo-synced modulation and would give it a grid), a modulator's pulse (the Mono/Poly clocks from an LFO), and an external step (SH-101, Pro-One). - **Where it lives.** Per channel, since a channel is the thing that has a keyboard; a MIDI source's keys route to channels through the router's masks, and the arpeggiator would read what arrives at the channel. - **Latch and hold** keep the set after the keys lift. Range extends it by octaves. ## Related - Note priority and chord memory are the same kind of rule, keys into notes, and are #113. - The Mono/Poly's per-step oscillator rotation is the "different timbre on each voice" row of the table, not this. - #47 for the clock.
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#112
No description provided.