Share the story of what Open Access means to you
University of Michigan needs your feedback to better understand how readers are using openly available ebooks. You can help by taking a short, privacy-friendly survey.
Algorithmic Composition: A Guide to Composing Music with Nyquist
Mary Simoni and Roger B. DannenbergComposers 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.
-
Cover
-
Title
-
Copyright
-
Dedication
-
Contents
-
Preface
-
Acknowledgments
-
Chapter 1 Introduction
-
1.1 SAL
-
1.2 Lisp
-
1.3 Nyquist
-
1.4 The Nyquist Integrated Development Environment
-
1.5 Algorithmic Composition
-
1.6 Additional References
-
-
Chapter 2 The History and Philosophy of Algorithmic Composition
-
2.1 The Process of Algorithmic Composition
-
2.2 A Brief History of Algorithmic Processes Applied to Music Composition
-
2.3 Aesthetics of Algorithmic Composition
-
2.4 Suggested Listening
-
-
Chapter 3 Introduction to SAL
-
3.1 Data
-
3.2 Running Nyquist
-
3.3 SAL Expressions
-
3.4 Functions
-
3.5 Predicates
-
3.6 User-Defined Functions
-
3.7 Getting Help
-
3.8 Programming Errors
-
3.9 Error Messages
-
3.10 Stack Traces
-
3.11 Printing
-
-
Chapter 4 Programming and Nyquist
-
4.1 Getting Started
-
4.2 Nyquist Instruments
-
4.3 Nyquist Scores
-
4.4 Variables
-
4.5 Score Processing
-
-
Chapter 5 Introduction to Algorithmic Composition
-
5.1 Getting Started
-
5.2 Pitch and Rhythm Notation
-
5.3 Pattern Objects and Item Streams
-
5.4 A Complete Example
-
5.5 Suggested Listening
-
-
Chapter 6 Printing, Reading, and Debugging
-
6.1 print Command
-
6.2 format Command
-
6.3 display Command
-
6.4 Debugging with #display and #print
-
6.5 Tracing Pattern Evaluation
-
6.6 Reading Data from the Computer Keyboard
-
-
Chapter 7 Variable Assignment and Scoping
-
7.1 set Command
-
7.2 begin, end, and with
-
7.3 score-gen and Local Variables
-
7.4 Combining with and score-gen
-
7.5 Understanding Variable Scope in SAL
-
7.6 Increment, Decrement, and Other Operators
-
7.7 Assigning Local Variables Interactively
-
7.8 Suggested Listening
-
-
Chapter 8 Conditionals
-
8.1 if Command
-
8.2 #? Special Form
-
8.3 Using if with begin-end
-
8.4 Using Conditionals in Algorithmic Composition
-
8.5 Conditionals vs. Formulas
-
8.6 Suggested Listening
-
-
Chapter 9 Sets and Tables
-
9.1 Introduction to Set Theory
-
9.2 List and Set Operations
-
9.3 Tables
-
9.4 Arrays
-
9.5 Suggested Listening
-
-
Chapter 10 Functional Programming
-
10.1 Introduction to Functional Programming
-
10.2 Mapping a Function over a List
-
10.3 Using the score-apply Function
-
-
Chapter 11 Recursion
-
11.1 Introduction to Recursion
-
11.2 Single-Test Tail Recursion
-
11.3 List-Cons’ing Recursion
-
11.4 Conditional Augmenting Tail Recursion
-
11.5 Double-Test Tail Recursion
-
11.6 Multiple Recursion
-
11.7 Tracing Function Evaluation
-
11.8 SAL Is Recursive
-
11.9 Using Recursive Forms in Nyquist
-
11.10 Suggested Listening
-
-
Chapter 12 Iteration
-
12.1 The loop Command with a for-below Clause
-
12.2 The Full Story of for-below
-
12.3 Iterating over the Elements of a List
-
12.4 Using return in a loop
-
12.5 The for-then Clause
-
12.6 Loops with while and until
-
12.7 Reading and Writing Records Using Iteration
-
12.8 score-gen as Iteration
-
12.9 Suggested Listening
-
-
Chapter 13 Algorithmic Composition Using Probabilistic Methods
-
13.1 Introduction to Probability
-
13.2 The random Pattern
-
13.3 Graphs and Patterns
-
13.4 The markov Pattern Generator
-
13.5 Patterns Can Specify Next States and Weights
-
13.6 Learning a Markov Process
-
13.7 1/f2 Noise or Brownian Motion
-
13.8 1/f Noise
-
13.9 Suggested Listening
-
13.10 Suggested Reading
-
-
Chapter 14 Hierarchical and Recursive Musical Structure
-
14.1 Structure from Nested Patterns
-
14.2 Hierarchy in Scores
-
14.3 Encapsulation
-
14.4 Compositional Environments
-
14.5 Suggested Listening
-
-
Chapter 15 Composing Sonic Microstructure and Macrostructure
-
15.1 Sound Synthesis in Nyquist
-
15.2 A Pattern-Driven Sound Generator
-
15.3 Nyquist Sounds and Scores
-
15.4 Nyquist Sounds and Global Control Functions
-
15.5 Scores and Global Control Functions
-
15.6 Further Explorations
-
15.7 Suggested Listening
-
-
Chapter 16 Extended Examples
-
16.1 Jellyfish Music Example
-
16.2 Orchestration
-
16.3 Text to Music
-
16.4 Suggested Listening
-
-
Chapter 17 Epilogue
-
Appendix SAL Commands and Functions
-
Commands
-
Functions
-
-
Bibliography
-
Discography
-
Index
- 978-0-472-03523-6 (paper)
- 978-0-472-02905-1 (ebook)