// Listing 5.17 Sonifying the factorial() function SinOsc s => dac; //(1) SinOsc so you can hear factorial // our recursive factorial function fun int factorial(int x) // (2) factorial function definition { sonify(x); // (3) Call the sonify function within factorial if (x <=1) return 1; else return (x*factorial(x-1)); } // a function to sonify numbers fun void sonify(int note) { // (4) Definition of the sonify function // offset above middle C Std.mtof(60+(0.5*note)) => s.freq; // (5) Sets frequency as function of note 1.0 => s.gain; // (6) Turns on Osc 300 :: ms => now; 0.0 => s.gain; 50 :: ms => now; } // try it out! sonify(factorial(2)); second => now; sonify(factorial(3)); second => now; sonify(factorial(4)); second => now; sonify(factorial(5)); second => now;