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.
45 lines
1.5 KiB
Plaintext
45 lines
1.5 KiB
Plaintext
~buf = Buffer.read(s, "/Users/lcoogan/snd/releases/desolation-mountain/02 - crawling and quietly seething was the figure of the trees.wav");
|
|
|
|
(
|
|
{
|
|
var rate, sig, wow, flutter, noise, dropout, echo, worn, warm, ghost, deckNoise;
|
|
|
|
// Load mono audio buffer first: (run once before)
|
|
// ~buf = Buffer.readChannel(s, "/Users/lcoogan/snd/releases/desolation-mountain/mono.wav", channels:[0]);
|
|
|
|
// --- Wow & flutter ---
|
|
wow = SinOsc.kr(0.3).range(0.99, 1.01); // slow cyclical wobblee
|
|
flutter = LFNoise1.kr(1).range(0.995, 1.005); // fast jitter
|
|
rate = wow * flutter;
|
|
|
|
// --- Play the buffer with pitch mod ---
|
|
sig = PlayBuf.ar(1, ~buf, rate, doneAction: 2);
|
|
|
|
// --- Simulate dropouts ---
|
|
dropout = LFNoise2.kr(0.4).range(0.6, 1.0);
|
|
sig = sig * dropout;
|
|
|
|
// --- Add tape hiss ---
|
|
noise = BrownNoise.ar(0.003);
|
|
|
|
// --- Print-through / ghosting (delayed echo of self) ---
|
|
ghost = DelayC.ar(sig, 0.6, 0.6) * 0.3;
|
|
|
|
// --- Slight combing / smearing (wow bleed) ---
|
|
echo = CombL.ar(sig, 0.2, 0.03, 2) * 0.2;
|
|
|
|
// --- Tape saturation ---
|
|
warm = ((sig + ghost + echo) * 2).tanh;
|
|
|
|
// --- Worn tape: Lowpass and bitcrush ---
|
|
worn = LPF.ar(warm, 4000);
|
|
// worn = Decimator.ar(worn, rate: 12000, bits: 10);
|
|
|
|
// --- Add subtle deck hum / mechanical loop? ---
|
|
deckNoise = SinOsc.ar(50, 0, 0.001); // tape motor hum
|
|
|
|
// --- Stereo + Final mix ---
|
|
Splay.ar(worn + noise + deckNoise, spread: 0.5) * 0.4;
|
|
}.play;
|
|
)
|