(maxmsp) MSP and audio-rate communication

Moving Max into the digital audio realm: MSP

The MSP part of Max stands for Max Signal Processing (or the initials of one its creators, Miller S. Puckette). It extends the original functionality of Max by adding objects for audio synthesis and signal processing. As you wade into the realm of digital audio in MaxMSP, you need to keep in mind some important concepts.

Control-Rate and Audio-Rate Communication

So far we’ve only been dealing with control-rate messages between max objects. Control-rate messages, like MIDI commands, happen at specific moments. Communication stops when the message is sent. Audio-rate communication is continuous, effectively at the sampling rate. (more on this evasiveness later)

Control-rate message connections are represented with thin, black patch cords. Audio-rate connections are two-colored (default is yellow and black) and thicker than control-rate connections.

Audio Objects

Audio objects end with a tilde (~), which resembles a sine wave. Audio objects always output an audio-rate signal, but they may accept control-rate and/or audio-rate inputs.

DAC and ADC

While control-rate messages are always being processed, audio processing only takes place when the MaxMSP audio system is turned on. Audio processing is turned on and off through messages to the dac~ and adc~ objects (digital-to-analog converter and analog-to-digital converter), or by clicking on the ezdac~ or ezadc~ objects. If your patcher has a dac/adc/ez object you can also turn audio processing on and off in the DSP Status window, accessed via the Options menu. Audio processing will continue in unlocked patchers as long as the audio system is still on.

Discontinuities = Clicks

Any discontinuity in a audio signal will be heard as an audible click in the audio. For example, if you instantaneously change the amplitude of a signal by 50% you will hear a pop. Such changes require a (short) ramp, or transition. Some objects have this ramp time function built into the object as an attribute property. Often you will use the line~ object to create these ramps.

Basic Objects

The most basic audio objects we will use at this point are:

  • ezdac~, ezadc~, dac~, adc~
  • line~
  • cycle~ (sine oscillator)
  • saw~ (sawtooth oscillator)
  • *~ (audio-rate multiplication, for changing the amplitude of signals)

Floating-Point Messages Dominate

Unlike MIDI, which relies primarily on integer numbers between 0 and 127, digital audio relies much more heavily (almost exclusively) on floating-point number messages with a much wider range of values. Get used to using floating-point number boxes as your default selection.