Course Information

Developed and maintained by: Julius O. Smith III (jos), initially with the help of Champ Darabundit (first TA)

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 course diligence, assignment quality, project updates/demos, and final project work.

Itinerary


Assignments

The 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 (only 1-FFT and 2-FilterBank have deliverables):

Projects

In addition to the two assigned plugins above, we have the following plugin projects:

1. Synthesizer

Build on the assignments to design your own synthesizer plugin or standalone program.
You choose the sound-synthesis method, and the definition of "synthesizer" is flexible.

2. Final Project

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

Tentative Weekly Schedule

By week (subject to change):
  1. JUCE
  2. PGM
  3. 1-FFT
  4. Faust
  5. 2-FilterBank
  6. Synth Project
  7. Synth Project Continued - talk about Final Projects
  8. Final Project Updates and Discussions, Special Topics
  9. Final Project Updates and Discussions, Special Topics
  10. Final Project Presentations

Your Mileage May Vary

Completing the assignments quickly leaves you more time for your final project, and this is encouraged.
However, it is also perfectly fine to spend most of the quarter learning more software tools and doing a more straightforward final project.