( { 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; )