0021 — Time-based FX are send/return channels on the existing summing buses; delay + reverb are native

Status: Accepted (designed; native delay/reverb + FX-bus role in progress) Date: 2026-07-15

Context

Professional desks (Roland M-5000, Midas PRO/M32/X32, SSL Live) apply time-based FX — reverb, delay — as send/return, not per-channel inserts: an FX rack of engines, each fed from an FX-send bus and returning wet-only on an FX-return channel in the mix, so many sources share one reverb. openmixer must feel the same. A first draft proposed insert-only native FX and invented a "native aux-bus summing" prerequisite — both wrong: openmixer already sums aux/group/matrix/mix-minus through one common summing-bus + sends-on-fader primitive (bus-node, ADR 0002), and already has fxSend/fxReturn channel kinds.

Decision

  • An FX channel is an existing fxSend summing bus + an fxReturn strip whose insert is the FX engine, defaulted wet-only; the per-channel send-to-FX is the existing setSend. No new summing infrastructure. Per-channel insert of the same engine stays available for mono/in-line use.
  • Delay and reverb are NATIVE DSP kernels (mix_delay.h, mix_reverb.h) in mixer.c, following the existing native EQ/gate/comp path — never an LV2 dependency for the core FX. Reverb ships BOTH algorithms (Freeverb room + Dattorro plate), operator-selectable.
  • A console-wide BPM + tap-tempo (a TAP button; pure tap-interval averaging with outlier rejection, gap reset, 30–300 clamp) drives tempo-synced delay time.
  • Pitch, convolution and other latency-heavy FX stay LV2 (studio tier, ADR 0020). An FX bus's processor can be a native kernel OR a hosted LV2 — the FX rack hosts both identically.

Consequences

  • FX behave like a pro desk (shared send/return engines with return strips).
  • The console builds a full live mix — EQ, gate, comp, delay, reverb — on native DSP alone, which is why the LV2 tiers (ADR 0020) are Recommends, not Requires.
  • No engine-summing work was needed; the feature is two DSP kernels + tap-tempo + an FX bus role on infrastructure that already existed (a correction to the initial over-scoped design).