ChucK: A Concurrent, On-the-fly, Audio Programming Language
Ge Wang, Perry R. Cook · 2003
ChucK is a new audio programming language for real-time synthesis, composition, and performance, which runs on commodity operating systems. ChucK natively supports concurrency, multiple, simultaneous, dynamic control rates, and the ability to add, remove, and modify code, on-the-fly, while the program is running, without stopping or restarting. It offers composers and performers a powerful and flexible programming tool for building and experimenting with complex audio synthesis programs, and real-time interactive control. 1. Ideas in ChucK In this paper we present four key ideas that form the foundation of ChucK. The goal is to design a natural audio programming language (1) to concurrently and accurately represent complex audio synthesis, (2) to enable fine-grain, flexible control over time, (3) to provide the capability to operate on multiple, dynamic and simultaneous control rates, and (4) to make possible an on-the-fly style of programming. ChucK runs on commodity operating systems (Linux, Windows, Solaris, MacOS). Four major ideas form the basis of ChucK. • A unifying, massively overloaded operator. • A precise timing model that is capable of true concurrency and arbitrarily fine granularity. The language semantic supports multiple, simultaneous, and dynamic control rates, and naturally amortizes operations over time. • Native language support of arbitrarily many input/output sources, MIDI, network, serial, USB, graphics, and any input/output device you can connect to the computer. • On-the-fly programming enables dynamically modifiable programs for performance and experimentation. We present ChucK with respect to these four major facets. We provide some informal 'rules ' of ChucK, each of which embodies some key aspect of the programming language. In Section 2, we look in detail at the ChucK operator. In Section 3, we present the ChucK timing model, introduce the concept of