Articles

Max for Live Focus: The Push 2 as a Max Controller

(image: Ableton)

For this edition of our Max for Live Focus series, I’m going to take a step to the side: This one’s about hardware – Using Ableton’s Push 2 hardware in the Max environment, to be specific.

Since its initial introduction, lots of Ableton Live users have integrated the Push controller into their creative workflow (if you’re unfamiliar with it, you can find a good introduction to the controller and its workflow here, and a really useful set of tutorial videos on using the device here).

But I guess that I’ve been a Max user for so long that I just naturally look at every controller I get under my fingers and start thinking of how I’d use it for my own patches/performance rig (which doesn’t exactly look or act anything like Ableton Live). I’ve got a great interface to Live, but wouldn’t it be nice to have those same buttons and rotary encoders and that display available for my own idiosyncratic purposes?

It turns out that I’m not alone - my colleague Darwin Grosse’s set of tutorials focusing on using the Push with Max appeared shortly after the Push itself, and, over time, other Max users have chimed in with their own approaches.

My interest in the subject was renewed with the appearance of the second generation Push’s release. The reason is probably idiosyncratic and personal: I liked the fatter and lower buttons and switches, and particularly liked the Push 2’s LED display. One rainy Dutch afternoon, I decided it was time to fire the Push 2 and my browser up and have a look around at the current state of what’s available for repurposing the Push.

First off, the folks at Ableton themselves had really stepped up. They were kind enough to put up the complete spec for the Push 2 interface out there for us to work with. Major kudos to them for that one.

My initial decision was that I wanted to stick to MIDI-based control for my Push 2 to keep things simple. The simplest reason is that my current performance rig is MIDI-based and uses a Livid DS-1, and I figured that sticking with MIDI would make the porting quicker.

A little googling/Cycling ’74 website searching brought up the first source of joy: Jeff Kaiser – whose Max for Live devices are some of the most interesting and idiosyncratic free audio effects out there – sat down for some serious Sysex decoding time. The result is a set of Max abstractions that give you quick and easy access all the knobs and dials and switches on the Push 2 in a package you can download from Jeff’s website.

Jeff Kaiser's abstractions put the whole Push 2 panel switches, sliders, and rotary encoders at your disposal

The abstractions themselves are clean and consistently designed, and are quick to integrate into your patches. The help files pretty much tell the story. There are abstractions for each type of switch/knob/pad on the face of the Push 2, and you can initialize them with arguments to get precisely the results you want.

Jeff has also come up with a nice set of working colors for the pads, allowing you create color-coded displays. These patchers are also as good an example of clean and orderly Max programming as you’re likely to find. It’s a beautiful collection of work.

I cracked the help file open (along with a bottle of a crisp Provencal Rosé) and in a short time I had the first layer of my standard Max performance rig up and running like a champ, color-coded device/buffer indicators and all, with a nice preset-morphing ribbon controller in the bargain.

Next up, that nice new LCD display that would really help pull things together and provide a little navigational assistance when the time comes to create a “paged” UI that would let me drill down into individual parts of my performance rig.

Once again, the Max community comes through, and this time, there are a number of available options for repurposing that shiny new display.

Adam Murray was early to the breach when it came to using the Push visual display
  • David Butler did a good deal of the heavy lifting for the Max community in the form of his imp.push external – a Max object for sending jitter video matrices to the Push 2’s LCD display. You can snag a copy of it from his website, or from github.

  • There’s also another option - the p2d external from sigabort that gives you access to the RGB display (compatible with the Push 1’s 68x4 text display, too) and includes support for rendering Jitter matrices. There are several other follow-on products from sigabort available for sale you may find interesting.

All three options are interesting; I expect you’ll wind up choosing whichever makes the most sense for your application.

So there we are: the raw materials for anyone who’s interested in using the Ableton Push 2 as a custom interfaces for their own Max patches. Please join me in hoisting a festive libation and saying, “Thank you, gentlemen.” I love the Max community!

...and any of you reading this with your own experiences of repurposing the Push 2 should feel free to chime in in the comments.

by Gregory Taylor on August 29, 2017

Creative Commons License
dnealelo's icon

Omigosh. I was just looking into this myself last night! I put it away as a project for when I have more time and specific need, but THIS -- Thanks for doing this homework and thanks to all the creative minds who built these!

Anthony Palomba's icon

Just so you know, I tested Adam Murray's patch on a Push2, it does not work. Can someone please confirm.

jo geisler's icon

Dear Gregory, could I use your patch also with Push1?

If not are there any other options?

BR

Jo

Gregory Taylor's icon

Hello, Jo.

If you're using a Push 1, I would recommend my friend and colleague Darwin Grosse's tutorials here.

https://cycling74.com/articles/journey-in-push-programming

jo geisler's icon

Hi Gregory,

thanks for the link.

This will help me further :-)

Jo

Wim Van den Borre's icon

Hey hey,

I've been scrubbing the interwebz but I can't find an example of sending text to the push 2 from a m4l device. The links above or broken or don't work anymore on M1. Anyone know of a solution?