OTT Module — Multiband Upward/Downward Compressor

Multi-band compressor inspired by Xfer Records OTT. Splits the signal into low (≤250 Hz), mid (250–4 kHz), and high (≥4 kHz) bands using Biquad filters, then applies independent upward + downward compression to each band.

Signal Flow

input → split into 3 bands (LPF 250Hz / BP 1kHz peaking / HPF 4kHz)
  ├→ low band:  downComp + upComp × upGain + dry → sum × 1/3
  ├→ mid band:  downComp + upComp × upGain + dry → sum × 1/3
  └→ high band: downComp + upComp × upGain + dry → sum × 1/3
  → wetSum × depth → output
  └──────────────────────────────────→ dry × (1 − depth) → output

Each band's down compressor uses threshold and ratio from the Down param, while the up compressor has a fixed −60 dB threshold / 10:1 ratio with variable makeup gain from the Up param.

Parameters

Param Range Default Description
ottDepth 0–1 0 Wet/dry blend
ottDown 0–1 0.7 Downward compression amount (threshold −20 to −50 dB, ratio 1–10:1)
ottUp 0–1 0.8 Upward compression makeup gain (0–+6 dB)
ottAttack 1–50 ms 3 ms Compressor attack time
ottRelease 10–500 ms 80 ms Compressor release time

Exports

Export Signature Purpose
paramDefs UI param definitions (5 params)
build (ctx, params) Create OTT chain, returns { input, output, nodes }
update (nodes, params) Update all band compressor params

Integration

Wired into engine chains via the backward loop as a processor module type. All six engines include OTT as the last processor before the master limiter.

Files

File Purpose
modules/ott.js Module implementation (136 lines)
All engine modules arrays Included in every engine's processor chain

See Also