I don’t seem to have mentioned ChucK here before, which is a serious oversight. ChucK takes a completely different approach to sound synthesis than any other language I’ve seen.
Possibly the most interesting feature of the language is the => (or “chuck”) operator, which translates pretty much to “take what’s on the left, convert it properly, and put it in what’s on the right”. So you have wonderfully transparent code like
// connect sine oscillator to D/A convertor (sound card) sinosc s => dac; // allow 2 seconds to pass 2::second => now;
The second constuction shows ChucK’s interesting approach to the passage of time. Real time actually doesn’t pass, from ChucK’s point of view, until you chuck a new interval into now. This example would play 2 seconds worth of the sine and then stop, because time would have stopped.
The tighter integration of time and sound works better for me in terms of thinking about musical process; I’ve always found the csound model of completely isolated score and orchestra to be a bit off-putting.
ChucK also supports on-the-fly programming and dead-simple concurrency. Say you have three different ChucK programs that emit a note every 23, 27, and 31 seconds. Just do
chuck 23.check 27.chuck 31.chuck
and ChucK handles all the scheduling. Sweet.
The language is evolving at a furious pace, with a small but very active user community. The ChucK wiki is located at http://wiki.cs.princeton.edu/index.php/ChucK.
0 Comments on “ChucK Wiki now up”
Leave a Comment