From 2a3fdb1d38eee614ec81d526d8ac8af8255e980a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=27=C3=A9lectron=20rare?= <108685187+electron-rare@users.noreply.github.com> Date: Fri, 26 Jun 2026 10:05:00 +0200 Subject: [PATCH] feat(data-only): global filter cutoff width drive --- sound_algo/data_only/engine.scd | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/sound_algo/data_only/engine.scd b/sound_algo/data_only/engine.scd index 6d0d682..41480ff 100644 --- a/sound_algo/data_only/engine.scd +++ b/sound_algo/data_only/engine.scd @@ -21,6 +21,7 @@ // -- Reset Synths d'une eventuelle relance ------------------------- ~doRev !? { ~doRev.free }; +~doFilter !? { ~doFilter.free }; ~doMaster !? { ~doMaster.free }; ~doMasterGroup !? { ~doMasterGroup.free }; @@ -37,6 +38,19 @@ s.waitForBoot { Out.ar(out, dry + (wet * mix)); }).add; + SynthDef(\do_master_filter, { |out=0, cutoff=20000, width=1.0, drive=1.0| + var sig, mid, side; // all vars first (sclang rule) + sig = In.ar(out, 2); + sig = RLPF.ar(sig, cutoff.clip(80, 20000).lag(0.08), 0.7); + sig = (sig * drive.clip(1, 4).lag(0.05)).tanh; + // stereo width via mid/side + mid = (sig[0] + sig[1]) * 0.5; + side = (sig[0] - sig[1]) * 0.5 * width.clip(0, 1).lag(0.08); + sig = [mid + side, mid - side]; + sig = LeakDC.ar(sig); + ReplaceOut.ar(out, sig); + }).add; + SynthDef(\do_master, { |out=0, gain=1.0, ceil=0.95| var sig = In.ar(out, 2); // Compression douce sur le bus master @@ -55,6 +69,7 @@ s.waitForBoot { // -- Lance le rack FX -- ~doRev = Synth.tail(~doMasterGroup, \do_reverb, [\in, ~doReverbBus, \out, 0, \mix, 0.4]); + ~doFilter = Synth.tail(~doMasterGroup, \do_master_filter, [\out, 0]); ~doMaster = Synth.tail(~doMasterGroup, \do_master, [\out, 0, \gain, 1.0]);