[chuck] wish list

Ge Wang gewang at CS.Princeton.EDU
Wed Sep 22 17:06:04 EDT 2004

> 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 
     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 
     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.


More information about the chuck mailing list