Alberto Alassio wrote:
I cannot understand how the while structure has to be used. I mean, I understood that while ( true ) means infinite loop and also that while ( n::second => now ) means an "n" second loop duration but...
If I just want to do a really stupid thing like a Sine at 220 Hz that sounds for 2 seconds and then stops for 2 seconds and then goes again. How could I do? I thought that it was necessary just to do something like this
SinOsc s => dac; .2 => s.gain; 220 => s.freq; while ( 2::second => now) 0 =>s.gain
but I know that it's not the right way, also because in this method I would have to rewrite this thing an infinite ( whiletrue ahahah) number of times to have what I'm looking for.
And I don't actually understand {} . How am I supposed to use these?
The curly brackets '{' and '}' encapsulate what you would like to loop over with the while construct: SinOsc s => dac; 220.0 => s.freq; while (true) { 0.2 => s.gain; 2::second => now; 0.0 => s.gain; 2::second => now; } Does that make sense? If you want to loop a certain number of times, you can use the for construct, e.g. SinOsc s => dac; 220.0 => s.freq; for (0 => int i; i < 10; i++) { 0.2 => s.gain; 2::second => now; 0.0 => s.gain; 2::second => now; } would loop 10 times. If you want to take this further, with LiCK you can put the part between the {}s into a functor class class Play extends Procedure { SinOsc s => dac; fun void run() { freq => s.freq; 0.2 => s.gain; 2::second => now; 0.0 => s.gain; } } and then use the Loops class to do the looping Play playA; 220.0 => playA.s.freq; Play playC; 130.81278 => playC.s.freq; spork ~ Loops.loop(playA, 2::second, 10).run(); spork ~ Loops.loop(playC, 1::second, 2::second, 10).run(); michael