Composing Music with Computers

Nyquist, developed by Roger Dannenberg at the Carnegie Mellon University, USA, is a programming language for music composition and sound synthesis: it supports both high-level compositional tasks and low-level signal processing within a single integrated environment. This feature is particularly attractive for composers wishing to work at the microscopic level of abstraction. Most sound synthesis languages (e.g., the popular Csound) are not entirely suitable for algorithmic composition because they are limited to instrument design: the actual notes to be played on an instrument must be manually specified one-by-one in a score file. There is no provision for writing generative musical programs in such languages.
Nyquist is implemented on top of a programming language called Lisp, more specifically XLisp, an extension of Lisp that is freely available for non-commercial purposes. Nyquist can be thought of as a library of Lisp functions that can be called up by other user-specified functions in a program. In fact, XLisp has been extended to incorporate sounds as a built-in data type, which gives Nyquist a great deal of expressive power. Composers thus write their algorithmic programs in Nyquist as if they were writing Lisp programs. The great advantage of this is that composers have the full potential of Lisp, which is a powerful language used in artificial intelligence research, combined with a wide variety of functions and abstract structures for composition devised by Dannenberg. The caveat of Nyquist is that composers should be familiar with Lisp programming...