A timbre per voice: the Four and Eight Voice's one program per SEM, and the Mono/Poly's rotating VCOs #133

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 patch is one program for every voice: plugin/program.h's eight layer slots describe what each note is, and every note is that. Two instruments are built the other way:

  • Oberheim Four Voice and Eight Voice: one complete SEM per voice, each set by hand, so each voice can be a different sound and successive notes land on different ones. The programmer stored sixteen patches per voice, "all of which can be different" (Vintage Synth Explorer; the Four Voice's own manual was not obtained).
  • Mono/Poly, poly and share modes: each key takes the next of the four VCOs, each with its own waveform, octave and level, through one filter; its arpeggiator cycles them the same way.

This is whole-patch variation by voice, not an offset: the nearest named gap, per-voice offsets, is #132 (a voice-index source), and splitting the SEMs across channels gives a keyboard split, not a rotation.

What is reachable, as read

  • With a voice-index source and the oscillators' level lanes, the Mono/Poly's case is a matrix idiom: each oscillator's level gated on index equals k through kQuantize and kGreater. Laborious for a whole patch's worth of parameters, and that is what the Four Voice is.

The work, as a sketch

  • Rotation over layers: a voice mode in which successive note-ons sound layer slot n mod N and no other, so each slot is one SEM with its own oscillators, filter row, envelopes and strip. Eight slots is an Eight Voice. Every layer already carries a key range (dsp/layer.h:437-440); this is the same gate keyed on the note's ordinal rather than its key.
  • Interactions: the arpeggiator (#112) wants the same rotation on steps; unison copies should rotate or not by choice; a steal keeps its slot's rotation position or not.

Open

  • Whether rotation is a VoiceMode field or a property of the layer list.
  • The Four Voice's assign modes, which were unsourced.
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 patch is one program for every voice: `plugin/program.h`'s eight layer slots describe what each note is, and every note is that. Two instruments are built the other way: - **Oberheim Four Voice and Eight Voice**: one complete SEM per voice, each set by hand, so each voice can be a different sound and successive notes land on different ones. The programmer stored sixteen patches per voice, "all of which can be different" (Vintage Synth Explorer; the Four Voice's own manual was not obtained). - **Mono/Poly, poly and share modes**: each key takes the next of the four VCOs, each with its own waveform, octave and level, through one filter; its arpeggiator cycles them the same way. This is whole-patch variation by voice, not an offset: the nearest named gap, per-voice offsets, is #132 (a voice-index source), and splitting the SEMs across channels gives a keyboard split, not a rotation. ## What is reachable, as read - With a voice-index source and the oscillators' level lanes, the Mono/Poly's case is a matrix idiom: each oscillator's level gated on index equals k through `kQuantize` and `kGreater`. Laborious for a whole patch's worth of parameters, and that is what the Four Voice is. ## The work, as a sketch - Rotation over layers: a voice mode in which successive note-ons sound layer slot n mod N and no other, so each slot is one SEM with its own oscillators, filter row, envelopes and strip. Eight slots is an Eight Voice. Every layer already carries a key range (`dsp/layer.h:437-440`); this is the same gate keyed on the note's ordinal rather than its key. - Interactions: the arpeggiator (#112) wants the same rotation on steps; unison copies should rotate or not by choice; a steal keeps its slot's rotation position or not. ## Open - Whether rotation is a `VoiceMode` field or a property of the layer list. - The Four Voice's assign modes, which were unsourced.
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#133
No description provided.