AUDIO
Source snapshot · 12 October 2026

Parameters, state, bypass and metering

Immutable complete parameter programs

ProgramBank<N> borrows ParameterProgram<N> entries and the same validated ParameterSchema<N> used for parameter state. Preparation validates all entries strictly before registration: 1..128 programs, 1..1024 parameters, <=65536 values total; complete canonical physical states, nonblank names <=255 UTF-8 bytes with no NUL, unique stable ProgramId and unique zero-based MIDI bank/number address (0..16383/0..127). Names may repeat; permanent IDs remain separate from indices and MIDI addresses. Signed zero normalizes when obtaining a ParameterState.

index and midi_index perform bounded exact lookups; state(index) proposes a complete copied state. Invalid/unavailable lookup yields None, preserving all consumer state. Editing a returned state never changes the bank. Construction, lookup and copying use no heap, locks or I/O. The bank has no mutable current program or sound engine. Consumers decide atomic publication, identity after edits, voice/history handling, host registration/notifications and persistence. See decision 0080 and the separate MIDI request decoder.