ChucK
From Wikipedia, the free encyclopedia
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 needs additional citations for verification. Please help improve this article by adding reliable references (ideally, using inline citations). Unsourced material may be challenged and removed. (May 2008) |
This section may contain original research or unverified claims. Please improve the article by adding references. See the talk page for details. (May 2008) |
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