Max 8 continues the evolution of Cycling '74's flagship media programming environment as it progresses through what must be, in software terms, a comfortable but active middle age. To strain the analogy somewhat, Max entered adulthood with version 5 (reviewed in August 2008), which delivered a new, flexible, user interface to its graphical programming features. As well as offering functional improvements, Max 6 and Max 7 each did some redecorating, resulting in a distinct visual appearance for each revision. So, what of Max 8?
On first appearance, nothing much seems to have happened: patcher windows are still, by default, pale grey with a dark grey surround, but the dark greys are noticeably darker, improving contrast and adding some visual 'punch'. This seems especially effective in text-rich areas like the console, reference and property inspector panes. I'm still not a massive fan of the default colour scheme and font, but the increased contrast helps. Of course, colours and fonts can always be customised in patchers, and Max 8 offers a handful of overall application colour 'styles', including the Max 7 look if you're particularly attached to it.
Working with Max 8 doesn't initially seem that different to Max 7: the icons in the toolbars haven't changed that much, and neither have the various pull-down and pop-up menus. There are patching improvements, but the refinements are, by and large, subtle, and nothing jumps xout in the interface. To get the most from Max 8, you'll need to skim through the release documentation — or read the rest of this article!
With Max 8 comes first-class support for multi-channel audio processing, courtesy of a framework and set of objects that go under the collective banner MC. Of course, Max has been able to do multi-channel audio for as long as it's been able to do audio, with objects for taking in and putting out several channels at once, and for recording and playing multi-channel files, but MC addresses issues which, in retrospect, were obvious shortcomings.
Firstly, it's long been a topic of discussion in mailing lists that Max's audio patch cords are resolutely monophonic, in an era where production is at least stereo and often involves surround sound, Ambisonic mixing and so on. Monophonic patching gets you a fair way (and modular synthesizer users don't seem to complain that much), but after you've done a fair bit of routing patch cords eight or 16 at a time for a multi-speaker installation, patience starts to wear a bit thin. So at the very least, there's an argument for multi-channel cable 'snakes' to tidy things up. (Even if you're working in stereo, that's your patching effort potentially cut in half.)
Secondly, Max's support for polyphonic processing has been a little clunky, consisting only of a single 'poly~' object which loads and replicates a patcher into a multi-voice framework with the kinds of voice control you'd experience on a polyphonic synthesizer. This works surprisingly well, but requires an extra patcher file, and editing can be awkward.
Thirdly, there are lots of applications that make use of potentially large numbers of identical audio sources: anything from classic additive synthesis and granular effects to analogue-style unison mode. Modern computers can support hundreds or thousands of audio generators at once, so there's potential for some mechanism that can replicate a source at scale and configure all the copies in some unified manner.
Let's start with multi-channel cables (we'll call them MC for short). The object 'mc.pack~' converts a set of single-channel cables into a single MC one, while 'mc.unpack~' does the opposite. Visually, MC cables are a little thicker than their monophonic siblings, and are tinted blue, although the colours can be customised. There are also objects for combining, splitting and interleaving MC signals in various ways.
The objects which can process MC audio have names beginning with 'mc'. In the screen I've captured, 'mc.mixdown~' is a mixer which takes an MC input of any number of channels, and delivers an MC output with (generally) a smaller number of channels, where the input signals are distributed to the outputs in some manner (options include linear or constant-power panning, or wrapping around of the inputs to the outputs). A second MC input to 'mc.mixdown~' allows panning to be controlled dynamically.
It's probably unwise to connect MC patch cords to Max objects that aren't MC aware, although it doesn't seem to cause any harm: all but the first channel are discarded. Similarly, feeding a single channel into an MC object will cause it to be duplicated into however many channels the object expects, but it's best not to mix and match the two patch cord types. In the MC world, 'thinner' MC feeds are duplicated in a cycle to attach to 'fatter' object inputs.
The screen shows some LED level meters taking MC feeds. Objects which give graphical displays of signals have been augmented to process MC inputs, and will adapt their appearance accordingly. (I was amused to notice that the old-style 'mechanical' VU meter is also MC-aware, and will sprout additional needles when it needs to show several channels. The multi-channel oscilloscope is also rather impressive.) Mouse over an MC cord, and an icon pops up specifying how many channels it carries, while the signal probe pop-up window will show all of the channels in a stack.
Some graphical controls have MC variants for multi-channel operation: 'mc.gain~' is an entire block of faders, for example, and if you want the Ableton Live look there's an 'mc.live.gain~' variant of the combined fader and level meter.
MC is compatible with Max for Live, so even if your Ableton work is primarily stereo, you can drop into multi-channel operation internally within your devices. There are even MC versions of 'plugin~' and 'plugout~' if you want to do your patching entirely in the MC world. However, you will need a full Max 8 licence to patch with MC objects; if you only own Max for Live, you'll be able to use them but not make...