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
docs/synth/modules/clarity.md— dynamic mud/air reduction (sibling dynamics module)docs/synth/engine.md— module chain wiring inbuildLiveChain