Course Information

Class: Tues+Thurs 3:15 PM - 4:30 PM
Labs/Office Hours: 2:45-3:45pm on Wednesdays in the Seminar Room
Location: Knoll 217 (CCRMA Classroom)

Prerequisites:

Course Summary

Music 320C focuses on developing audio signal-processing plugins and stand-alone applications in C++. Prior experience is assumed with programming in C/C++, and signal processing theory and programming on the level of Music 320A and/or 320B. Class time is devoted to presenting and discussing the JUCE framework for creating audio plugins and stand-alone applications, the Faust (Functional AUdio STream) programming language for generating audio C++, related theory and projects, project progress reports, and project final presentations.

Course Goals

Assignments

The first several assignments get you up and running using the relevant software tools, followed by your project work.

Grading

Grades are based on class participation, assignments, project updates/demos, and final project work. Those enrolled for one unit (class attendance only) should sign up for CR/NC.

Itinerary


Assignments

The required Music 320C assignments cover the following basic tools and exercises for audio plugin development:

  1. Get up and running with JUCE, Plugin GUI Magic (PGM), and Projucer
  2. Make a real-time spectrum analyzer plugin using the juce_dsp module
  3. Make a real-time filter-bank plugin using the Faust Libraries
In more detail, we have the following specific assignments: Ideally these can be completed in the first 3-4 weeks, but it is fine to take longer if that's what you need.
Developing proficiency with the software tools has higher initial priority than expanded project work.

Projects

Based on how long the assignments take, both projects will take 3-4 weeks each.

Project 1: Synthesizer

In this project, you will build on the previous assignments to design your own synthesizer plugin or program. You will be in control of sound generation and shaping, and the definition of a synthesizer is flexible.

Project 2: Final Project

Your final project is open ended and can build on prior work in the class.