Hi Dan,
What I would like to be able to have these sounds be conventional instrument sounds (Bass, Drums, Guitar, Trumpet, Piano, etc). Is there a way to achieve this through ChucK, or do I need to use a software synth like fluid-synth? I also want to be able to code, execute, and modify this live.
There are several ways to achieving this in ChucK (and in SuperCollider too). To get more "conventional" instrument sounds: 1. Build them or control an existing STK model. Most of them are in ChucK: http://chuck.cs.princeton.edu/doc/program/ugen.html (also see samples in examples/stk/ in the distribution) There is a sizable update to enhance ChucK's interface for STK unit generators, coming soon in 1.2.0.5. 2. Especially for Drums and Piano, it might make sense to load existing samples via sndbuf. It may also be beneficial to write a small class for managing voices. 3. We have been planning to add a fluidsynth unit generator into ChucK, with which one can load sound fonts. This isn't implemented, but we hope to do it in the next few weeks. --- As for figuring out which language to use (ChucK / SuperCollider / other), that of course depends on your needs and preferences. Here are some high-level differences, at least between ChucK and SuperCollider. SuperCollider has been in development much longer (~10 years) than ChucK, and is much more mature in terms of class library functions, number of unit generators, and SC Server is super optimized. The learning curve for SuperCollider can be pretty steep. The language is implicitly-typed. ChucK, by comparison, is younger, much less optimized, and has less pre-made objects and unit generators. However, the language is designed such that many functionalities can be directly implemented in the language. ChucK is probably easier to learn, especially if you are coming from a C++/Java, or in your case, Perl background. The language is strongly-typed. ChucK espouses a pretty different way of thinking and controlling sound synthesis from other computer music languages in that it gives you arbitrary and concurrent control over time. For example, it directly allows one to specify time-domain operation/algorithm, at any granularity and in parallel. If you like, you might give both SuperCollider and ChucK a try. They both have many different (and similar) things to offer. I hope this helps. Best, Ge!