CS 583 A1 -- Computational Audio -- Fall 2021

Wayne Snyder

Associate Professor of Computer Science

MCS 210

Office Hours: T 3:00 - 5:00 (or by appointment

Cell: 617 966 (2^10 + 41) (leave a message) Email: waysnyder@gmail.com

 

Prerequisites

Programming ability equivalent to CS 112; mathematical maturity equivalent to CS 2xx courses; a pair of working ears; musical interest/talent/knowledge very useful but not essential.

Description

This course will present a fundamentals of audio programming for computer science students. Since our computer science curriculum includes no required courses in physics or in signal processing ( e.g., ENG EC 401 Signals and Systems), we shall develop the subject from first-principles, emphasizing programming approaches to the synthesis and analysis of music, with enough theory to explain the fundamental principles.

The course will divide naturally into three different parts:

Music Synthesis: We will begin by studying the fundamentals of sound and how musical sounds can be created by adding together simple sine waves, and then proceed to richer and more complex ways of creating musical tones, attempting to both simulate real musical instruments and artificial sounds; we will learn how to create such sounds from the "bottom up" using Python and also using a graphical synthesis language called Pure Data.

Digital Signal Processing: In the second part of the course, we will cover the basics of digital signal processing, first learning how signals can be represented by complex exponentials and how this representation leads to an amazing and vastly important algorithm, the Discrete Fast Fourier Transform; in our programming work, we will learn how to use the signal-processing libraries of Python to analyze audio signals.

Music Information Retrieval: In the last part of the course, I will survey some of the most important results from the field of Music Information Retrieval (MIR), which applies the techniques of DSP to understand musical signals. This will form the basis for your final project.

 

Course Materials and Handouts

I will be providing handouts and links to online resources throughout the course. These will be listed on the main schedule of the class web page (Google "Wayne Snyder CS 583" to find it and bookmark it).

For the programming part of the course, I will be presenting materials culled from the web, textbooks, or of my own devising. The language of choice will be Python; I STRONGLY recommend you use the Anaconda distribution of Python, which gives you trouble-free access to all the useful scientific, plotting, and signal processing libraries we will need in the class.

Please look at the Resources Page for other texts and online resources!

 

Assignments and Tests

Grades (tenative)

Miscellaneous