Click on the link below to watch a video introduction to MAX/MSP by Jamie Lidell
What's With the Name?
Max/MSP/Jitter is two things:
- Max, a graphical programming environment that provides user interface, timing, communications, and MIDI support
- MSP, for real-time audio synthesis and DSP
Max users are people who want to do things that go beyond the limitations of normal software. Max is a visual programming language - you connect objects together with patch cords to design what you want. For a short movie showing how this process works, click here.
While people have used Max to create a wide variety of applications, it's primarily designed to handle the basic elements of media: time, interactivity, and control.
Working with time is easier in Max than traditional programming because you use objects to create visual "timing machines" whose behavior you can see, hear, and modify as they operate.
In Max, the basic unit of time is milliseconds, but you can also use metrical time (for example, bars and beats). In Max, everything you create runs at the same time, something that is very hard to do in a traditional language. In addition to the metro object shown above, Max features timing objects that delay, quantize, measure time intervals, and perform time-based filtering. Max's unified notion of control based on numbers and events permits you to work with time in an intuitive and consistent way.
Working with interactivity is easier in Max because you can design interfaces visually, and the interfaces are then part of the program itself. For example, controls the timing and transport of the timing example above.
Max contains a rich set of user interface tools, including dials, buttons, menus, and text editors. At a deeper level, it's possible to control the entire user experience with cross-platform support for full-screen interfaces, HI devices, Quicktime video, and an embedded web browser. You can even script Max to construct interfaces dynamically.
In Max everything can be connected to everything, because everything speaks numbers. Another way to say this is that modularity is a core design principle of everything in the software.
Max can control MIDI devices, serial devices, send data over a network, and handle user input devices. Any source of control is easily connected to anything you want to control. Most commonly, however, Max's powerful control features are applied to audio via MSP and visual media with Jitter. And MSP and Jitter offer their own control possibilities, from audio signal analyzers to video tracking and device support.
MSP gives you the building blocks of a synthesis and DSP language in visual form. But more importantly, MSP permits synthesis and DSP to be controlled in expressive and powerful ways. The fact is, there are only so many ways to make sound, but there an unlimited variety of ways to control sound, due the way MSP's audio objects work together with Max's timing, control, and user interface tools.
At its most basic level, MSP offers the basic building blocks for synthesis and audio processing: oscillators, filters, delays, and envelopes. In Max 5, we've added the ability to specify the time values of envelopes and phasors in tempo-relative units. The ability to combine low- and high-level components is one of the unique aspects of working with MSP.
Sampling, Recording, and Playback
MSP provides a group of objects that work together for sampling and sample playback. All use the buffer object that manages sample buffers up to four channels. You can play samples out of a buffer in multiple ways, record into a buffer, or use a sample buffer as the impulse response for a filter. Standard audio file formats are supported for both reading and writing sample buffers. MSP provides hard-disk based recording and playback, supporting files of up to eight channels. Your computer's performance is the limit to the number of players and recorders you can use simultaneously. Plus it's easy to capture the sound you're producing to a multi-channel file.
MSP supports up to 512 input and output channels. On the Mac, MSP provides support for Core Audio and on Windows, there is ASIO, DirectSound, and MME support. MSP can be both a ReWire host and client, and it is a highly flexible host for VST plug-ins. Max 5 adds host-based synchronization for VST plug-ins tied to its new tempo-based timing system.
MSP objects for audio signal display include an oscilloscope, spectral display, level meters, waveform display, and a sonogram. You can use faders with internal smoothing, design multi-band filters graphically and edit functions with arbitrary numbers of breakpoints. Plus, since it's easy to convert between audio signals and scalar values, anything in the rich Max user interface toolkit can be applied to audio control and display. In Max 5, it's easy to find out the levels of any audio signal with the new signal probe.
The poly object lets you use multiple copies of any patcher you make. It supports output mixing, note allocation and voice stealing. And in Max 5, the MSP poly object supports dynamic patch loading and voice allocation, and can run patchers in different threads to support multiple processors.
MSP includes support for spectral domain processing with FFTs as well as a means to run patchers synchronized with spectral domain processing. A number of examples including a phase vocoder sampler show how to take advantage of this powerful technology. MSP also comes with highly configurable versions of special-purpose processing elements including a multi-band compressor, pitch shifter, and an oscillator bank synthesizer. MSP also combines nicely with Jitter's matrix data processing, so you can apply "visual" signal processing techniques to audio.