Advanced Multimedia Development


Course Outline for Fall 2006

Final Exam: 7 December 2006 8:45am in MTCL

09/05 Introduction: bang (.ppt) Assignment #1
09/12 Max externals (.ppt) (broken_diff.c) Assignment #2
09/19 Max atoms and list (minimum.c)(thru.c) Assignment #3
09/26 Max clocks (iterateIncomplete.c)(past.c)(mymetro.c)(vario.c) Assignment #4
10/03 Interrupts; Max proxies (proxies) Assignment #5
10/10 Thanksgiving: No class  
10/17 MSP externals (thru~ thrugain2~.c) Assignment #6
10/24 MSP oscillators ( Assignment #7

Schedulers ( (mySpikeTest)

11/07 Mid-term exam (missed)  

Mid-term exam

11/21 MSP modulators / filters (lpfixed~.c lp1~.c) Assignment #8
11/28 MSP Karplus-Strong / filters (myallpass~.c) ( (KS_no_filter~.c)  

MSP DFT/FFT (dft_Incomplete.c)
Max/MSP User interface
PD externals



Assignment #8 (Due 12/03 11:59pm)
  • Write a clone (alea~) of MSP object rand~ that linearly interpolates between two random numbers generated at the specified frequency.
  • Write an amplitude modulator object: am~. Should have three float or signal inlets: carrier frequency, modulating frequency and tremolo depth (see Tutorial: 09. Amplitude Modulation.pat).
  • Write a frequency modulator object: fm~. Should have three float or signal inlets: carrier frequency, harmonicity ratio, modulation index (see Tutorial: 11. FM synthesis.pat).

Assignment #7 (Due 10/30)
  • Write an oscillator with multiple harmonics with a list (and in the arguments) specifying strength of each harmonic. Be sure to normalize.
  • Write an oscillator with multiple harmonics (number of harmonics specified in the argument). Strength of each harmonic should be dynamically changed with inlets. Automatically adjust the overall gain. Overall phase should be adjustable. Create one wavetable once at creation.

Assignment #6 (Due 10/23)
  • Write a clone (mydiv~) of MSP /~ object.
  • Write a clone (mtos~) of MSP mstosamps~ object.
  • Write a clone (stom~) of MSP sampstoms~ object.
  • Write a clone (moyen~) of MSP average~ object (test_one). Make sure that the CPU usage is similar to "abolute" and "rms" modes (test with at least 10 copies of the object in your test patch) (test_many).

Assignment #5 (Due 10/16)
  • Write a clone (entonnoir) of Max object funnel (dynamically allocate structs that will store information for each inlet)
    • You may want to satrt with proxylist that sends out bangs
  • Write a clone (tuyau_proxy) of Max object pipe using proxy. Make sure that more than one number can be delayed at a time.

Assignment #4 (Due 10/03) Double points
  • Write a clone (delai) of Max object delay
  • Write a clone (tuyau) of Max object pipe; do not need to use proxy and the "clock" message need not be implemented
  • Write meter_metro
    Bang out on every beat from different outlets, up to 8 beats per measure. Default to 4.
    Start and stop via toggle or "start" and "stop" messages
    First argument: number of beats, second argument: tempo in beats per minute (both optional, but allow for first argument only)
    Right inlet, beats per minute (int or float)

Assignment #3 (Due 09/25)
Write the following Max object clones:
  • tondre (clip) [use outlet_new() and outlet_list()]
  • ivre (drunk) [use random()]
  • moyen (mean)

Please post one folder with your name that contains project folders

Assignment #2 (Due 09/18)

Write the following Max externals:

  • mult object that is similar toMax built-in * object including the same assist messages (integer only)
  • div object that is similar to Max built-in / object with assist messages, (floating point only; no need to exactly emulate the argument behavior).
  • power object that is similar to Max built-in pow object (integer and floating point)

Place copies of your project folders (project files, source, the object, and a test patch) on your web site (use Finder:File:Create Archive to create a zip file)

Assignment #1 (Due 09/11)

Subscribe to Max-msp mailing list

Build a simple homepage on

  • Basic personal info
  • Links to your classes
  • Place to post your assignments
  1. From your home directory, go to the subdirectory called: public_html (cd public_html)
  2. Edit the html file index.html (pico index.html)

Created: 2002.09.05 Modified: Ichiro Fujinaga
McGill Crest