ChucK
the ChucK Operator | |
Paradigm | Multi-paradigm |
---|---|
Appeared in | 2003 |
Designed by | Ge Wang and Perry R. Cook |
Typing discipline | strong, static |
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. Unsourced material may be challenged and removed. (May 2008) |
This section may contain original research. Please improve it by verifying the claims made and adding references. Statements consisting only of original research may be removed. More details may be available on the talk page. (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.
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
- Open Sound 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++)
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
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; }
See also
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.
External links
- ChucK homepage
If you like SEOmastering Site, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...
- Pages with broken file links
- Articles needing additional references from May 2008
- Articles with invalid date parameter in template
- All articles needing additional references
- Articles that may contain original research from May 2008
- All articles that may contain original research
- Audio programming languages
- Free audio software
- Music software
- Concurrent programming languages
- Curly bracket programming languages
- Electronic music
- Software synthesizers
- Cross-platform software