We cannot verify your location
Browse Book and Journal Content on Project MUSE

Algorithmic Composition

A Guide to Composing Music with Nyquist

Roger B Dannenberg

Publication Year: 2013

Composers have used formalized procedures to create music throughout history. With the advent of the computer, algorithmic composition allows composers not only to create and experiment with different formalisms, but to hear and evaluate results quickly. Often in algorithmic composition, the composer has only a vague idea how the output will sound, but because the input is highly automated, the composer can make adjustments to take advantage of happy accidents, program bugs, and other creative sources of sound. Algorithmic Composition: A Guide to Composing Music with Nyquist provides an overview of procedural approaches to music generation. It introduces programming concepts through many examples written using the Nyquist system for music composition and sound synthesis. Nyquist is freely available software, and over 100 program examples from this book are available in electronic form. Readers will be well equipped to develop their own algorithms for composition. Music students who are learning about computer music and electronic music will all be interested in this innovative book, as generative music becomes an important part of the future of the discipline. Students and scholars in computer science will also find much to interest them, in a straightforward and fun way.

Published by: University of Michigan Press

Front Matter

pdf iconDownload PDF (206.6 KB)
pp. 2-7


pdf iconDownload PDF (165.0 KB)
pp. vii-x

read more


pdf iconDownload PDF (101.0 KB)
pp. xi-xii

The motivation for writing this book comes from several years of teaching music and engineering students the fundamentals of algorithmic composition. Algorithmic composition, for the purposes of this book, is defined as the use of computers to implement procedures that result in the...

read more


pdf iconDownload PDF (92.3 KB)
pp. xiii-15

This book began as an introduction to the use of Common Music and Common Lisp. Common Music was developed by Heinrich (Rick) Taube with the support of Tobias Kunze, and this book would not have been possible without them. Although the book is now completely independent of...

read more

Chapter 1. Introduction

pdf iconDownload PDF (219.6 KB)
pp. 1-5

This book describes techniques for algorithmic composition using Nyquist, a computer language for sound synthesis and composition. The purpose of the book is to assist readers who are interested in composing music using computers. The best way of learning about algorithmic composition is by doing, so this book...

read more

Chapter 2. The History and Philosophy of Algorithmic Composition

pdf iconDownload PDF (323.7 KB)
pp. 6-15

In Chapter 1, we defined algorithmic composition as the use of a rule or procedure to put together a piece of music. This chapter will give you a broader understanding of algorithmic composition, how algorithms have been used throughout music history, and an introduction to the aesthetic issues of algorithmic...

read more

Chapter 3. Introduction to SAL

pdf iconDownload PDF (544.9 KB)
pp. 16-42

Chapter 3 introduces you to the fundamentals of SAL and programming. You will learn about some of the various data types that SAL supports and many of its built-in functions called primitives. You will learn how to write your own functions and become familiar with typical error messages...

read more

Chapter 4. Programming and Nyquist

pdf iconDownload PDF (495.4 KB)
pp. 43-60

The normal way to write a program is to type code into a file. The file is then loaded into Nyquist. Loading means that the expressions in the file are evaluated. Usually, most of the expressions in a file define functions. Files are convenient because, if there is an error, you can simply edit the file and reload it rather than...

read more

Chapter 5. Introduction to Algorithmic Composition

pdf iconDownload PDF (352.7 KB)
pp. 61-73

In Chapter 4, we learned how to use Nyquist to create, modify, and play scores. In principle, these functions can be used to create any score, but the work is tedious because so much must be specified by hand. In this chapter, we will learn new ways to create scores by writing programs. Programs can automate many tasks...

read more

Chapter 6. Printing, Reading, and Debugging

pdf iconDownload PDF (239.5 KB)
pp. 74-81

This chapter introduces you to writing output, reading data from the computer keyboard, and debugging programs. Displaying information on your monitor is very helpful in locating problems in your programs...

read more

Chapter 7. Variable Assignment and Scoping

pdf iconDownload PDF (347.0 KB)
pp. 82-98

