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.

107 lines
3.4 KiB
Plaintext

(
{
var sound, warped, degraded, flutter, hiss;
// Load your WAV file
sound = PlayBuf.ar(1, Buffer.read(s, "/Users/lcoogan/snd/releases/desolation-mountain/mono.wav"), loop: 0);
// Wow & flutter (pitch modulation)
flutter = SinOsc.kr(0.2).range(0.98, 1.02) + LFNoise1.kr(0.5).range(0.99, 1.01);
// flutter = SinOsc.kr(0.2).range(0.4, 0.6) + LFNoise1.kr(0.5).range(-0.05, 0.05);
warped = Warp1.ar(1, Buffer.readChannel(s, "/Users/lcoogan/snd/releases/desolation-mountain/mono.wav", channels:[0]), SinOsc.ar(0), 1, 0.2);
// Add tape-style hiss
hiss = WhiteNoise.ar(0.01);
// Filter for muffling
warped = LPF.ar(warped, 6000); // Adjust to taste
// Bit reduction
warped = Decimator.ar(warped, rate: 44100, bits: 8);
// Combine and output
(warped + hiss) * 0.5;
}.play;
)
Buffer.read(s, "/Users/lcoogan/snd/releases/desolation-mountain/mono.wav");
// Load buffer once
~buf = Buffer.readChannel(s, "/Users/lcoogan/snd/releases/desolation-mountain/mono.wav", channels:[0]);
~buf = Buffer.read(s, "/Users/lcoogan/snd/releases/desolation-mountain/02 - crawling and quietly seething was the figure of the trees.wav");
// Then:
(
{
var rate, sig, hiss;
// Create pitch flutter by modulating playback rate
rate = PinkNoise.ar(3).range(0.4, 0.42) + PinkNoise.kr(0.2).range(0.4, 0.42);
// Normal playback with flutter
sig = PlayBuf.ar(1, ~buf, rate, doneAction: 2); // doneAction: 2 frees the synth when finishede
// Add hiss
// hiss = BrownNoise.ar(0.01);
// Filter + degrade
// sound = LPF.ar(sound, 100000);
// sig = Decimator.ar(sig, rate: 44100, bits: 8);
// sig = PitchShift.ar(sig, windowSize:0.2, pitchRatio:1.0, pitchDispersion:0, timeDispersion:0.8, mul:1.0, add:0.0)[;
sig = Fold.ar(sig, -20, 20); // EMF: wavefolding only happens if the input signal amplitude exceeds the bounds provided. osc has a pretty normal range and won't ever exceed ±20. You can see in the previous line (LFDNoise3) I'm only amplifying it by a maximum factor of 1.5. It's actually small boundary values with Fold that cause audible results (change to the folding min/max to -0.1, +0.1 and you'll notice the sound changes significantly)
sig = Splay.ar(sig, spread: 10); // EMF: spread caps out at 1, larger values don't do anything extra
sig = sig.tanh * \amp.ir(0.25);
sig = sig + CombL.ar(sig, maxdelaytime:0.2, delaytime:0.2, decaytime: 1.0, mul: 0.3) * 0.4;
sig!2 * 4;
}.play;
)
(
{
var rate, sig, hiss, wowFlutter, dirt, stereo, folded, degraded, roomy;
// Wow & Flutter via modulated rate
wowFlutter = LFNoise1.kr(0.2).range(0.97, 1.03) + LFNoise2.kr(0.1).range(0.98, 1.02);
// Use PlayBuf for natural file playback with flutter
rate = wowFlutter;
sig = PlayBuf.ar(1, ~buf, rate, doneAction: 2);
// Tape hiss / noise floor
hiss = BrownNoise.ar(0.005);
// Bitcrushing and sample rate crunch (optional!)
sig = Decimator.ar(sig, rate: 8000, bits: 6); // go lo-fi
// Saturation and nonlinearities
folded = Fold.ar(sig, -0.1, 0.1); // tight fold = audible grit
dirt = (folded * 5).tanh;
// Slight stereo spread
stereo = Splay.ar(dirt + hiss, spread: 0.7);
// Subtle comb echo / fake reverb tail
roomy = stereo + CombL.ar(stereo, 0.3, 0.2, 2.5, 0.2);
// Optional: small dropouts
roomy = roomy * LFNoise2.kr(0.5).range(0.7, 1.0);
// Final output level
roomy * \amp.ir(0.3);
}.play;
)