ChucK: a programming language for on-the-fly, real-time audio synthesis and multimedia

In this paper, we describe ChucK - a programming language and programming model for writing precisely timed, concurrent audio synthesis and multimedia programs. Precise concurrent audio programming has been an unsolved (and ill-defined) problem. ChucK provides a concurrent programming model that solves this problem and significantly enhances designing, developing, and reasoning about programs with complex audio timing. ChucK employs a novel <i>data-driven</i> timing mechanism and a related <i>time-based synchronization</i> model, both implemented in a virtual machine. We show how these features enable precise, concurrent audio programming and provide a high degree of programmability in writing real-time audio and multimedia programs. As an extension, programmers can use this model to write code <i>on-the-fly</i> -- while the program is running. These features provide a powerful programming tool for building and experimenting with complex audio synthesis and multimedia programs.