ChucK
From Encoresoup - The Ultimate Guide to Free/Open Source Software
|
| ChucK | |
|---|---|
| |
| Paradigm | Multi-paradigm |
| Appeared in | 2003 |
| Designed by | Ge Wang and Perry R. Cook |
| Typing discipline | strong, static / dynamic |
| OS | Cross-platform |
| License | GNU General Public License |
| Website | http://chuck.cs.princeton.edu/ |
| This article or section invokes the Wikipedia review template Original research. This is not relevant to Encoresoup. This template invocation should be removed. |
ChucK is a concurrent, strongly-timed audio programming language for real-time synthesis, composition, and performance, which runs on Mac OS X, Linux, and Microsoft Windows. It is designed to favor readability and flexibility for the programmer, over other considerations such as raw performance. It natively supports deterministic concurrency and multiple, simultaneous, dynamic control rates. Another key feature is the ability to add, remove, and modify code on the fly, while the program is running, without stopping or restarting. It has a highly precise timing/concurrency model, allowing for arbitrarily fine granularity. It offers composers and researchers a powerful and flexible programming tool for building and experimenting with complex audio synthesis programs, and real-time interactive control.
Distributed under the terms of the GNU General Public License, ChucK is free software.
Contents |
[edit] Language features
- precise (sample-synchronous) control over time (strongly-timed)
- syntax and semantics designed to promote readability and maintainability
- powerful and simple concurrent programming model
- the ChucK operator: => is overloaded on types and encourages a left-to-right syntax
- on-the-fly programming
- MIDI
- OpenSound Control
- strongly-typed
- Synthesis Toolkit unit generators
- dynamically compiled to ChucK virtual machine bytecode
- real-time audio synthesis
- unified timing mechanism (no imposed control-rate, can be completely and dynamically throttled by the programmer)
- comments (inline and multiline style similar to C++)
[edit] Current limitations
The ChucK programming language lacks some features that are common in programming languages.
Such features include:
- string operations (lacks many string functions)
- namespace resolution or include files
[edit] Code example
The following is a simple chuck program that generates sound and music:
// our signal graph (patch)
SinOsc s => JCRev r => dac;
// set gain
.2 => s.gain;
// set dry/wet mix
.1 => r.mix;
// an array of pitch classes (in half steps)
[ 0, 2, 4, 7, 9, 11 ] @=> int hi[];
// infinite time loop
while( true )
{
// choose a note, shift registers, convert to frequency
Std.mtof( 45 + Std.rand2(0,3) * 12 +
hi[Std.rand2(0,hi.cap()-1)] ) => s.freq;
// advance time by 120 ms
120::ms => now;
}
[edit] See also
[edit] References
- [1] Wang, G. and P. Cook. 2003. "ChucK: A concurrent, on-the-fly audio programming language." Proceedings of the International Computer Music Conference.
- [2] Wang, G. and P. Cook. 2004. "On-the-fly programming: Using code as an expressive musical instrument." In Proceedings of the International Conference on New Interfaces for Musical Expression.
- [3] Wang, G. and P. Cook. 2004. "The Audicle: A context-sensitive, on-the-fly audio programming environ/mentality." In Proceedings of the International Computer Music Conference.
- [4] Wang, G., A. Misra, A. Kapur, and P. Cook. 2005. " Yeah ChucK it! => Dynamic, controllable, interface mapping" In Proceedings of the International Conference on New Interfaces for Musical Expression.
- [5] Wang, G., P. Cook, and A. Misra. 2005. "Designing and implementing the ChucK programming language." In Proceedings of the International Computer Music Conference.
- [6] Wang, G., R. Fiebrink, and P. Cook. 2007. "Combining analysis and synthesis in the ChucK programming language." In Proceedings of the International Computer Music Conference.
[edit] External links
- ChucK homepage


![Stargate Mirror - Comb your hair in the Event Horizon of your very own Stargate! [ThinkGeek] Stargate Mirror - Comb your hair in the Event Horizon of your very own Stargate! [ThinkGeek]](http://www.ftjcfx.com/image-3067719-10356334?imgurl=http%3A//www.thinkgeek.com/images/products/front/stargate_mirror.jpg)
![Practical Django Projects [Amazon] Practical Django Projects [Amazon]](http://openx.eclecticdave.com/images/51BFdH6VWsL._SL160_.jpg)
![Micro Spy Remote [ThinkGeek] Micro Spy Remote [ThinkGeek]](http://www.ftjcfx.com/image-3067719-10356334?imgurl=http%3A//www.thinkgeek.com/images/products/front/ninja_remote_new.jpg)

