A voice-index source: offsets fixed per voice, as the OB-8's halves and every analog chip have #132
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
bcox/tymbal#132
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?
bcox asked on 2026-10-05 for a ticket for each engine gap in his
moregaps.mdfeature table that no existing ticket covers. Engine claims are from reading the tree atf6aa8ebaonmain. 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 a voice can read tells it which voice it is. The two per-note randoms (
kSharedRandomA,kSharedRandomB) are drawn at note-on and differ per note, not per voice; the allocator keeps a per-channel ordinal for each sounding note voice (region_ordinal,dsp/voice_allocator.h:254,:719-724) for the storage region and does not publish it. Three instruments are built on fixed per-voice differences:moregaps.mdlists it.The LFO phase offset is already a destination (
dsp/va_layer.h:455), so for the OB-8's halves only the source is missing.The work, as a sketch
kSharedVoiceIndex: the voice's ordinal on its channel as a unipolar level, ordinal over polyphony (or over the pool when unlimited), set at note-on. ThroughkQuantizeandkGreaterit becomes halves, thirds or a single voice.kSharedVoiceConstant: a per-slot random drawn once at program install or channel reset, so it is fixed for the life of the program as a chip's trim is, and not redrawn per note.Related