newnotback.jpg (880 bytes)
sidebackmini.jpg (912 bytes)

                                            
                                   
Max/MSP

 

sidebackmini.jpg (912 bytes)


What is Max?

Max is a graphical programming environment for music and media applications. It currently runs on the Mac OS. The Windows version is in development and will be released this year. One of the main goals of Max is to let you control anything with anything. For instance, you can use MIDI to control a laserdisk player, or mouse movement to control the playback of a Quicktime movie. Max excels as a way to customize the logic of building an interface to interactive media. It lets you schedule events with millisecond accuracy, create complex mappings for incoming data, and run a large number of operations in parallel.

Cycling '74 released Max 4, the first major upgrade to the software in almost five years, which features extensive new user-interface building tools and advanced features such as scripting and high-precision scheduling.

Building applications with Max is fun and interactive. You create programs by wiring together objects. The moment you connect the wire, the program is working. If it doesn't work the way you want, just try something else. For example, here's a very simple program that makes an awful racket by letting you play MIDI notes as fast as you can move the onscreen slider.


maxss01.jpg (18888 bytes)

The boxes labelled makenote and noteout above are objects, as is the blue slider. The wires connecting them send numbers; the numbers flow from top to bottom. In the above example, when you move the knob of the slider, a number comes out the bottom of the slider, travels down the wire into the makenote object, causing numbers to come out both the left and right outputs of makenote. These flow to the noteout object, which interprets the numbers as specifying a MIDI note event, which it formats and sends to a MIDI device.

With the addition of MSP, Max can handle audio as well as MIDI.

One of the best things about Max is that it can be easily extended with a well-documented interface for writing new objects (we call them external objects). Hundreds and hundreds of external objects have been written since Max's initial release. Our MSP audio objects are a good example. Other large collections of objects include PeRColate, a large suite of free experimental audio objects that work with MSP, nato.0+55, a set of modular video processing and Quicktime control objects, and the MegaMax collection, a set of enhanced user-interface construction tools.

The fact that you can extend Max may not seem important if you're not a C programmer, but the sizable collection of mostly freely available third-party Max resources means it's likely that someone else has already made Max work with what you need, whether it's an interface for a hardware device or a connection to an obscure part of the operating system software. We've made an attempt to collect third-party Max resources in the annotated Max/MSP resource guide.

Max is a very popular way to experiment with new ways of controlling your computer. The resource guide lists numerous hardware products that work well with Max. Some of them let you build your own control devices and instruments, others are ready-made devices with extensive possible applications.

A little historical information: Max was originally developed at IRCAM, a music research institute in Paris, France, by Miller Puckette. Max is named for Max Mathews, a pioneer of computer music who worked with Miller Puckette in developing a scheduling algorithm similar to that used in the software. Max was further developed for commercial release by David Zicarelli and published by Opcode Systems until 1999. Cycling '74, founded by Zicarelli in 1997, has been developing and supporting Max and is now its exclusive publisher.

What's Included with Max?

Max includes over 200 objects that cover the following areas:

  • User interface tools: sliders, buttons, number display boxes, pop-up menus, dials, switches, picture-based controls and sliders, keyboards, import movies and graphics files (using Quicktime), matrix switch control, text editing, dialog boxes, color selection, radio buttons and checkboxes, menu bar customization, window customization.
  • MIDI input and output: notes, controllers, pitch bend, sequence recording and playback, MIDI files, parsing and assembly of MIDI messages, system exclusive, easy handling of note-offs, OMS device names, patch names, and note names.
  • Scheduling: metronomes, delays, pipes, processing priority levels. Scheduler is millisecond-accurate; when used with MSP it can be accurate to two samples.
  • Arithmetic and Logic: basic arithmetic, C-like expressions, trigonometric and transcendental functions, comparisons, minimum/maximum, operations on vectors, random number generators, counters, bitwise operators, coordinate transforms.
  • Devices: support for MIDI sample dump, serial devices, CD audio, Apple DVD player application
  • Quicktime: play any file readable by Quicktime, controllable scrubbing, looping, movie sequencing, matrix transforms, file preview
  • Logic: counters, gates, switches, if/then/else, message routing
  • Data structures: tables, collections, functions, data capture
  • Sequencing: timeline, graphical sequence display, multi-track recorder, score following

