Computer Music and Computer Graphics


Computer Music

Classes and Labs

Week 1

Monday, July 11: Class 10:30-11:45

Definitions of "sound", "music", and "noise"
What is digital audio?
Making sound in MSP

Tuesday, July 12: Lab 1:15-4:00

Read pages 9-12 and 17-23 of "Max Getting Started" (Max45GettingStarted.pdf). (Skip the section on Attributes on pages 12-17 for now.)

Read as many Tutorials as you can in "Max Tutorials and Topics" (Max45TutorialsAndTopics.pdf), trying out the corresponding tutorial patches as you read. (There is a tutorial patch for every Tutorial chapter. The tutorial patches are located in "Macintosh HD/Applications/Max 4.5/Documentation/Tutorial Patches/Max Tutorials/".) It would be ideal to get as far as Tutorial 11, but just do as many as you can.

Try out the two example programs oscillator and fileplayer. (To try each of these example programs, save the .txt file to your hard disk, then open it from within the Max application.) For "oscillator", listen to different frequencies to get a sense of how they correspond to most musical sounds you know. For "fileplayer", see if you can solve one of these questions: 1) Based on what you've seen in "oscillator", how could you make a volume control for "fileplayer"? 2) How can you make sfplay~ play a stereo soundfile? You will probably need to consult the help file or the "MSP Reference" (MSP45ReferenceManual.pdf) to figure this out. 3) What is the second inlet of sfplay~ for? Can you figure out a way to use it to make strange or interesting sounds?

Wednesday, July 13: Class 10:30-11:45

Physics, acoustics, and psychoacoustics of sound
Mathematics of pitch and loudness effects
Varying sounds in MSP

Thursday, July 14: Lab 1:15-4:00

Read the article "Digital Audio" by Christopher Dobrian.

Read Tutorials 1, 2, 3, 13, 14, and 17 in "MSP Tutorials and Topics" (MSP45TutorialsAndTopics.pdf), trying out the corresponding tutorial patches as you read. (There is a tutorial patch for every Tutorial chapter. The tutorial patches are located in "Macintosh HD/Applications/Max 4.5/Documentation/Tutorial Patches/MSP Tutorials/".) Do as many of these as you can.

Try to solve the exercise at the end of MSP Tutorial 17. (Or at least try to understand thoroughly the solution provided there.)

Friday, July 15: Class 10:30-11:45

Review and questions regarding digital audio and MSP
Using numbers to express sound and music
Introduction to MIDI

Week 2

Monday, July 18: Class 10:30-11:45

Reconciling different ranges of numbers (mapping formulae and lookup tables)
Numerical representations of pitch and rhythm
Control functions for music

Tuesday, July 19: Lab 1:15-4:00

There are different ranges of numbers that you might want to use in Max. For example, most MIDI data that you want to send (or that you receive from a keyboard) is in the range 0 to 127 (integers); the range of pitches from cello low C to flute high C, however, is from 36 to 96 (integers); the range of amplitudes for MSP signals that you want to hear is usually 0 to 1 (fractional values); the range of frequencies corresponding to cello low C and flute high C, though, is from about 65.4 to 2093.0; the range of most Jitter values is from 0 to 1 (fractional values), but the range of cells in a matrix might go from 0 to 319 (integers in the x dimension) or 0 to 239 (integers in the y dimension). You may need to make a translation (a mapping) from one range to another.

Create for yourself a situation in which you need to map one range of values to another, and see if you can make it work in Max. For example, map the range of pitch classes (C, C#, D, etc. represented as integers from 0 to 11) into the range of hue angles (for the hue_angle attribute of the jit.hue object, from 0 to 359). Or map the range of incoming audio amplitudes (from adc~, in the fractional range 0 to 1) inversely to the brightness of a video (the brightness attribute of the jit.brcosa object, from 1=normal brightness down to 0=blackness). Think up other correspondences you would like to try, and try to build them in Max.

For some examples, you might want to look at MSP Tutorial 18 (Mapping MIDI to MSP) and Jitter Tutorial 26j (MIDI Control).

Wednesday, July 20: Class 10:30-11:45

Correspondences between different media
Visualizing music

Thursday, July 21: Lab 1:15-4:00

Experiment with finding correlations between controlling data and the musical, audio, or video effects they control. Control information could come (for example) from the Macintosh keyboard, the mouse, a MIDI instrument, an audio signal (such as a sine wave or complex waveform at subaudio rate), a timed process, a mathematical formula, etc., and you could assign that to control the intensity of a particular effect in Jitter or MSP.

I have prepared a list of potential sources of numeric data in Max, and to demonstrate the things in that list I have also made a Max patch showing sources of numeric data. I have also made a list of potential destinations for numeric data in Max - characteristics of music, sound, or video that you might want to control.

Choose a source of numbers, and a thing you want to control with those numbers, and make a Max patch that maps those numbers into the appropriate range to control some form of media.

If you cannot think of a good idea for your experiment, here are some ideas you could try, to get you started:

Friday, July 22: Class 10:30-11:45

MIDI under the hood - technical details of MIDI
Questions and discussion regarding project ideas

Week 3

Monday, July 25: Class 10:30-11:45

Basic audio effects
(delay, echo, panning, tremolo, ring modulation, flanging, etc.)

Tuesday, July 26: Lab 1:15-4:00

Try some of the audio effects demonstrated in Monday's class. To read details about them, you might want to look at MSP tutorials 8 (tremolo and ring modulation), 10 (vibrato and frequency modulation), and 27 through 31 (delay, delay with feedback, chorus, flange, comb filter).

Take a look at the example files that demonstrate the principles demonstrated in Monday's class. Those files are synthesizer.txt, modulatedsound.txt, and delay+feedback.txt. Try changing the parameter values to get different effects. Can you think of other aspects of sound you might want to modulate? Can you imagine a way to use a low-frequency cycle~ (plus a snapshot~ object) to modify some characteristic of a video or an animation at the same time as you modify the sound?

Here's a math/programming exercise you can try, if you want to to challenge yourself: Can you use integer numbers from 0 to 127 -- like values coming from a MIDI pitchbend wheel, with 64 being normal -- to change the rate of a sound you're playing back (either with sfplay~, or with buffer~ and groove~)? Can you do the correct math so that a pitchbend value of 0 makes the sound play back a whole tone lower, and a value of 127 makes the sound play back a whole tone higher?

Continue to experiment with finding correlations between controlling information and audio effects, related to the mapping ideas explored last week.

Wednesday, July 27: Class 10:30-11:45

Basic principles of probability
Applications of probability in music
Introduction to algorithmic composition

Thursday, July 28: Lab 1:15-4:00


Friday, July 29: Class 10:30-11:45

Algorithmic composition
Algorithmic improvisation
Structuring a complex program in Max

Week 4

Monday, August 1: Class 10:30-11:45

Alternative controllers
The future of interactive performance

Tuesday, August 2: Lab 1:15-4:00

Project final preparations
Presentation dress rehearsals

Wednesday, August 3: Class 10:30-11:45

Last day of instruction -
- Final project discussions
- Review

Thursday, August 4: Lab 1:15-4:00


Friday, August 5: Class 10:30-11:45

No class meeting.

This page was last modified July 25, 2005.
Christopher Dobrian