// Listing 4.9 Improving the while loop of your drum machine
// Drum Machine, version 2.0
// by block-rockin programmer, Dec 32, 1999
// SndBufs for kick (bass) and snare drums
SndBuf kick => Gain master => dac; // (1) Kick to master mixer Gain to dac.
SndBuf snare => master; // (2) Snare also to master mixer.
// load up some samples of those // (3) Loads your kick and snare drum sound files.
me.dir()+"/audio/kick_01.wav" => kick.read;
me.dir()+"/audio/snare_01.wav" => snare.read;
// declare a new tempo variable
0.15 :: second => dur tempo; // (4) Tempo duration is time between beats.
while (true)
{
for (0 => int beat; beat < 16; beat++) // (5) Loops over a "measure" of 16 beats.
{
// play kick drum on beat 0, 4, 8, and 12
if (beat==0 || beat==4 || beat==8 || beat==12) // (6) Plays kick only on specific beats.
{
0 => kick.pos;
}
// play snare drum on beat 4, 10, 13, and 14
if (beat==4 || beat==10 || beat==13 || beat==14) // (7) Plays snare only on other specific beats.
{
0 => snare.pos;
}
tempo => now;
}
}