Other Max features include a freely distributable runtime version, the ability to transform programs into standalone applications with no licensing fees, and a trace feature for debugging and understanding data flow in Max programs. There is also an elegant on-line help system; a working example that demonstrates each object is just a click away.

Max includes 850 pages of documentation including 47 interactive tutorials, reference information on each object, and articles on special topics such as MIDI, debugging, and program efficiency.

What is Max/MSP?

Max/MSP combines the Max graphical programming environment with MSP audio extensions. Together you'll have close to 400 objects, the building blocks of a complete audio application development environment.

Max/MSP costs only a little more than Max alone, so if you're at all interested in audio processing, we think you'll want to consider purchasing the combined package. The current version, Max 4 + MSP 2, is a substantial upgrade over previous versions. If you're familiar with the software, you can read more about the features of current version.

In Max, you build programs by connecting graphical objects together. Some of these objects perform calculations and others make up the user interface of your program. MSP adds a large set of objects that you connect together to make audio patches where signals flow from one object to the next. The concept may be familiar to you from modular synthesizers, either the real ones or the software imitations. But MSP lets you work at a level of detail that is unmatched by other software synthesizers. At the same time, its intuitive interface is far easier to learn than text-based software synthesis programs. For instance, the filtergraph~ object shown below allows you to design seven different types of filters graphically.

maxss02.jpg (9505 bytes)

Using Max/MSP

To build a program with Max/MSP you need to a couple of simple things. First, that there are two kinds of objects: regular Max objects that deal with events (such as MIDI and timing pulses), and MSP audio objects that deal with signals. The example shown below performs simple FM synthesis controllable from MIDI. The plain black patch cords handle events, and the black-and-yellow striped patch cords carry audio signals. The objects with a tilde (~) character at the end are signal objects, the others are Max objects.

maxss03.jpg (32029 bytes)


How does this patch work? The audio and control signals flow from top to bottom. At the top, MIDI notes are received by the notein object. The MIDI pitch number is converted to frequency to control two oscillators, a carrier (the green cycle~) and a modulator (the blue cycle~). The base frequency and the modulation amount are combined by the orange +~ object to create FM.

The modulation index is scaled by the graphic function envelopes. Using the select 0, the attack envelope is selected when a MIDI note-on is received and the velocity is non-zero, while the release envelope is selected when a note-off is received. These envelopes are sent to the melon-colored line~ below them, which controls both the modulation index and the overall amplitude. The line~ goes into a multipler *~, ramping the output signal over time to create the envelope. Finally, the overall output is logarithmically scaled by the lowest *~ based on the input velocity, calculated by the linedrive object. You can listen to the sound by clicking on the speaker button ezdac~, which also serves as the audio output object. This example should give you some idea of how Max/MSP integrates seamlessly into Max, and how it's easy to work with audio signal networks and control networks at the same time.

maxss04.jpg (6904 bytes)

Education

Max is a popular basis for many electronic and computer music classes at the university level. Students find they can be creative with it immediately while learning how to work with a variety of interactive media. Max/MSP can be used for teaching the basics of sound, synthesis, and signal processing. With its graphical oscilloscope, waveform editor, and filter design objects, you can see up close what you're hearing. Max/MSP users work through interactive experimentation, just as you would in a classic analog studio. The 560-page MSP manual, with 31 interactive tutorials, can serve as a basic text in the fundamentals of audio. (Max/MSP has over 1500 pages of documentation.)

Sound Design

Max/MSP is a sound design tool that lets you experiment with techniques that other hardware and software have declared to be off-limits. Rather than accept the standard parameter ranges chosen for you by a synthesizer manufacturer or audio editing program, you can try any value and change it in any way you see fit.

