Tom, Thanks for checking out the tutorial and for excellent feedback. More below: On Mon, 10 Apr 2006, Tom Lieber wrote:
On 4/10/06, Graham Coleman
wrote: Also, the tutorial that I was working on is in an almost-adequate state. I'd appreciate any suggestions on content, presentation, more reference to introductory materiel, etc:
I've worked through it through 1.4.A, and two things have come up:
1) I wasn't sure how to use the scale.ck file, but after messing around (and checking the language spec for something like 'include') I tried "chuck scale tut01" and that got me going.
This is a good point, I added some execution notes to the tutorial. As I'm pimping audicle style programming I should explain the basic functions more. To confirm, right now chuck doesn't have something like a classpath or include (and only the first defined class in a file is public), so you have to send all of your source files to the VM separately.
2) The following code sounds weird when played, like it's missing a note somewhere near the end:
Scale sc; // The provider of scales StifKarp inst => dac; [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] @=> int mel[]; for(0 => int i; ; i++){ std.mtof ( 12*4 + sc.scale ( mel[i % mel.cap ()], sc.maj ) ) => inst.freq; inst.noteOn(0.5); 300::ms => now; } I executed this and I see what you mean, it plays two octaves, the top note, and what seems like an extra second. But I think that's the correct behavior. In the major scale, there are 7 non-repeated diatonic scale tones: first octave, second octave, 1st+2nd [0,1,2,3,4,5,6] , [7,8,9,10,11,12,13], [14,15]
3) In the second to last code example there is "fun int arp(){}" with a return statement inside; I think it's meant to be "fun int arp".
Absolutely- fixed. Thanks for finding this.
4) What is the variable b in "arp( b/2, 7, [0,2,4] ) => int a;"? Is it supposed to be a call to b()?
Sometimes I store it in a local variable. One of my code tics. Like: tg.m(i) => int m; //measure indicator Usually I do the same thing with b, calling tg.b(i) inline would work (or any other custom timing scheme). Thanks much, Graham