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


Chris Chafe


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