Music 220A Syllabus

Fall 2017 | TTh 11:30am - 1:20pm in the CCRMA Classroom/Stage

Teaching Team

Chris Chafe
Emily Graber
Nolan Lem

Course Description

Topics we will cover in class include:

  • Fundamentals of how digital audio works (sampling, quantization, A/D and D/A conversion)
  • Programming audio
  • Different kinds of sound synthesis (additive, FM, wavetable, subtractive, physical models)
  • Time-varying functions, envelopes and algorithms for notes and scores
  • Delay, and delay-based processing techniques, reverberation and digital filters
  • Reverberation using convolution
  • Multi-channel sound spatialization techniques, ambisonics in particular, and panning algorithms
  • Fourier analysis and resynthesis, cross-synthesis, and time compression/expansion
  • A hit parade of computer music compositions
  • Chuck, Faust and JavaScript programming languages
  • Web Audio
  • MIDI, OSC protocols

Topics in the class that will not be covered:

  • How to use Ableton, Max/MSP, Logic, etc.
  • Creating instrument samples and beats, concatenative, granular, and neural network techniques

Courses for the above include Music 101 [Win, Spg, 2017], Music 192a [Aut, 2017], Music 421N [Aut, 2017]

The course schedule (subject to change), in addition to the outline of readings and homework assignments, is available here.

Who is this course for and what is the work like?

220a welcomes a wide range of students. It is a music course but much of the content relates to EE and CS. The one pre-requisite is ample time to devote to the material. For those who are new to computer music programming it will involve learning a new kind of instrument. Individual final projects will be presented to the public.

Participants with no prior pogramming coursework or experience are welcome and will gain the necessary abilities to work with digital techniques of sampling, time and frequency domain analysis and manipulation, real-time and non-real-time synthesis and more. These subjects will be taught at the level needed for the homework assignments. The course is designed to launch participants toward future courses and projects in the art, science and engineering of sound and music, If you are already a great programmer, you will be able to use your skills in this class to your advantage, and will be expected to challenge yourself on the musically-creative aspects of the course.

Each student is responsible for defining her/his learning methods and pursuing course goals using a combination of available resources: textbooks, articles, online tutorials and documentation, and consulting with the teaching staff and fellow students.


There are many choices for studying audio and music programming, from hands-on to conceptual and from low-level manipulation of bytes and bits to high-level domain-specific languages. In this course we will primarily use high-level programming languages intended specifically for audio and music programming (Faust, ChucK and javascript). We will use Audacity and Snd for additional post-processing of sound files and examination of signals.

Course Requirements and Assignments

With regard to homework, students will complete five programming-based études or mini-copositions. Work will be evaluated on correctness, functionality, thorough fulfillment of the stated requirements, and creativity. The musical work is to be submitted, along with code and a description of your work, to the course Homework Factory. The Homework Factory is a private page, accessible by CCRMA user ID and password, that links your CCRMA user name to a directory in your CCRMA account. By signing up for a CCRMA user ID, you automatically have a /Library/Web/ directory. Further instructions about how to submit will be included in the first assigment, but basically you'll make a 220a folder in that directory. The Homework Factory web page looks for files in your /Library/Web/220a/ directory that are titled: hw0.html, hw1.html, hw2.html, etc, and when it finds them there, a link is created on the Homework Factory page to your page. When that link appears, your homework is considered ‘submitted’, though you can further edit it up until the deadline (and actually, beyond). Please ensure that all links contained in each assignment page (which link to your homework components) are functional. The firsr assignment, Homework 0 , is a practice submission that makes this process clear.

Late Policy

By one day late we mean 24 hours late. Please do not submit any homework over email.

Music Presentations

Every class begins with a few short music presentations and each student will take a turn during the quarter. Signups will be listed on the course wiki. Please sign up by clicking 'edit' in the top right corner (you'll need your CCRMA login/password). You will have about 5-10 minutes to present and play your own music or music of interest. You should say a few words about what you picked, particularly commenting on why you are drawn to it, and (optionally) note any course elements relevant to your selection.


There will be no final examination for this class. Instead, beginning a few weeks before the end of the quarter, students (working individually, not in groups) will explore an aspect of audio or music programming and complete either 1) a program which demonstrates that interest, or 2) a composition (possibly highlighting some research aspect). A final presentation of the projects will be held during the last class and the final exam slot, scheduled for December 14th, from 12:15pm-3:15pm (and for sure, we will run over). Documentation of your project, along with any pertinent information such as the motivations for the composition, design specification of the program, basic user documentation, and composition audio file (if applicable) is to be submitted to the Homework Factory as fp.html ahead of your presenation.

Shortly before Thanksgiving break we'll have a day in which we hold individual meetings about final project plans with everyone in the class.


Grading is based on student participation, satisfactory completion of all assignments and creativity. The latter is subjective, but when the teaching team notes something outstanding we'll call attention to it as an example.


Announcements will be sent out via the course listserv (; additionally, much of the course's information is disseminated through the course website. Assignments, lecture notes and videos will be posted there as the course progresses.

Collaboration and Proper Attribution

Collaboration between students is an important feature of this course and of many courses at CCRMA. Students are encouraged to exchange ideas, opinions, and information constantly, and to help each other with programming projects. Good solutions are for sharing. Naturally, each student is responsible for completion of his/her own assignments and it's the unique, creative side of each assignment which distinguishes the individual work. Please be sure to make proper attribution to the originator of any ideas, words, programming code, or other ideas that you incorporate into your own work. In computer programming, it’s common to use program components that are known to be reliable, written by others. A lot of good (and some bad) program code is freely available. Nevertheless, one must always give full attribution to the original author of all program code of any kind.

Laptops and Cell Phones

Multi-task at will during class meetings but please don't distract others (no audio or video that gets "out", noisy laptop fans included).


The course has quite a bit of built-in flexibilty, so if anything interferes with tracking the class as laid out please speak to the professor outside of class.