just to chime in here - i'm VERY new to programming. how do you create this kind of concurrency? if, say, you wanted to create two while loops, but wanted them to run "side-by-side", but looping at different speeds, how would you do it?for example:while (true){ do something; 100::ms => now;}andwhile (true) {do something else; 150::ms => now;}cheers> Date: Fri, 3 Aug 2007 05:53:57 +0900> From: electriclightheads@gmail.com> To: chuck-users@lists.cs.princeton.edu> Subject: Re: [chuck-users] can there be many ::ms in while?> > oh> maybe in the second way> am just looping the 1st while only?> > maybe it was a bit too early for me to ask things on the list> (only i can do is modifying the tut)> i thought> 100::ms => now;> was something like "100msec later do ..." or "every 100msec do ..."> but i happened to find that in () expression of while> > mmm> i'll go through a bit more ahead in the manual> yes> then i'll find Blit-UGen waiting for me?> > On 8/2/07, Martin Ahnelöv wrote:> > tor 2007-08-02 klockan 07:34 +0900 skrev 2g:> > > have just started coding on chuck> > > was looking for way to let s1 have 3 overtones> > > flying around him> > > i know it should be something other than rand2f to handle integers> > > but my q is about ::ms in while> > >> > > i wonder which one of these are the right way to use them> > > i thought the latter might be safe but it seems to give one never> > > changing long note> > > and maybe only one another is floating around> > > but none of them give me an error> > >> > >> > > style one:> > >> > > SinOsc s1 => PRCRev g => dac;> > > SinOsc s2 => g;> > > SinOsc s3 => g;> > > SinOsc s4 => g;> > > .25 => g.gain => g.mix;> > > while( true ) {> > > 500::ms => now;> > > Std.rand2f(30.0, 220.0) => s1.freq;> > > 170::ms => now;> > > s1.freq() * Std.rand2f(8.0, 16.0) / 8.0 => s2.freq;> > > 75::ms => now;> > > s2.freq() * Std.rand2f(16.0, 32.0) / 16.0 => s3.freq;> > > 111::ms => now;> > > s2.freq() * Std.rand2f(16.0, 32.0) / 16.0 => s4.freq;> > > }> > >> > >> > > style two:> > >> > > SinOsc s1 => PRCRev g => dac;> > > SinOsc s2 => g;> > > SinOsc s3 => g;> > > SinOsc s4 => g;> > > .25 => g.gain => g.mix;> > > while( true ) {> > > 200::ms => now;> > > Std.rand2f(30.0, 220.0) => s1.freq;> > > }> > > while( true ) {> > > 170::ms => now;> > > s1.freq() * Std.rand2f(8, 16) / 4.0 => s2.freq;> > > }> > > while( true ) {> > > 75::ms => now;> > > s2.freq() * Std.rand2f(16, 32) / 8.0 => s3.freq;> > > }> > > while( true ) {> > > 111::ms => now;> > > s2.freq() * Std.rand2f(16, 32) / 8.0 => s4.freq;> > > }> > >> >> > Okey, I'm gonna teach you something about while-loops. A while loop will> > do whatever is in the brackets behind the statements until the> > expression inside the parenthesis is false. When it is false, it> > continues to the next thing after the close bracket (in your case the> > next while-loop).> >> > illustrated with chuck-code:> >> > 1 => int i;> >> > while (i < 10) {> > <<<i>>>; //print i> > i + 1 => i;> > }> > <<<"done">>>;> >> > Notice how it prints the numbers 1 to 9, and finally "done"?> >> > Now, look at your second example. Does the expression never return> > false? No, because you have hard coded "true" inside it.> >> > So, your first one should work as you want it, and your second won't.> > (Yes, you can advance time how many times as you want in whatever> > code-context you want)> >> > By the way, have you checked out the Blit-UGen? I think that one might> > satisfy your needs.> >> >> > Hope that helps,> > Gasten> >> > _______________________________________________> > chuck-users mailing list> > chuck-users@lists.cs.princeton.edu> > https://lists.cs.princeton.edu/mailman/listinfo/chuck-users> >> > > -- > 2g> http://micro.ispretty.com> _______________________________________________> chuck-users mailing list> chuck-users@lists.cs.princeton.edu> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_________________________________________________________________
Try Live.com - your fast, personalised homepage with all the things you care about in one place.
http://www.live.com/?mkt=en-gb