spobooks bbv9810.0001.001 in

    Chapter 1: Introduction

    This book integrates three subject areas: Common LISP, Common Music, and algorithmic composition. The purpose of combining these three subjects into one book is to assist readers who are interested in composing music using computers. The author assumes the reader has very little experience with Common LISP or Common Music. For this reason, usage and syntax of Common LISP and Common Music are explained through numerous carefully documented examples. The author assumes the reader has an understanding of tonal music theory and MIDI (The Musical Instrument Digital Interface) [IMA, 1983]. The majority of the examples in this book and the accompanying compact disc use MIDI.

    Many wonderful compositions have been written over the years using Common LISP and Common Music. By making the details of how to use Common Music more approachable, the author hopes more people will be enticed to explore the potential of algorithmic composition.

    1.1 Common LISP

    The programming language LISP derives its name from List Processing [Winston, 1989]. Common LISP was developed in 1956 by artificial intelligence researchers Allen Newell, J.C. Shaw, and Herbert Simon [Touretzky, 1990]. Since the early days of LISP, researchers have discovered the power of LISP's processing capabilities for music. Music, a time-based art form, oftentimes is conceived as a succession of events. The events may be a series of pitches, articulation patterns, or a succession of rhythms. Figure 1.1.1 depicts a pitch series that is accompanied by a list representation of that series. Each item in the list representation is called an element.

    Figure 1.1.1

    Once musical events are described as elements of a list, Common LISP functions may be applied to each element of the list to transform the elements. One such example might be to transpose every element of the list in Figure 1.1.1 up a major second returning the list (D F-sharp E G). Beginning with Chapter 3, we will learn how to use Common LISP to build programs that transform musical data.

    1.2 Common Music

    Common Music is an extensible programming environment for computer-based composition. The development of Common Music began in 1989 by Heinrich Taube [Taube, 1989]. After several years of continuous evolution, Common Music was awarded first prize in the computer-assisted composition category at the 1er Concours International de Logiciels Musicaux in Bourges, France.

    Common Music is implemented in Common LISP and the Common LISP Object System [Keene, 1989]. Common Music's command line interface is called Stella. Common Music runs on Macintosh, Windows, and UNIX platforms. The software and accompanying electronic documentation is available as freeware at a number of internet sites [Taube, 2000]. Common Music requires that Common LISP be installed on your computer system. You may think of Figure 1.2.1 when conceptualizing the software layers required by Common Music.

    Figure 1.2.1: The software layers required by Common Music

    Common Music works in conjunction with a number of other protocols and applications for the display and realization of music. For example, it is possible to use MIDI for both input and output to Common Music. MIDI input and output requires that Common Music communicates with your system's MIDI driver. Appendix A describes how to configure Common Music for MIDI input and output using the OMS (Open Music System) MIDI driver. The majority of examples in this book and accompanying compact disc use MIDI.

    Another way to use Common Music is in conjunction with Csound, sound synthesis software developed by Vercoe and Karstens. Common Music outputs parameter values to a Csound scorefile that is referenced by a Csound orchestra file. Appendix B describes how to configure Common Music to output data using the Csound scorefile format [Boulanger, 1999].

    Common Music outputs data to a number of other sound synthesis applications including Common Lisp Music [Schottstaedt, 1991], Cmix [Lansky, 1990], and Cmusic [Moore, 1990] as well as music notation software such as Common Music Notation developed by Schottstaedt.

    1.3 Algorithmic Composition

    An algorithm is defined as a set of rules or a sequence of operations designed to accomplish some task or solve a problem. Human beings are very good at designing and implementing algorithms. From getting dressed in the morning to cooking dinner, we are continuously developing algorithms to solve life's everyday problems.

    Gareth Loy describes criteria for determining the validity of an algorithm [Loy, 1989]. An algorithm must have a finite number of steps; have both input to and output from the algorithm; yield a result in a finite period of time; and have a precise definition for each step of the algorithm. Donald Knuth explains that there are also aesthetic criteria for the evaluation an algorithm [Knuth, 1973]. These aesthetic criteria include simplicity, parsimony, elegance, and tractability. Ideally, algorithms should strive to meet the criteria outlined by Loy and Knuth.

    Composition is the process of creating a musical work [Apel, 1979]. The term composition literally means to "put together" parts into a unified whole. The process of composing music is oftentimes characterized by trial and error. The composer tries something, listens, and determines if revisions are necessary. The composer is continually evaluating the effectiveness of a part in relation to the whole.

    We combine the terms algorithm and composition to derive the term algorithmic composition. Algorithmic composition, in the simplest sense, is when a composer uses an algorithm to put together a piece of music. Since the mid-twentieth century, the computer has become a key partner in implementing algorithms that generate music. Because of the increased role of the computer in the compositional process, algorithmic composition has come to mean the use of computers to implement compositional procedures that result in the generation of music.

    1.4 Additional References

    Although this book provides you with the fundamentals of algorithmic composition using Common LISP and Common Music, you may wish to augment your reading with additional references. Two excellent Common LISP references include, "LISP" by Patrick Henry Winston and Bertold Klaus Paul Horn [Winston, 1989] and "Common LISP - The Language" by Guy L. Steele [Steele, 1990]. Common Music is accompanied by voluminous electronic documentation, much of it in HTML. The Common Music Dictionary , available on the accompanying CD and the Common Music FTP site [Taube, 2000], is a quick reference covering most aspects of Common Music. For detailed information on MIDI, consult the MIDI Specification and supporting documents published by the International MIDI Association [IMA, 1983] or a textbook on MIDI such as "MIDI: A Comprehensive Introduction" by Joseph Rothstein [Rothstein, 1992]. For additional information on strategies for algorithmic composition, refer to Chapter 19 of "The Computer Music Tutorial" by Curtis Roads [Roads, 1996] or Chapter 11 of "Computer Music: Synthesis, Composition, and Performance" by Charles Dodge and Thomas Jerse [Dodge, 1997].