Skip to content

Parameter Storage

Mauro Moreno edited this page Aug 30, 2026 · 2 revisions

Parameter Storage

Quesynth stores 99 integer parameters. The interpretation of an integer is not uniform across parameters, so patch generators must use the parameter metadata rather than assume a shared indexing rule.

Positional versus display-keyed

  • Positional — the stored integer is an index into the parameter's list of states. Value 0 is the first state.
  • Display-keyed — the stored integer is the number shown on the display. If a control shows 1–4, there is no state 0.

Which one applies was measured per parameter, not inferred. Oscillator 1's waveform is display-keyed showing 0–3; oscillator 2's is display-keyed showing 1–4. Written 0-based like its neighbour, every oscillator 2 waveform in an early version of the factory bank named the wrong shape, and the ones set to 0 fell off the bottom of the table entirely.

Out-of-range values

Two behaviours, again measured per parameter:

  • Clamp_To_Top — saturate at the top state, at both ends. This is why an out-of-range oscillator 2 waveform becomes noise: it clamps to state 4.
  • Continue_Grid — keep walking the uniform grid, which runs past 1.0. Amplitude sustain works this way, and its own default of 107 is already past the table's top of 100 — so a sustain above "full" is a legitimate setting, not a mistake.

Neither behavior necessarily produces a parsing error. Programmatically generated patches must therefore be validated against each parameter's actual state list.

Nonlinear display tables

Display tables are not necessarily uniform. Oscillator 2's pitch table repeats entries, so 64 + 12 resolves to +11 semitones; +12 is stored at 77. Resolve the required display value through the table rather than by arithmetic offset.


← The mathematics · Patch archetypes →

Clone this wiki locally