|
|
|
|
@ -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;
|
|
|
|
|
)
|
|
|
|
|
|