Tuning: a global reference, a channel's offset from it, alternate temperaments, and dynamic tuning #139
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
bcox/tymbal#139
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 one ticket covering tuning. Engine claims are from reading the tree at
f6aa8ebaonmain. Nothing here is built, measured or listened to. The one ruling already made: tuning is the channel's, delivered to the voices as per-note offsets; it is never a patch chunk or an engine concept.What the tree has
dsp/phase.h:108-113), and everything else rides the pitch lane as an offset.kTuning, "value is semitones, routed by address" (fabric/event.h:30), which the allocator applies to every voice the address matches, so a CLAP tuning expression reaches one note's copies (dsp/voice_allocator.h:427-436). This is the delivery mechanism the ruling names, and it already works for a note at a time.project/model.handproject/document.hhold neither. The glide design reserved "the channel document: the stored home for bend range and tuning tables" and built the lane they would write (docs/superpowers/specs/2026-09-07-pitch-lane-glide-design.md:379-392).VaTuning::kTonewheel,dsp/va_footage.h:44-49), which is the instrument being modeled and not a temperament.midi/decode.h:6,:48-51), which is where the MIDI Tuning Standard lives.The GX-1 is the instrument in
moregaps.mdthat names master tune per keyboard, 100 cents either way; the Prophet VS, DX7 II and most later digital instruments carry tuning tables, and every string, gamelan and early-keyboard repertoire this instrument might play is in a temperament other than the engine's.Scope
.scland.kbmare the file formats everyone else reads and writes, and a.kbmis what maps a 12-key octave onto a table with another period or size. Delivery is the per-note event at note-on: the channel looks the key up and sends the offset, so the engine changes not at all and the cost is a table read on the control path.What it touches
project/model.hand the project format (format/project.h): global tuning in the settings, a per-channel offset, transpose and table reference, additive leaves.project/link.h: the channel's tuning reaches the fabric as offsets on note-on, through the lane the ruling named.Open
.kbm's rules, or a simpler "map keys in order" default.