//This code is based off of a CCRMA example by Ge Wang //Write to file dac => WvOut2 writer => blackhole; writer.wavFilename("/Users/catrian/Desktop/fan_filtered_opening.wav"); SndBuf buffy; "/Users/catrian/Desktop/" => string dataDir; "fan.wav" => string dataFile; // delay DelayL delay => dac; delay => Gain g => delay; // max 1::second => delay.max; // load dataDir + dataFile => buffy.read; // silence it 0 => buffy.gain; while( true ) { // play it! play( buffy, delay, .5, 60, .8, 8::second ); play( buffy, delay, .5, 55, .9, 8::second ); play( buffy, delay, .5, 57, .9, 8::second ); play( buffy, delay, .5, 52, .9, 8::second ); } fun void play( SndBuf buf, DelayL delay, float gain, float pitch, float attenuation, dur T ) { // connect buf => delay; // attenuation attenuation => g.gain; // freq pitch => Std.mtof => float freq; // sample rate second / samp => float SRATE; // delay in samples (SRATE / freq)::samp => delay.delay; // set the playhead 0 => buf.pos; // set the gain gain => buf.gain; // advance T => now; // disconnect buf =< delay; }