This page was last modified on February 28, 2007.
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.
Example programs for class on January 11, 2007
A basic oscillator: oscillator.txt
This lets you listen to a sinusoidal wave, with adjustable frequency and amplitude.
A basic (monophonic) soundfile player: fileplayer.txt
This lets you listen to (the first channel of) a .wav or .aif soundfile.
A basic (monophonic) soundfile recorder: filerecorder.txt
This lets you record (the first channel of) the audio input of your computer into a .wav or .aif soundfile.
Example programs for class on January 18, 2007
Mix two sinusoids: mixtwosinusoids.txt
Experiment with interference between two simple waveforms.
Demonstrates the use of a low-frequency oscillator (LFO) to continuously modulate the frequency of a tone, creating the musical effect known as vibrato.
Play random notes: playrandomnotes.txt
Demonstrates the metro object for repetitive tasks, the random object for random number generation, and the line~ object for creating an amplitude envelope (or any other control shape composed of line segments).
Example programs from class on January 25, 2007
Automated counting in Max, using the metro and counter objects.
Chromatic Scale: chromaticscale.txt
Using metro and counter to play a timed succession of notes.
Diatonic Scale: diatonicscale.txt
Using a lookup table to play notes of a major scale.
The same linear succession of numbers to produce increasing velocities and pitches.
The same linear succession of numbers to produce increasing note rate (as well as increasing velocities and pitches).
Minimal Loops: minimalloops.txt
Automated composition of a continuous melody in looping ("minimal") style.
Graphic display of incoming MIDI pitch numbers.
Example programs from class on February 1, 2007
Using a dial for linear amplitude control.
Using a dial for amplitude control by decibels.
Using a slider for a linear crossfade between two sounds.
The following "playguitar" programs use some audio files of guitar notes, which can be found below.
Transpose a soundfile by changing the playback speed.
Transpose a soundfile by changing the playback speed relative to the difference between the played MIDI key and the known pitch of the recorded sample.
Cue up multiple soundfiles in a single sfplay~ object, and keep a small database of the cue number and transposition necessary to play the right sample with the right speed, based on the difference between the played MIDI key and the known pitch of the recorded sample.
Use coll to store a sequence of complex messages.
Example programs from class on February 6, 2007
Test the effect of delay between ears on your sense of the directionality of a sound.
Test the effect of amplitude disparity between ears on your sense of the directionality of a sound.
Straight linear crossfade between two speakers.
Crossfade between two speakers, using the square root of the relative amplitudes in order to maintain a constant intensity from the two channels.
Constant intensity crossfade between two speakers, using table lookup (phase offset within 1/4 of a stored sinusoid) instead of square root calculations.
Timed movement within a stereo field, encapsulated as a subpatch.
Example programs from class on February 20, 2007
Adjust the balance between two sounds and mix them together.
Adjust (pan) the distribution of a single sound source between two speakers, maintaining constant intensity regardless of the panning.
Delay and echo effects using tapin~/tapout~. (Requires the pan~ subpatch provided above.)
Comb filtering (with sweeping delay time) using comb~.
Flanging (continuously modulated delay time) with control over modulation rate and depth and the mixture of unaltered (dry) and flanged (wet) sound. (Requires the mix~ subpatch provided above.)
Example programs from class on February 22, 2007
Try different filter types and settings, using the biquad~ and filtergraph~ objects.
Shows how a synthesizer might use line-segment control functions (a.k.a. ADR or ADSR envelopes) to give character to a sound by sweeping a filter.
Various other example programs
constantpowerpanning: constant-power panning
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 a 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.
Here are some mono AIFF files of isolated notes played on a classical guitar, which might be useful for experimenting with sampling synthesis, and which are called for in the example programs from class on February 1, listed above.
E1.aiff A1.aiff D2.aiff G2.aiff B2.aiff E3.aiff A3.aiff D4.aiff
Bibliography of Other Relevant Publications
Useful Audio Software
Other Online Resources
Notes from Class Sessions
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.
The professor's research page from this course as it was taught in Winter 2005 contains examples of basic audio programming principles demonstrated in "C" and in Max/MSP.
The professor's example page from the COSMOS 2005 summer course in computer music and computer graphics contains examples of many basic audio programming tasks implemented in Max/MSP.
The professor's research page from this course as it was taught in Winter 2006 contains examples of basic audio programming principles demonstrated in "C" and in Max/MSP.
This page is for Music 147 (ICS 180, ECE 195, Music 215, ACE 277), Computer Audio and Music Programming, offered Winter 2007 at UCI.