What the Chuck: a debugging mode where Chuck dumps pretty much everything it's doing into a report. Show all the ugens along with their parameters and their waveforms. Show all the points where I've advanced the clock.
Whoa. You have just (more or less) described the ideal Audicle. You are totally right, this would be very cool.
Eh, random programming stuff: switch statements, exceptions, modules and imports. Oh, and since you're adding arrays, can you add a dictionary class?
switch statements - good idea. (break, continue, switch coming soon) exceptions - this is going to be in 2 major releases or so? modules/imports - already in ChucK but completely undocumented. ugen_* and ulib_* are examples of modules. They can be compiled into .ckx files and dynamically linked. Right now, they are statically linked. All it takes is different compiler flags (-bundle on OS X) and a expression ( "foo.ckx" => (:foo:); ) to load them at runtime. We will post documentation about this soon. If you are interested in doing this in the meantime, please let us know. dictionary - sure - probably as an associative array (foo["bar"])?
I tried to write a function that took any ugen as a parameter, but ugen is not a type so I had to write the function for a specific ugen. I would like to write generic functions that took any ugen as a parameter.
Objects in ChucK should properly address this issue.
Can you embed musical notation in Chuck source code?
If you mean as part of the syntax, then not really. We will be soon to able to create, (with the aid of objects and the timing mechanism) create notation constructs that are appropriate (and hopefully easy to manipulate) for the tasks at hand. Inductive durations would be helpful, especially if we can formalize them in a dynamic way (as discussed a few posts previous). However, since musical notation can vary greatly depending on the music/sound, it seems that it's better left to user-defined routines, objects, and semantics. (ChucK will do it's best to make the underlying timing/concurrency easy to access and manipulate). What do you think? These are really good suggestions - let's keep going. Best, Ge!