// Listing 5.18 Recursive drum roll using only an Impulse UGen
Impulse imp => dac; // (1) Impulse (click) generator to dac.
fun int impRoll(int index) { // (2) impRoll function definition.
if (index >=1)
{
1.0 => imp.next;
index::ms => now; // (3) Duration is the recursion variable.
return impRoll(index-1); // (4) Recursive call from impRoll to impRoll.
}
else {
return 0;
}
}
impRoll(20); // (5) Tests all with different starting durations.
second => now;
impRoll(40);
second => now;
impRoll(60);
second => now;