Music 220A Syllabus

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

Teaching Team

Chris Chafe
Nick Virzi
Elliot Kermit-Canfield

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
  • MIDI, OSC protocols

Topics in the class that will not be covered:

  • How to use DAW’s such as Logic, Pro Tools, and Ableton
  • Creating instrument samples and beats, concatenative, granular, and neural network techniques

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 is designed to be open to a wide range of students. It is a music course, but much of the content is linked to EE and computer science. The one pre-requisite is ample time to devote to the material. Think coming up to speed on a new instrument and performering what you've learned for an audience by the time of the final project.

Participants with intro-level programming skills, or even without prior programming knowledge, are going to gain the necessary abilities as technical content is rolled out: sampling theory, time and frequency domain analysis and manipulation, real-time and non-real-time synthesis, related psychoacoustics and more. These subjects will be taught at the level of rigor needed for the assignments. The goal is a launch pad for future courses and projects in the art, science and engineering of sound and music, If you are 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 goals and pursuing those 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 levels at which one might study audio and music programming, from the conceptual to the minute, from a high-level domain-specific language to low-level manipulation of bytes and bits. In this course we will primarily use high-level programming languages intended specifically for audio and music programming: Faust and ChucK. We will use Audacity and Snd for additional post-processing of sound files and examination of signals. If you are already proficient with other computer music software and it can load Faust modules, you're welcome to use it in lieu of ChucK and / or Audacity.

Course Requirements and Assignments

With regard to homework, students will complete five programming-based études and answer some proof-of-knowledge assignments alongside these mini-copositions. Work will be evaluated on correctness and functionality, thorough fulfillment of the stated requirements, and demonstrated effort. 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 late day we mean 24 hours late. No project submission will be accepted one week after the deadline. 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 needd your CCRMA login/password). You will have about 10 minutes to present and play your own music or music or interest. You should say a few words about what you picked, particularly commenting on why you are drawn to it, and note any course elements that are relevant to your selection (which does not need to be the case).


There will be no final examination for this class. Instead, beginning a few weeks before the end of the quarter, students (working alone, 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 final exam time, scheduled for December 15th, from 12:15pm-3:15pm (and for sure, we will run over our time slot). 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. And, this year, as a pilot experiment we may ask the author of a really good one to play their work for the class soon after it's submitted.


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 other 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 structure of the course has builti-in flexibilty, so if anything interferes with your tracking the class as its laid out please speak to the professor outside of class.