Introduction to Computer Assisted Composition using Lisp Software
Syllabus
Spring 2010
Course leaders
Mauricio Rodríguez marod@stanford.edu
Juan Cristóbal Cerrillo cerrillo@stanford.edu
Faculty Sponsor
Class meetings: Thursday 3 to 5 P.M. Seminar Room CCRMA
Course materials
This student initiated course will use the following environments based on the Lisp programming language. Hyperlinks and instructions for downloading and installing all software can be found on the course web page (https://ccrma.stanford.edu/courses/2SI)
All class examples and materials will be posted onto the course web page.
Course overview
This course will focus on how to use, interact with, and create computer software dedicated to the generation, analysis and manipulation of musical data for compositional usage. Class discussion will center on modeling algorithms oriented towards the creation of compositional systems and musical analysis. The course uses PWGL , OpenMusic and LispWorks as programming language for assignments and projects. The format consists of in-class discussions and lectures during the first hour, and an on-hands laboratory during the second. The overall approach of the course is to make discoveries by creating work in a collective, non-hierarchical learning environment. We aim to explore the different ways in which these applications can provide insightful perspectives on musical material and reveal unforeseen possibilities and limitations of compositional decisions.
By the end of the course you will: be able to formalize a musical process and implement it in PWGL and OpenMusic, have a sense of the potential/limitations inherent in these programs and how to develop/overcome them by programming in Lisp, and sketch a musical composition using these technologies.
No prior programming experience needed.
Requirements
Regular attendance, active participation, completion of assignments (1 unit) + final project (2 units).
Class schedule
Week 1
Lecture:
“Composing as programming, programming as composing.” Environment setting: installing the LispWorks 6.0 program (Personal Edition and/or Professional Edition.) Introduction to Lisp programming. Structure and syntax of the Lisp programming language. List representation and Lisp data types. Evaluation rules. Preventing evaluation.
Laboratory:
Installation of OpenMusic and PWGL environments.
The OpenMusic environment.
Musical example: interval and chord transposition and inversion
Week 2
Lecture:
Lisp functions and primitives. Definition and abstraction of Lisp functions. Anonymous Lambda functions. Use of Lisp functions as Lisp arguments. Variable assignment.
Laboratory:
Object states (locked, eval-once, lambda)
Patches in lambda mode
Musical example: constructing a pitch sequence, temporal expansion/contraction
Week 3
Lecture:
Lisp predicates, conditionals and Boolean operators. Filtering and mapping. List construction.
Laboratory:
Predicates, conditionals: omif, omand, omor objects.
Musical example: transformation of musical sequences under specific conditions
Week 4
Lecture:
Different methods for recursion and iteration. The Lisp-macro loop.
Laboratory:
Rhythm representation in OpenMusic
Structure of Rhythm Trees
The voice object
Week 5
Lecture:
Input and Output: reading Lisp code and formatting it for interaction with multiple applications.
Laboratory:
The Omloop object
Recursive abstractions
Musical example: harmonization and chord interpolation with Omloop, constructing rhythm trees with omloop,
Week 6
Lecture:
Automatic generation of data.
Laboratory:
omloop (continuation)
collecting vs. accumulating
Example: given a starting pitch and an intervalic sequence, construct a new sequence of pitches containing the same intervals but with a random variation of motion. Use of lambda patch within omloop with acum (OM tutorial 37).
Week 7
Lecture:
Classes and methods: principles object-oriented programming.
Laboratory:
From rhythm tree to duration sequence and vice versa
Class project: constructing a pitch mapping patch for voice objects
Week 8
Lecture:
Design and implementation of music programs.
Laboratory:
Consultation/work on individual projects
Week 9
Presentation of individual projects
Bibliography and documentation:
Seibel, Peter. “Practical Common Lisp.” Apress, 2005.
http://gigamonkeys.com/book/
Steele, Guy. “Common LISP (Second Edition).” Prentice Hall, 1990.
http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/index.html
Taube, Heinrich. “Notes form the Metalevel. Introduction to algorithmic composition.” Taylor & Francis, 2004.
Touretzky, David S. "Common Lisp: A Gentle Introduction to Symbolic Computation." Harper & Row, 1984.
http://www.cs.cmu.edu/~dst/LispBook/
Common Lisp Hyperspec:
http://www.lispworks.com/documentation/HyperSpec/Front/index.htm
Sources and links:
Lispworks Personal Edition (Mac & PC):
http://www.lispworks.com
Clozure CL (Mac & Linux)
http://www.clozure.com/
Franz (Lisp) - Allegro CL (Mac & PC):
http://franz.com/downloads/index.lhtml
MCL (open source version Mac-PPC)
ftp://ftp.clozure.com/pub/MCL/MCL-5.2-Final3.dmg
SBCL - Steel Bank Common LISP (multiple platforms)
http://sbcl.sourceforge.net/
Applications:
AC Toolbox:
www.koncon.nl/downloads/ACToolbox
PWGL:
www2.siba.fi/PWGL/
OpenMusic:
http://freesoftware.ircam.fr/
Nyquist
http://www.cs.cmu.edu/~music/music.software.html