
Sorry if I underestimated what you were aiming at. hehe, my aim is to understand chuck...:)
so here comes another simplified situation: i have a little function that's, supposed to play a Sine tone. as function arguments i pass the freq and the duration to play. now i want to call this function *regularly*, let's say every second. depending on the note duration, i want to have overlaying notes. one could say i have a "global" time, scheduling an action every second and i have a "local" time, the duration of the note. i would like to find out how to handle this situation generally in chuck. here is an example i have come up with, sporking the function, which works nice. just would like to know if that's the way to go, or wether there are simpler/better ways to do it. thanks for any comments. volker. // my lame example: Gain g => dac; fun void playNote(float freq, dur duration) { SinOsc s => g; s.freq(freq); Std.rand2f(0.1, 0.8) => s.gain; duration=>now; s =< g; } while( true ) { now => time now1; spork ~ playNote(Std.rand2f(300,600), Std.rand2f(2, 8)::second); //playNote(Std.rand2f(100,1000), Std.rand2f(2, 8)); //calling the function without sporking it won't work... 1::second=>now; <<<"time interval",(now-now1)/ms>>>; }