Articles

Secret Max Tricks: An Homage to the Did You Know? Series

One of the keys to becoming a more adept Max/MSP user is by accumulating new knowledge incrementally. In a way, it's much like learning an instrument by incremental practice - bite-size learning results in one becoming a more fluid and adept musician or programmer who can draw upon accumulated knowledge and experience over time.

One of the ways to achieve this involves easily digestible bits of knowledge that allow you to encounter and learn something that will fundamentally change how you work in a short amount of time. Our colleague Andrew Pask undertook a series of short videos that all bore the title Did You Know? back in 2011 - a series that completely captured that idea.

The series is and remains one of the most brilliant collections in existence of what some folks call “secret Max tricks” (and by the way - they're not secret - they're merely less well-known) that will help to ease your transition from "regular user" to "Max whiz" in no time.

As a shout out to Andrew’s amazing work, Gregory and I would like to share a few of our favorites from the series and say a bit about why we love 'em. (We still laugh among ourselves about how the set has changed our patching lives.)

Tom's Favorites

Did You Know #47: Waveshaping with codebox and gen~

Okey-dokey - this one’s a favorite of mine. I feel like in some sense Pask completely demystifies any complexities associated with gen~ in minutes, showing that anyone that can use a web browser can leverage gen~ to their advantage in Max. There are thousands of pieces of DSP code out there on the internet just like the code used here that can be dropped into gen~, tweaked slightly, and away you go - instant classic!

Did You Know #15: Inter-Frame Differences

I love this one for a few reasons. This method of using Jitter is really great for creating works that translate visual elements into meaningful triggers that can either manipulate more visual material or turn it into something else completely such as sequencers like I did in this video. This video also includes an old mate of mine - RIP Desi Pask.

Did You Know #22: Batch Loading buffer~ objects

I love how this video introduces some cool ways to batch load content, considering that you can also format message dynamically, it’s not to hard to start to imaging how powerful this could be for a dynamic live performance patch, museum-based installations, show control and so on. The message box send syntax and other patcher scripting methods are incredibly useful for building our dynamic and powerful Max patches.

Did You Know #19: Copy Compressed

Hands down the fastest ways to share your Max patch with someone else. But also this method is a way to circumnavigate some modern-day issues we’re been beginning to see, where .maxzip files and .maxpat files (unless they are zipped) can throw up a Junk flag and your email to your friend will never make it through, it’s super fast to copy/compress and in most cases a good way to share (providing there are no dependencies).

Gregory's Favorites

When Tom and I started our homage to the Did You Know ? series, neither of us knew which videos the other person would choose. When the time came to format and put this material online, what was most interesting to me was that Tom and I wound up with a completely different set of videos. One of the interesting differences between our two lists was that Tom picked three videos that opened up a new method of doing higher-level work, followed by one of those Max shortcuts/techniques (Copying compressed Max patches).

My list was exactly the reverse of that — Did You Know? postings that completely changed the way I did my Max patching in very simple ways (using join instead of pack, for example), followed by one of those "Wow, I wish I'd known about this a lot sooner...." examples.

In fact, when I went about making my list of favorite videos, I was surprised to be reminded that this series was exactly the place where I first encountered things that I now do all the time.

Did You Know #45: Stop packing. Start joining

We all make mistakes (and I make more than lots of people). Over time, you come to realize that some of your mistakes assume a pattern. Wanna know one of mine? Either miscounting or mislabeling when it came to specifying arguments to the pack/unpack objects. It seems like it did that all the time. Did You Know? #45 opened the way to a new life for me.

Oh sure - once in a great while I vaguely miss using unpack for int/float/symbol data conversion, but I've never really looked back since ditching pack/unpack for join/unjoin. I can even recite the attribute string that transforms a join object into the equivalent of pak (@triggers -1), and I love creating join objects that will output on selectable inputs only.

Did You Know #8: Duplicate with Offsets
Did You Know #40: Snap Align

Okay, I'll admit it. I've concatenated two Did You Know? postings here. But here's the deal: although they're separated in the series, these two solid gold nugget tips on copying objects and aligning/distributing them together revolutionized the practice of creating and tidying user interfaces for me forever afterword.

I'll probably have to hang my head in shame and admit that I knew about aligning but not distributing objects, but maybe that's the case for you, too. I realized while writing this up that I'd spent a bunch of last night's Max patching doing precisely this sequence of object > copy multiples > arrange one on the left edge, one on the right edge, align > distribute horizontally actions....

Did You Know #2: Message Box Sends

Some Did You Know? tips are moments when the wisdom drops, the sky cracks open, the light shines upon you, and all you can say is "Where have you been all my life?"

This was one of those moments for me, and the fact that it was the second video of the entire series is probably the reason I because a devoted follower of the series.

Did You Know #23: I/O Mappings

Back in the days when I actually did things like leaving the house and going somewhere to perform, rejiggering the I/O on my performance rig was the last-minute bane of my existence. I guess it ought to have come as no surprise that a seasoned augment reed-playin' wizard like Andrew Pask would face these issues again and again and would have just the solution I needed, but I never asked. Andrew was generous enough to share, and I shall be forever grateful.


So that's our list of favorite, life-changing Did You Know? moments. Don't take our word for it - see for yourself.

Check out the complete Did You Know? series of short videos.

And one last thing. Did you know there’s a Did You Know? 2.0 series in the works?

You do now. Stay tuned!

Happy Patching!

by Tom HallGregory Taylor on September 15, 2020

Creative Commons License
Iain Duncan's icon

Nice, thanks for posting this!

Julien Vincenot's icon

Really cool selection thanks ! Years later I discover batch buffers loading and unjoin @outsize which will come really handy.

Quick question about copy compressed, how reliable is it when copying huge patches for instance?
In other words, is there any reason for preferring the real copy instead of the compressed one? Perhaps in the mean time I'll make the shortcut CMD+ALT+C instead, close to my personal favorite CMD+ALT+V ("Paste Replace").

Tom Hall's icon

@JULIEN VINCENOT it'll be fine for large patches, although larger the patch the longer the text ;)

James Huckenpahler's icon

this is AWESOME

TConnors's icon