Skip to main content

Effects & parameters

Per-channel FX and synth parameters are stored in SMP tables and applied by dedicated modules.

Modules​

FileRole
toern_filter.inosetFilters, mixer gain smoothing, filter transitions
toern_filterUI.inoMatrix sliders, pages, encoder colors for filter mode
toern_parameters.inosetParams, defaults, envelope/synth default packs, reset

FX chain (conceptual)​

For a typical sample channel:

envelope → bitcrusher → filter → freeverb → mixers → output

This reverb path exists on sample voices 1, 2 and 5–8. Samples 3 and 4 bypass reverb. Poly voice 11 has a shared bitcrusher/filter/reverb chain after its oscillator/ladder stages; mono voices 13 and 14 have bitcrusher/filter stages without reverb.

UI value vs audio value​

The matrix usually shows 0–32 (or enums as text). Mapping functions convert those into Hz, resonance, wet/dry, bit depth, etc. When adding a parameter:

  1. Extend the settings array / FilterType or related enum if needed.
  2. Teach setFilters / setParams the mapping.
  3. Add a slider definition for filter UI (SliderDefEntry / name index tables).
  4. Keep display enums in sync with enumNames pointers.

Sample page 1 — TIME​

On sample channels, filter UI page 1 includes TIME (ARR_STRETCH): independent WSOLA time-stretch, separate from OCTV/DTNE pitch. Default 11 = off. Implementation and player wiring are covered under Samples.

Fast filter encoder​

During play, encoder #3 can adjust a per-channel “default fast filter” target (defaultFastFilter, setDefaultFastFilterValue) without entering full filter mode — useful when tracing runtime parameter paths.