Clarity Module — Dynamic Mud & Air Reduction
Reduces low-mid mud (~350 Hz) and tames harshness (~4 kHz) using parallel
bandpass filters feeding independent compressors, mixed back with the dry
signal via clarityAmount.
Files
static/js/synth/modules/clarity.js
Signal Flow
input ──→ split ──→ dryGain ──┐
│ │
├──→ mudBp → mudComp → mudGain ──→ wetSum ──→ wetGain ──┐
│ │
└──→ airBp → airComp → airGain ──→ wetSum ──────────────┘
output ←── sum
When clarityAmount <= 0, the module is completely bypassed — returns input unchanged.
Parameters
| Param | Range | Default | Description |
|---|---|---|---|
clarityAmount |
0–1 | 0 | Wet/dry mix. 0 = off |
mudFreq |
200–800 Hz | 350 Hz | Centre frequency of the mud (low-mid) band |
mudQ |
0.5–5 | 2 | Bandwidth of the mud bandpass filter |
mudThresh |
–40–0 dB | –18 dB | Compressor threshold for mud band |
mudRatio |
1–10 | 3 | Compression ratio for mud band |
airFreq |
2000–8000 Hz | 4000 Hz | Centre frequency of the air (harshness) band |
airQ |
0.5–5 | 1 | Bandwidth of the air bandpass filter |
airThresh |
–40–0 dB | –15 dB | Compressor threshold for air band |
airRatio |
1–10 | 4 | Compression ratio for air band |
Exports
| Export | Signature | Purpose |
|---|---|---|
paramDefs |
— | Parameter definitions for UI generation |
build |
(ctx, params, input, dur) |
Create clarity chain or return input if bypassed |
update |
(nodes, params) |
Update wet/dry mix and compressor params |
Integration
Added to any engine's modules array as a processor type. The backward loop in
buildLiveChain wires it automatically between the previous processor and masterGain.
{ id: 'clarity', label: 'Clarity', colour: '#2ecc71', type: 'processor',
noSeqRandomise: true, noSectionLock: true,
params: clarityMod.paramDefs,
build: function (ctx, params, input, dur) { return clarityMod.build(ctx, params, input, dur); } }
Flags
noSeqRandomise: true— protected from sequencer randomisenoSectionLock: true— no lock icon in UI (mix-critical settings)- All params have
lockable: false— individual lock icons hidden