MaxMSP is a visual programming language that helps you build complex, interactive programs without any prior experience writing code. MaxMSP is especially useful for building audio, MIDI, video, and graphics applications where user interaction is needed. This Instructable is part of a 3-part workshop I'm running at Women's Audio Mission, it's part one of three Instructables that I'll be publishing over the course of the next week. (Part 2 - intermediate MaxMSP) (Part 3 - getting Max to talk to hardware)
MaxMSP is split into several parts - "Max" handles discrete operations and MIDI, this is the easiest place to start getting familiar with the tool. "MSP" deals with signal processing and audio. And "Jitter" is for graphics rendering and video manipulation. This course will cover Max and MSP.
Here are some examples of awesome things you can do with Max. My favorite Max applications are the ones that incorporate some kind of hardware interface. There's tons of way to do this, here are a few:
ReacTIVision is a free, open source tool that communicates with MaxMSP and allows you to track objects with a camera by printing out and attaching small paper markers on them. The software tracks x and y position and rotation and it's great for incorporating real world objects into your MaxMSP patch and making table top interfaces. It was originally written for the ReacTable, a table top multitouch instrument:
Some examples of ReacTIVision and MaxMSP:
An interactive dining table (by my friend Evan!):
Table Top mixer:
Chain reaction arpeggiator (I don't think this actually used reacTIVision, but it could):
The XBox Kinect is a hackable depth sensing camera and gesture tracking device. Data from the Kinect can be imported into MaxMSP through an application called Synapse. Synapse allows you to track x, y, and z coordinates of each major joint of the body (head, elbow, hand, knee, etc). Here are some cool projects that use Max and the Kinect:
Little Boxes: interactive installation
Arduino is a tiny computer that can be programmed to control circuits in all kinds of crazy-cool projects. With the addition of Arduino, it's possible to extend your MaxMSP patches into the physical world. There are a lot of ways to get Arduino and Max to talk (I will definitely be writing an Instructable about this in the future), including MIDI, Serial, and any of the options listed on the Arduino website. Some options (like Arduino2Max) allow you to read directly from the Arduino pins, and others rely on USB communication. Here are some examples of projects that use a combination of MaxMSP and Arduino to facilitate unique physical interactions:
Fine Collection of Curious Sound Objects (this actually uses Processing instead of Max, but it could be done with Max)
Underwater - A realtime visualization of ocean data
There is a third type of MaxMSP object that I won't have time to get into here, but once you've got Max and MSP down you should check out Jitter. Jitter lets you manage video and graphics inside Max, so you can import data from a camera or create realtime visuals for your app.
Dyskograf - a drawing based sequencer:
Audio Interface with realtime video output
Interactive projection mapping
The MaKey MaKey is a usb device that you can clip to anything conductive to transform that thing into an interface. Essentially what it does is trick your computer into thinking that it is an external keyboard, then the things you clip to it become keys. You can read these commands using the "key" object in max, no external software required. This one is super easy and fun!
One last note: Pure Data is essentially the free, open source version of Max. The main ideas and most of the objects are nearly identical, though I've found that I prefer Max's interface a little better. But if you don't have the funds to shell out for a copy of Max, Pure Data is an excellent option.
Step 1: Example Projects - Max and MIDI
Chopin: as you play piano, the patch listens to what you're playing and plays an accompaniment:
Harmonic Table Sequencer: a 2D spatial sequencer based on the harmonic table