// some pedagogical experiments with playbuf // lp // 5/99 // remember to put your own soundfile in! // first, throw a multitap delay on the signal ( var filename, sound, signal; filename = ":Sounds:short_deborah"; sound = SoundFile.new; if (sound.read(filename), { signal = sound.data.at(0); Synth.play( { MultiTap.ar(`[0.05, 0.2, 0.3, 0.8], `[0.1, 0.2, 0.4, 0.8], PlayBuf.ar(signal)) } ); }, { (filename ++ " not found.\n").post }); ) \ now mix the signal in with itself, two different multitaps ( var filename, sound, signal; filename = ":Sounds:short_deborah"; sound = SoundFile.new; if (sound.read(filename), { signal = sound.data.at(0); Synth.play( { s = MultiTap.ar(`[0.05, 0.2, 0.3, 0.8], `[0.1, 0.2, 0.4, 0.8], PlayBuf.ar(signal)); t = MultiTap.ar(`[1.05, 1.1, 1.3, 1.8], `[0.05, 0.1, 0.2, 0.25], PlayBuf.ar(signal)); Mix.ar([s,t]) } ); }, { (filename ++ " not found.\n").post }); ) \ now amplitude modulate one, sweep reson the other ( var filename, sound, signal; filename = ":Sounds:short_deborah"; sound = SoundFile.new; if (sound.read(filename), { signal = sound.data.at(0); Synth.play( { s = MultiTap.ar(`[0.05, 0.2, 0.3, 0.8], `[0.1, 0.2, 0.4, 0.8], PlayBuf.ar(signal)); s = s * abs(LFPulse.ar(0.5, 1.0.rand, 0.8)); t = MultiTap.ar(`[1.05, 1.1, 1.3, 1.8], `[0.05, 0.1, 0.2, 0.25], PlayBuf.ar(signal)); t = RLPF.ar(t, abs(SinOsc.kr(0.01, 0, 900, 100)), 0.1); Mix.ar([s,t]) } ); }, { (filename ++ " not found.\n").post }); ) \\ now add some randomness to the amplitude modulation frequency, and a gated third instance of the file, pan \\ them.. ( var filename, sound, signal; filename = ":Sounds:short_deborah"; sound = SoundFile.new; if (sound.read(filename), { signal = sound.data.at(0); Synth.play( { s = MultiTap.ar(`[0.05, 0.2, 0.3, 0.8], `[0.1, 0.2, 0.4, 0.8], PlayBuf.ar(signal)); s = s * abs(LFPulse.ar(LFNoise0.kr(1), 1.0.rand, 0.8)); t = MultiTap.ar(`[1.05, 1.1, 1.3, 1.8], `[0.05, 0.1, 0.2, 0.25], PlayBuf.ar(signal)); t = RLPF.ar(t, abs(SinOsc.kr(0.01, 0, 900, 100)), 0.1); q = PlayBuf.ar(signal) ; q = Gate.ar(q, LFPulse.ar(SinOsc.ar(0.02, 0, 5, 0.1), 0.5, 0.8)); q = Pan2.ar(q, SinOsc.ar(0.5, 0, 0.5)); r = Pan2.ar(Mix.ar([s,t]), 0, 0.5); Mix.ar( [r], [q]) } ); }, { (filename ++ " not found.\n").post }); ) \\ now add some randomness to the amplitude modulation frequency, and a gated third instance of the file, \\ put a little quiet amplitude following chord on them, pitchshift one of them with modulating dispersion, etc. ( var filename, sound, signal; filename = ":Sounds:short_deborah"; sound = SoundFile.new; if (sound.read(filename), { signal = sound.data.at(0); Synth.play( { s = MultiTap.ar(`[0.05, 0.2, 0.3, 0.8], `[0.1, 0.2, 0.4, 0.8], PlayBuf.ar(signal)); s = s * abs(LFPulse.ar(LFNoise0.kr(1), 1.0.rand, 0.8)); s = PitchShift.ar(s, 0.3, 1.7, abs(SinOsc.kr(0.5, 0, 0.2), 0.01, 0.8)); t = MultiTap.ar(`[1.05, 1.1, 1.3, 1.8], `[0.05, 0.1, 0.2, 0.25], PlayBuf.ar(signal)); t = RLPF.ar(t, abs(SinOsc.kr(0.01, 0, 900, 100)), 0.1); q = PlayBuf.ar(signal) ; q = Gate.ar(q, LFPulse.ar(SinOsc.ar(0.02, 0, 5, 0.1), 0.5, 0.8)); v = SinOsc.ar([100.rand+ 100, 100.rand + 200, 100.rand + 300, 100.rand + 400, 100.rand + 500], 0, 1.0.rand + 0.5); v = v * Amplitude.kr(q, 0.3, 0.3, 0.5); Mix.ar([s, t, q, v]) } ); }, { (filename ++ " not found.\n").post }); )