10 => int disks;
200::ms => dur wait => dur the_wait;
0 => int STEPS;
Gain g => Pan2 pan;
pan.left => NRev r1 => dac.left;
pan.right => NRev r2 => dac.right;
.5 => g.gain;
.1 => r1.mix => r2.mix;
SndBuf pegs[4];
me.dir() + "/data/snare-chili.wav" => pegs[1].read;
me.dir() + "/data/kick.wav" => pegs[2].read;
me.dir() + "/data/snare-hop.wav" => pegs[3].read;
for( 1 => int i; i < pegs.size(); i++ )
pegs[i] => g;
fun void hanoi( int num, int src, int dest, int other )
{
if( num > 1 ) hanoi( num - 1, src, other, dest );
STEPS++;
<<< "step", STEPS, " | move disk from peg", src, " -> ", "peg", dest >>>;
0 => pegs[dest].pos;
Math.random2f( .2, .9 ) => pegs[dest].gain;
.8 * (dest - 2) => pan.pan;
the_wait => now;
if( num > 1 ) hanoi( num - 1, other, dest, src );
}
hanoi( disks, 1, 3, 2 );
<<<"done!">>>;
2::second => now;