From f93e5027b1aeaf279d4e6e75c3890f00f5bf2d49 Mon Sep 17 00:00:00 2001 From: Leo Coogan Date: Mon, 14 Apr 2025 22:56:43 -0400 Subject: [PATCH] extended params --- effects/springverb.scd | 88 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 80 insertions(+), 8 deletions(-) diff --git a/effects/springverb.scd b/effects/springverb.scd index d03d2ae..eb7c073 100644 --- a/effects/springverb.scd +++ b/effects/springverb.scd @@ -1,13 +1,70 @@ b = Buffer.read(s, "/home/lcoogan/snd/demos/springverb.wav") +s.prepareForRecord; +s.record("~/snd/releases/desolation-mountain/springverb.wav"); + +( +s.waitForBoot { + s.record( + "~/snd/releases/desolation-mountain/springverb.wav", + 2 + ); +}; +) + +s.stopRecording; + ( { - PlayBuf.ar(1, b!2, 1, loop: 1) * 0.3 + PlayBuf.ar(2, b, 1, loop: 0) * 0.3 }.play; ) ( -SynthDef(\springverb, { |length = 1, fb = 0.8, sep = 0.012| +~echo = Synth(\springverb, [ + \length, TempoClock.default.tempo * (3/8), + \fb, 0.1, + \sep, 0.0014 +], addAction: \addToTail); +) + +( +~echo.free; +~springverb.free; +) + +( +~springverb = Synth(\springverb, [ + \decay, 1.8, + \boing, 0.025, + \mix, 0.5, + \tone, 3000, + \drive, 1.2 +], addAction: \addToTail); +) + +( +~springverb = Synth(\springverb, [ + \decay, 1.8, + \boing, 0.025, + \mix, 0.5, + \tone, 3000, + \drive, 1.2 +], addAction: \addToTail); + +( +~echo = Synth(\springverb, [ + \length, TempoClock.default.tempo * (3/8), + \fb, 0.1, + \sep, 0.0014 +], addAction: \addToTail); +) +) + + + +( +SynthDef(\echo, { |length = 1, fb = 0.8, sep = 0.012| var input = In.ar(0, 2); var output = input + Fb({ |feedback| @@ -33,12 +90,27 @@ SynthDef(\springverb, { |length = 1, fb = 0.8, sep = 0.012| }).store; ) + + + ( -~springverb = Synth(\springverb, [ - \length, TempoClock.default.tempo * (3/8), - \fb, 0.1, - \sep, 0.0014 -], addAction: \addToTail); -) +SynthDef(\springverb, { |inBus = 0, outBus = 0, decay = 1.2, boing = 0.03, mix = 0.4, tone = 5000, drive = 1.0| + var dry = In.ar(inBus, 2); + var verb, spring, wet; + + // Pre-emphasize and drive the input (mimics spring preamp) + spring = dry * drive; + spring = spring.tanh; + + // Simulate springy tail + spring = CombL.ar(spring, 0.1, boing, decay); + spring = AllpassL.ar(spring, 0.1, [0.025, 0.030], decay); + spring = LPF.ar(spring, tone); // darken the tail + spring = spring * mix; + // Mix dry and wet + verb = XFade2.ar(dry, spring, mix * 2 - 1); // Crossfade between dry and wet + Out.ar(outBus, verb); +}).store; +)