maxss05.jpg (7869 bytes)

Unlike a text-based synthesis language, the feedback you get from Max/MSP is immediate and intuitive. We would also argue that just as the notion of interacting with a compositional process (as in M) can be rewarding and effective, real-time interaction with an audio process you design can steer you into new universe of sounds. You could, for example, loop a disk-based audio file while adjusting how you process it. When it comes time to save your work, you can record back into an audio file. Up to 16 tracks are supported in most popular formats with up to 64-bit resolution.

maxss06.jpg (7621 bytes)
 

Performance

Max/MSP lets you apply the power of the Max environment to the details of synthesis and signal processing. It is particularly well-suited to interactive audio performance. You can build your own custom environment for performing and tour the world with little more than a laptop. The ability to trigger and manipulate sounds and audio files in a stunning variety of ways make Max/MSP a formidable sampler.

 

Audio Features and Compatibility

 

MSP features over 170 audio objects in the following categories:

  • Audio Routing: audio gates, switches, routing matrix
  • Analysis: Convert audio signals to events, detect edges, zero-crossings, RMS averaging, peak detection, signal capture
  • Audio File Recording and Playback: includes looping, varispeed, sample-accurate cue creation and triggering, audio file information
  • Audio Visualization: filter design, signal level meter, oscilloscope, waveform display and editing
  • Filters and Delays: recursive and non-recursive (FIR) filters, resonant filterbank, state-variable filter, comb filters, allpass filter, phase shifter, interpolating delay with feedback
  • FFT Processing: forward and inverse FFT, manager for spectral processing applications with windowing and overlap, frame-based calucations, polar-to-Cartesian coordinate transformation
  • Functions: sample-and-hold, breakpoint functions, non-linear functions, function editor, counters, noise-generators, random line-segment generators, windowing functions
  • Input/Output: audio input, audio output, I/O channel remapping, host VST plug-ins, host ReWire devices, play sample-accurate digital audio direct from CD
  • Modifiers: sample-word and bit-depth reduction, clipping, downsampling, distortion, phase wrapping, phase distortion, smoothing, rounding, truncation, sample-and-hold
  • Operators: scaling, offset, divide, trigonometric and transcendental functions, bitwise operators, sample comparisons
  • Plug-in Support: parameter management, define inputs and outputs, plug-in configuration management, preset storage, host synchronization support, parameter modulation, parameter morphing
  • Polyphony: manager for making any algorithm polyphonic, control CPU resources by switching voices on and off
  • Sampling: sample import and export, indexed playback, interpolated playback, recording, granular sampling, looping, extract sample info
  • Synthesis: wavetable oscillators, ramp generators, oscillator banks, FM applications

Max/MSP supports a number of audio I/O standards, including:

  • Apple Sound Manager
  • ASIO (an audio hardware interface specification created by Steinberg), with up to 512 input and output channels
  • VST (the Max/MSP application can operate as a VST plug-in, and it hosts most VST effect and instrument plug-ins)
  • DirectConnect (for sending audio into ProTools)
  • ReWire (for hosting ReWire device applications such as software synthesizers...Max/MSP can also be a ReWire device hosted by applications such as Cubase and Digital Peformer)
  • Reads and writes AIFF, Sound Designer II, WAVE, NeXT/Sun, and raw audio file formats from 8 to 64-bit resolution
  • MP3 and movie soundtrack import using QuickTime
  • Non-real-time operation

The DSP Status window (shown below) lets you monitor and control all audio parameters. The fact that the DSP Status window was built in Max/MSP means you can integrate this control into your own applications.


maxss07.jpg (40828 bytes)


   

   |Home|Contact|Forum|About|Events|Getting Here|Resources|                                              

newnotback.jpg (882 bytes)

leg.jpg (929 bytes)                                 design copyright savedbytechnology 2002©                                 leg.jpg (929 bytes)