DMP / Synth Theory

Course Outline (Spring 2000)

• 00/01/19: First class
• C Review (3 weeks)
• Writing Max external objects (3 weeks)
• Max External Tutorial 2.22 PDF PS
• 00/02/21-25: Audition week
• Writing Pd external objects (1 week)
• Converting Pd objects to Max objects (1 week)
• 00/03/20-24: Spring Break
• 00/04/27: Sockets
• 00/05/04: Shared Memory
• 00/05/17: Final project due
C style tips
PD Standard Library
PerColate
Standard MIDI File format
Writing Efficient Programs - 27 Rules
Bentley's Rules The Art of Assembly Language Programming
Assignment #5 (due 00/03/09) Submit hardcopy, the source, and the object (314 Mac).
1. Write a meter_metronome MAX external:
• Started by a bang or "start" message.
• Stopped by a "stop" message
• Adujstable tempo via the right inlet. Use beats per minute (float or int) for the tempo.
• The left outlet should send a bang per measure, where number of beats is specified as an argument (defaults to 4?)
• A variable number of outlets should be created, depending on the number of beats, so that bangs are sent out on each outlet successively (like christmas lights).
• There should be two optional arguments: First argument should be number of beats and the second argument should be the starting tempo.
2. Write a plus~ MSP external that behave exactly like the +~ external.
3. Write a square~ MSP external that generates true square waves. It should have an inlet to change frequency and another inlet for variable duty cycle (range of 0 to 1, specifying the proportion of the high level to the low level). A normal square wave will have 0.5 duty cycle.

Assignment #4 (due 00/03/01) Submit hardcopy, the source, and the object (314 Mac)..

1. Write an external that is functionally same as the "-" (minus) object in MAX. It should hae "assist" strings.
2. Write an external avg which takes a list of integer or floating-point numbers and output the average (floating-point). The result should be internally stored so that a bang input will also output the result. The maximum list (array) size of the input should be at least 30.
3. Write an external movavg that calculates and outputs the moving average of int or float input. The number of terms used in the average (N) should be speicified in the argument of movavg or if not specified, defaults to a certain number. Also provide a right inlet to change the number of terms (N) to be used. Make a sensible strategy when the number of elements in the list is less than N. Hint: You should use a circular queue.

Ichiro Fujinaga 2000.03.02