// Uses shreds & functions to make simple drum machine // Miniaudicle path must be set so "data" directory is a subdirectory of path SndBuf kick => dac; SndBuf hat => dac; "data/kick.wav" => kick.read; "data/hihat.wav" => hat.read; .5::second => dur quarter; //NOT preferred way: spork a new kick & hat every measure while (true) { spork ~playKickMeasure(); spork ~playHatMeasure(); 4 * quarter => now; //repeat every 4 quarter notes } fun void playKickMeasure() { playKick(1::quarter); 2.5::quarter => now; playKick(.5::quarter); } fun void playHatMeasure() { playHat(.5::quarter); .5::quarter => now; playHat(.5::quarter); playHat(.5::quarter); playHat(.5::quarter); playHat(.5::quarter); .5::quarter => now; playHat(.5::quarter); } fun void playKick(dur howlong) { 0 => kick.pos; howlong => now; } fun void playHat(dur howlong) { 0 => hat.pos; howlong => now; }