Posted by jj as Programming
ChucK re-factors the idea of a computer music language into three orthogonal basis components: unit generator connections that are data-flow only, globally consistent ”first-class” time control, and sample-synchronous concurrency. The syntax, semantic, and usage have been discussed in previous works. The focus and contributions of this paper are (1) to examine the philosophies and decisions in the language design (2) to describe ChucK’s implementation and runtime model, and (3) to outline potential applications enabled by this framework. We present an experiment in designing a computer music language ”from scratch” and show how things work. We hope these ideas may provides an interesting reference for future computer music systems.
If Human Computer Interaction (HCI) research strives to give people greater and better access to using the computer, then perhaps computer music language design aims to give programmers more natural representation of audio and musical concepts. Machines have advanced to a point where system design no longer depends on blazing performance, but can focus foremost on flexibility and how users can interact with the system.
On today’s machines, ChucK  is a real-time audio programming language that offers potentially worse performance than languages such as SuperCollider , Nyquist , Max/MSP , Pure Data , CSound , and other systems [5, 3]. But it still runs comfortably in real-time for many tasks and, more importantly, offers something unique: a fundamental and flexible programming model to manipulate time and parallelism.
ChucK is strongly-timed, concurrent, and embodies a do-it-yourself spirit. It combines the conciseness of high-level computer music languages with the transparency and programmability of low-level languages. It is readable even when programs become complex. This paper describes an experiment in designing a computer music language from scratch, and discusses its implementation, outline applications made possible by this model.
Download pdf Designing and Implementing the Chuck Programming Language