b = Buffer.read(s, "/home/lcoogan/snd/demos/springverb.wav") ( { PlayBuf.ar(1, b!2, 1, loop: 1) * 0.3 }.play; ) ( SynthDef(\springverb, { |length = 1, fb = 0.8, sep = 0.012| var input = In.ar(0, 2); var output = input + Fb({ |feedback| var left, right, spring, magic; magic = LeakDC.ar(feedback * fb + input); magic = HPF.ar(magic, 400); magic = LPF.ar(magic, 5000); magic = magic.tanh; // Simulate spring reverb inside the feedback loop spring = CombL.ar(magic, 0.1, 0.03, 1.5); // short decay, boingy spring = AllpassL.ar(spring, 0.1, [0.022, 0.027], 1.5); magic = magic + spring * 0.4; // mix in some splash #left, right = magic; magic = [ DelayC.ar(left, 1, LFNoise2.ar(12).range(0, sep)), DelayC.ar(right, 1, LFNoise2.ar(12).range(sep, 0)) ]; }, length); ReplaceOut.ar(0, output); }).store; ) ( ~springverb = Synth(\springverb, [ \length, TempoClock.default.tempo * (3/8), \fb, 0.1, \sep, 0.0014 ], addAction: \addToTail); )