Music 120

Introduction to Audio/Multimedia Application Programming

Announcements  |  Course Info  |  Weekly Schedule  |  Tutorials  |  Links


Music 120, Fall 2006 is an introduction to various topics of audio/multimedia programming. We explore the basics of programming tools and environments, software libraries, graphic user interface design, audio plug-in architecture, and network communication.
As an introductory course, it is primarily targeted at musicians, artists, and/or entry-level programmers who want to develop their own softwares. On the other hand, it provides an overview of audio/multimedia programming topics to advanced programmers.
This course is also designed to serve as a series of practical programming tutorial sessions for a number of courses offered at the Center for Computer Research in Music and Acoustics (CCRMA).

Music 120 is supported by funding from the Stanford Institute for Creativity and the Arts.


10/02/06: course email list & notes on lecture #2

1) We have a course email list: 120 AT ccrma DOT stanford DOT edu.
Most announcements will be sent out to this email address. You can also use it to speak to the whole class.
2) As discussed in class, some of the source codes from the class didn't close wave files at the end. Although they haven't caused any trouble, I made corrections anyway by adding some closeFile() methods: please check the tutorial and source codes (and thanks for pointing this out!)
The setFrequency method of WaveLoop class changes the interpolation ratio (see setRate method) using the following equation:
interpolation_ratio = raw_filesize * frequency / sampling_rate
If we set the interpolation_ratio as 1, we get
frequency = sampling_rate / raw_filesize
Therefore, since we know the size of the "dope.raw" file (20480 Bytes), we can calculate its original playback frequency:
44100 / 20480 =~ 2.153
Now, compile the ex5.cpp and run the following:
./ex5 dope.raw 2.153 3.0
and you will hear the "dope" scream looped for 3 seconds at the "right" speed.
3) To compile the example codes on OSX with StkX, we had to modify them to
  • include <StkX/StkX.h>, and
  • comment out the other Stk-related headers (e.g., FileWvOut.h.)
Another way to handle this problem is to use "#ifdef - #else - #endif" with an extra preprocessor (e.g., "__STKX__": see this version of ex5.cpp) for compiling only with StkX. This way, same code can be used for any compiling environment without modification.

9/22/06: course website open.
Announcements  |  Course Info  |  Weekly Schedule  |  Tutorials  |  Links

Music 120 / Fall 2006 / CCRMA, Stanford University
Woon Seung Yeo
Last updated: Tue, 03 Oct 2006 01:54:16 -0700