You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
2.4 KiB
Plaintext
117 lines
2.4 KiB
Plaintext
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(2, b, 1, loop: 0) * 0.3
|
|
}.play;
|
|
)
|
|
|
|
(
|
|
~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|
|
|
|
|
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;
|
|
)
|
|
|
|
|
|
|
|
|
|
(
|
|
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;
|
|
)
|