Faust DSP sources, compiled WASM + JSON descriptors, AudioWorklet processors, and EOCModule subclasses for all three effects. - meml-4b4: 4-band parametric EQ (fi.low_shelf, fi.peak_eq × 2, fi.high_shelf) 10 params: freq/gain per band, Q for the two mid bell bands - meml-cpe: stereo feed-forward compressor (co.compressor_mono × 2) 7 params: threshold, ratio, attack, release, knee, makeup, mix (parallel) - meml-wwc: zita reverb (re.zita_rev1_stereo) with pre-delay and M/S width 8 active params + mod_rate placeholder (zita internal mod not yet exposed) All three DSPs compile cleanly under Faust 2.83.1. moduleFactory in eoc-chain-ui.js now returns real instances for eq/compressor/reverb.
38 lines
1.7 KiB
Text
38 lines
1.7 KiB
Text
// eoc-eq.dsp — 4-band parametric EQ for MEMLNaut EOC chain
|
||
//
|
||
// Band 1: Low Shelf (default 80 Hz, range 20–500)
|
||
// Band 2: Low-Mid bell (default 400 Hz, range 100–2000)
|
||
// Band 3: High-Mid bell (default 2500 Hz, range 500–8000)
|
||
// Band 4: High Shelf (default 8000 Hz, range 2000–20000)
|
||
//
|
||
// Compile:
|
||
// faust -lang wasm -cn eoc_eq -e eoc-eq.dsp -o eoc-eq.wasm -json
|
||
|
||
import("stdfaust.lib");
|
||
|
||
// Band 1 — Low Shelf
|
||
freq1 = hslider("Band 1 (Low Shelf)/freq1[unit:Hz]", 80, 20, 500, 0.1);
|
||
gain1 = hslider("Band 1 (Low Shelf)/gain1[unit:dB]", 0, -12, 12, 0.1);
|
||
q1 = hslider("Band 1 (Low Shelf)/q1", 1.0, 0.1, 10.0, 0.01);
|
||
|
||
// Band 2 — Low-Mid bell
|
||
freq2 = hslider("Band 2 (Low-Mid)/freq2[unit:Hz]", 400, 100, 2000, 1.0);
|
||
gain2 = hslider("Band 2 (Low-Mid)/gain2[unit:dB]", 0, -12, 12, 0.1);
|
||
q2 = hslider("Band 2 (Low-Mid)/q2", 1.0, 0.1, 10.0, 0.01);
|
||
|
||
// Band 3 — High-Mid bell
|
||
freq3 = hslider("Band 3 (High-Mid)/freq3[unit:Hz]", 2500, 500, 8000, 1.0);
|
||
gain3 = hslider("Band 3 (High-Mid)/gain3[unit:dB]", 0, -12, 12, 0.1);
|
||
q3 = hslider("Band 3 (High-Mid)/q3", 1.0, 0.1, 10.0, 0.01);
|
||
|
||
// Band 4 — High Shelf
|
||
freq4 = hslider("Band 4 (High Shelf)/freq4[unit:Hz]", 8000, 2000, 20000, 10.0);
|
||
gain4 = hslider("Band 4 (High Shelf)/gain4[unit:dB]", 0, -12, 12, 0.1);
|
||
q4 = hslider("Band 4 (High Shelf)/q4", 1.0, 0.1, 10.0, 0.01);
|
||
|
||
eqChain = fi.low_shelf(gain1, freq1) :
|
||
fi.peak_eq(gain2, freq2, q2) :
|
||
fi.peak_eq(gain3, freq3, q3) :
|
||
fi.high_shelf(gain4, freq4);
|
||
|
||
process = eqChain, eqChain;
|