This page was last modified on February 28, 2007.

Christopher Dobrian

Music 147 Research Page

Christopher Dobrian


This page contains links to supporting materials and instructive examples for students in Music 147 (CompSci 190, EECS 195, ACE 277), Computer Audio and Music Programming, taught winter quarter 2007 at the University of California, Irvine.


Articles

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

Example Programs in C

Example Programs in Max/MSP

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.

Vibrato: vibrato.txt
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

Counting: counting.txt
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.

Crescendo: crescendo.txt
The same linear succession of numbers to produce increasing velocities and pitches.

Accelerando: accelerando.txt
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.

Xylophone: xylophone.txt
Graphic display of incoming MIDI pitch numbers.

Example programs from class on February 1, 2007

volume01: volume01.txt
Using a dial for linear amplitude control.

volume02: volume02.txt
Using a dial for amplitude control by decibels.

xfade: xfade.txt
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.

playguitar01: playguitar01.txt
Transpose a soundfile by changing the playback speed.

playguitar01b: playguitar01b.txt
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.

playguitar02: playguitar02.txt
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.

usingcoll: usingcoll.txt
Use coll to store a sequence of complex messages.

Example programs from class on February 6, 2007

testITD: testITD.txt
Test the effect of delay between ears on your sense of the directionality of a sound.

testIID: testIID.txt
Test the effect of amplitude disparity between ears on your sense of the directionality of a sound.

linearpanning: linearpanning.txt
Straight linear crossfade between two speakers.

constantintensitypanning: constantintensitypanning.txt
Crossfade between two speakers, using the square root of the relative amplitudes in order to maintain a constant intensity from the two channels.

constantintensitypanning2: constantintensitypanning2.txt
Constant intensity crossfade between two speakers, using table lookup (phase offset within 1/4 of a stored sinusoid) instead of square root calculations.

constantintensitypanning3: constantintensitypanning3.txt
Timed movement within a stereo field, encapsulated as a subpatch.

Example programs from class on February 20, 2007

mix~: mix~.txt
Adjust the balance between two sounds and mix them together.

pan~: pan~.txt
Adjust (pan) the distribution of a single sound source between two speakers, maintaining constant intensity regardless of the panning.

delayer~: delayer~.txt
Delay and echo effects using tapin~/tapout~. (Requires the pan~ subpatch provided above.)

comber~: comber~.txt
Comb filtering (with sweeping delay time) using comb~.

flanger~: flanger~.txt
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

tryfilters: tryfilters.txt
Try different filter types and settings, using the biquad~ and filtergraph~ objects.

filterandampenvelopes: filterandampenvelopes.txt
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


Sound Files

MP3

No MP3 sound files are posted yet.

AIFF

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


References

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.

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.

Christopher Dobrian
dobrian@uci.edu