Max6

I guess MaxMSP doesn’t need much introduction around here. For ages computer musician, including me, are using this application for audio and data generation. With the just released version 6 Cycling74 doesn’t primarily focus on new objects (although there are a couple), but more on an enhanced audio engine, workflow improvements and a new addition to the former trinity of Max, MSP and Jitter called Gen~, which is basically a low level visual programming language residing within MaxMSP.
Workflow
The patching workflow enhancements are probably the first bits you’ll notice once you start Max6. Instead of the square look (pun not intended) of the rectangular patch cords, Max now features curved cords. This may look a little strange at the beginning, but felt a lot cleaner to me, when used it larger patches. It is now a lot easier to see feedback loops or generally just patch cords that connect to an object, which is located above the output. And if you don’t like it, you can easily go back to the old design.
An amazing add-on is the auto-completition feature that suggests objects while typing. While this was already available in a more rudimentary state in Max5, auto-completion now has a lot of additional – and very helpful features – such as brief object descriptions, suggestions for attributes and arguments as well as short-links to each object’s documentation. This is especially an advantage, if you just started using Max or are looking for a more esoteric object. Mousing over the left edge of an object, now gives you the possibility to directly choose from arguments, attributes, associated object and files that can be added to an object. This makes patching a lot quicker and the whole experience a little more streamlined.

I absolutely like the new integrated combined CPU meter and mixer that resides at the bottom of each patcher. This is especially interesting, if you are like me, using several different patches at once in a live setting. This way you can adjust the levels between different sound sources really easily. Plus, if you don’t need the patch, you can disable it all together and save precious CPU cycles. Unfortunately I haven’t found a way to control this via MIDI or OSC. This would make the whole system even more flexible in a live setting. On a similar tangent is the new debugging feature that color-codes the objects according to the amount of CPU, they are using. This is quite handy, when optimizing patches. A read out, that gives you an idea how much CPU the object is actually using, would have been helpful though and is missed clearly. The non-existent read-out leaves me in the dark a little too much for my taste. But anyways, this is still a good start in the right direction – and hopefully this numeric information will be added with a future version. And to be honest these workflow feature alone are worth the update for me.

Explorer
The new explorer/inspector window that docks onto the right side of the patch is a little bit of a double-edged sword. Although it seems to be quite handy most of the times to have the explorer, inspector and max-window directly attached to the patcher window, on smaller displays and with larger patches, this little box might take up a little bit too much space of my screen. Nevertheless, if not needed, it can be easily hidden, so it’s not that much of a big deal. Plus, the “old” way of using a floating Max and inspector window is still possible. For beginners, who are new to max or people, who don’t remember object names that well, the new explorer window is really helpful – especially since the brief description of the highlighted object in the database gives you a hint, if you are going for the correct object.

64 Bit Engine
One of the major improvements is probably the switch to a 64-bit audio engine. Especially the filters and oscillators sound a lot smoother. If, in the past, Max/MSP was easily prone to have a certain sound, the new engine now allows for anti-aliased filters and oscillators. You might not notice it in every patch, but once you are for example using FM synthesis the difference becomes apparent quite quickly. Unfortunately only the underlying engine is running in 64 bit, the application itself is still 32 bit. But as long as you don’t plan to build large samplers this shouldn’t be much of a problem.
Gen~
The optional Gen~ add-on provides an extra graphical programming language within Max. This way patches will be compiled, as if they were hard-coded. The concept itself is not that new and shares similarities with the Reaktor Core technology (Not to be mixed up with he discontinued Native Instruments Kore software) that allowed low-level programming within Reaktor. Gen~ does the same allowing the user to write low-level patches within Max. These patches will then be compiled in real-time saving the user precious CPU cycles. And in fact it does work. Gen~ can reduce a great amount of processing power in most cases. At least it did in those I tried.
Gen~ also features a rudimentary text based scripting/programming language that lets the user define operations, inlets or outlets directly without the need to create the particular objects. This object is in a way similar to the already available expr~ object, only that this new version is a lot more versatile and features nice little add-ons such as syntax highlighting.

There are still some limitations around Gen~. For instance it is not possible to use subpatchers within a gen~patch. With more complex operations this can eventually result in quite messy patches, but hopefully there will be an update that changes this limitation. Another restriction is, that when used inside a poly~ object, modifications need to be saved again to the poly patch, therefor disabling the live compiling of the gen~ object. But his is more of a poly~ limitation than one of the gen~ object.
Unfortunately the help function for objects that are only available in Gen~ is a little more limited than usual. For those objects, you only get a brief description of the functions, unlike other objects there’s no help patch to illustrate the functionality. This makes the first steps a little more tedious than necessary – especially for beginners. But Gen~ shares a lot of objects and functions with the regular MaxMSP suite, so you’d just need to look at those help files. On the other hand there are some really helpful little objects for Gen~, which make patching a little easier because they block, remove or work around problems such as NANs, denormalization or DC offset (at least I seem to be prone to run into that kind of problems a lot, so I’m a happy camper here). Plus, there is already a large number of little gen~ patches ready to be used, which gives the user a good head start.
I didn’t dive into the Jitter side of things, as I’m mostly familiar with Max and MSP, so I can’t comment on anything in this regard. Please note that Gen~ is not included in the regular MaxMSP package, but needs to be purchased separately.
One thing that bothered me a little was larger CPU strain Max6 has in comparison to Max5. Most of the time Max6 takes up between 2-10 % more processing power, when using the same patch. I’m not quite sure, where this is coming from. If there is something different on my end or that my patches are not optimized for Max6 or that it just uses a little more CPU due to the new 64-engine. Strangely enough the differences between Max5 and Max6 running as Max for Live are not that big. There are a couple of patches, where Max consumes a little less; others are using the same amount.
Anyways, Max6 is a really enjoyable application and an important step forward. It seems that the application has now arrived, where it set out to, when version 5 was released. Patching feels a lot cleaner, depending, what you are doing, the sound improvement is quite noticeable in certain patches, while others will still sound the same. I’m still surprised that the amount of example patches is rather small. If you take a look at the Max for Live side of things, you’ll find a lot of helpful mini patches and ideas to get you started. The example patches are the same as the ones from Max5. Especially for people, who are just starting to learn MaxMSP, it can feel a little daunting. Luckily enough there is a large group of people and a community using MaxMSP, who share their knowledge, so even newcomers should see some results pretty quickly. Plus, the tutorials and the manual is still top notch. This is something a lot of other software- and hardware companies could learn from a lot.
So what’s the verdict on Max6? Max already has been pretty amazing software and Max6 adds a good number new and useful features.














