ChucK

From Wikipedia, the free encyclopedia

Jump to: navigation, search
ChucK
the ChucK Operator
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/

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

[edit] Current limitations

The ChucK programming language lacks some features that are common in programming languages.

Such features include:

[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

Personal tools
Languages