This page was last modified on March 10, 2005.
Music 147 Research Page
This page contains links to supporting materials and instructive examples for students in Music 147 (ICS 180, ECE 195, Music 215, ACE 277), Computer Audio: Musical Applications of Digital Signal Processing, taught winter quarter 2005 at the University of California, Irvine.
A complete listing of Christopher Dobrian's publications on computer music can be found online.
The publications most pertinent to this course are listed below.
- Max/MSP Documentation (1997, rev. 1998, rev. 2001) published by Cycling '74.
Complete documentation of the Max/MSP computer music programming environment, in .pdf format, including numerous tutorials on musical applications of DSP.
- Digital Audio (1997), from MSP: The Documentation published by Cycling '74 and l'IRCAM.
Article explaining the basics of how computers deal with audio information.
- Programming New Realtime DSP Possibilities with MSP (1999), published in the proceedings of the the 2nd COST G-6 Workshop on Digital Audio Effects (DAFx99), NTNU, Trondheim, Norway.
Article explicating techniques for granular processing of audio using MSP.
- Strategies for Continuous Pitch and Amplitude Tracking in Realtime Interactive Improvisation Software (.pdf format) (2004), published in the proceedings of the 2004 Sound and Music Computing conference (SMC04), IRCAM, Paris, France.
Article describing techniques for capturing and using continuous curves of pitch and amplitude in a live audio signal.
- printwave.c: calculates 1 second of samples for a 1000 Hz sine wave and prints them out as text, one sample per line
- putwaveint.c: calculates 1 second of samples for a 1000 Hz sine wave and puts them out as 16-bit integer numbers in binary form (but without any file header information)
- putwave.c: calculates 1 second of samples for a 1000 Hz waveform and puts them out as 1-kilobyte blocks, containing 256 32-bit floating point numbers each, in binary form (but without any file header information)
- pa_cosine.c: demonstrates the use of PortAudio to write a program that plays a synthesized tone; the callback function calculates samples for a 1000 Hz cosine wave and fills the PortAudio stream output buffer when called (over a time period of four seconds in this case)
- makeaiff.c: shows how to prepare the header information for an AIFF file and write it, along with some sound data, to a stereo AIFF file; for producing the file header, this program uses code based on some example C code by Paul Bourke, which is posted on the web along with a good description of the AIFF file format
- Wavetable1.c: shows how to fill a lookup table with one cycle of an arbitrary waveform (a sine wave in this example) and then read cyclically through the lookup table to produce a periodic tone (synthesized using PortAudio); this example uses index truncation, which is simple and fast, but which is not as accurate as using interpolation between sample indices
- Wavetable2.c: shows pretty much the same thing, but using linear interpolation between two adjacent stored sample values to produce a more accurate representation of the waveform; if you compare the sound produced by these two Wavetable examples, you can hear that the interpolated wave sounds more like a pure sine tone
- comb.c: the example program made for class on 1/12/05, using PortAudio to access the computer's input and output jacks, and implementing a simple FIR comb filter on each channel of input before sending it back out; if you enlarge the PIPE_SIZE, and increase the delay times, you can make an echo effect.
- chromaticscale.c: similar to the "pa_cosine.c" example, but using the Pa_StreamTime() function to monitor the passage of time, and at one-second intervals calculating and playing a new note of the equal-tempered chromatic scale
constantpowerpanning: constant-power panning as demonstrated in class on 2/9/05
dopplerexample: an example of using variable distance-based delay, distance-based amplitude, distance-based filtering, and azimuth-angle-based panning to simulate the sound of a car passing the listener in virtual space
chebyshev: using Chebyshev polynomial functions as transfer functions for table lookup
compressor: an example of basic dynamic processor, compressing the input signal amplitude by a certain factor (the inversion of the "compression ratio") when it exceeds a certain peak amplitude threshold, with independently specifiable attack and release times, and with automatic "makeup gain" to bring it back to full amplitude after compression
groovy: demonstrates the use of the groove~ object for sample playback with optional looping
additive: a simple patch for listening to four sinusoids with related frequencies, mixed together in any desired balance
detune: a demonstration of detuning a soundfile by means of speed change, as well as a demonstration of hiding Max/MSP objects and showing only the desire user interface objects
graindemo01: a single stream of grains of sound, reading from a pre-recorded soundfile in memory, using a triangular window, with random selection of starting point, playback speed, and panning for each grain
hanning: creates a buffer~ named "hanning" and fills it with a 513-sample hanning window function
No MP3 sound files are posted yet.
Here is an AIFF file that might be useful for testing a gate. It's some spoken text with some pauses, and some low-level background noise.
Bibliography of Other Relevant Publications
Useful Audio Software
Other Online Resources
Notes from Class Sessions
Examples from Previous Years' Course
The professor's research page from this course as it was taught in Winter 2001 contains examples of basic audio programming principles demonstrated in the "Csound" computer music programming language.
The professor's research page from this course as it was taught in Winter 2002 contains examples of basic audio programming principles demonstrated in the "MSP" computer music programming language.
The professor's research page from this course as it was taught in Winter 2004 contains examples of basic audio programming principles demonstrated in the "C", "Pd", and "MSP" computer music programming languages.
This page is for Music 147 (ICS 180, ECE 195, Music 215, ACE 277), Computer Audio: Musical Applications of Digital Signal Processing, offered Winter 2005 at UCI.