This chapter introduces you to how to assign and reference variables in SAL (and Nyquist). Variables save values for reuse, avoiding the need to recompute them. Variables also offer a way to name values, making programs easier to understand. You will become familiar with several more SAL functions and the concept of...

read more

Chapter 8. Conditionals

pdf iconDownload PDF (261.9 KB)
pp. 99-107

Evaluating data and making decisions is an important part of describing music algorithmically. In this chapter, we will learn how to make decisions using SAL’s if statement and the special function #? (no, we’re not cursing, that’s really the name of the function). Programming constructs that choose an action based on...

read more

Chapter 9. Sets and Tables

pdf iconDownload PDF (329.2 KB)
pp. 108-124

The analysis of atonal music using mathematical set theory was codified by Allen Forte in his landmark book, The Structure of Atonal Music (1973). His theory of atonal music develops a comprehensive framework for the organization of collections of pitches referred to as pitch class sets. We will...

read more

Chapter 10. Functional Programming

pdf iconDownload PDF (290.0 KB)
pp. 125-131

Functional programming is a programming style that emphasizes the combination of functions to produce values as opposed to the sequential evaluation of commands and the modification of variables. One advantage of functional programming is that functional programs are often easier to reason about than non-functional...

read more

Chapter 11. Recursion

pdf iconDownload PDF (366.1 KB)
pp. 132-147

Recursion occurs when something refers to itself. For example, a recursive definition uses the term being defined within the definition. A recursive function is a function that calls itself. A classic example of a recursive process is generating the Fibonacci series. In the Fibonacci series, the first...

read more

Chapter 12. Iteration

pdf iconDownload PDF (370.0 KB)
pp. 148-163

Iteration in programming means repeated evaluation. In SAL, iteration is accomplished through loops. Loops evaluate a set of expressions over and over again. A loop should terminate after a specified number of repetitions or when a condition is met. SAL has several iterative forms, including a loop command with...

read more

Chapter 13. Algorithmic Composition Using Probabilistic Methods

pdf iconDownload PDF (485.0 KB)
pp. 164-186

Chapter 5 introduced the random item stream pattern type. Using the random item stream pattern type, we were able to select randomly among sets of values. In music, we often want some choices to be more likely than others, or a choice might depend upon the previous choice. In this chapter, we will explore probability...

read more

Chapter 14. Hierarchical and Recursive Musical Structure

pdf iconDownload PDF (305.7 KB)
pp. 187-197

Most programs are hierarchical. We have already seen many examples of nested expressions and function calls. Complex programming problems should always be decomposed hierarchically into understandable units that can be implemented as functions. Music is often hierarchical. We can decompose traditional...

read more

Chapter 15. Composing Sonic Microstructure and Macrostructure

pdf iconDownload PDF (457.3 KB)
pp. 198-212

Throughout the previous chapters, we have assumed that scores and notes form an interface between the world of the composer, who creates the scores and notes, and the world of the synthesizer, which turns note specifications into sounds. Common music practice, MIDI, and even most music synthesis languages promote...

read more

Chapter 16. Extended Examples

pdf iconDownload PDF (381.7 KB)
pp. 213-229

One of the difficulties of writing about programming of any kind is that realistic examples are simply too big and full of uninteresting detail for ordinary reading. Consequently, we, as authors, try to distill examples down to their essential elements and hope the reader will understand how to apply these elements in larger...

read more

Chapter 17. Epilogue

pdf iconDownload PDF (144.9 KB)
pp. 230-231

Algorithmic composition is important because it offers new ways of thinking about the organization of sound that we call music. In principle, algorithmic composition cannot create anything that we could not create by traditional methods, but that is like saying that a composer, in principle, could write out the ones and...

Appendix. SAL Commands and Functions

pdf iconDownload PDF (206.1 KB)
pp. 232-235


pdf iconDownload PDF (192.2 KB)
pp. 236-242


pdf iconDownload PDF (120.9 KB)
pp. 243-244


pdf iconDownload PDF (205.0 KB)
pp. 245-249

E-ISBN-13: 9780472029051
Print-ISBN-13: 9780472035236

Page Count: 262
Publication Year: 2013