So, by some miracle you've already got your hands on an Ableton Push (see our review). And you have a copy of Ableton Live 9 Suite complete with all the max4live goodness it contains. You've had a good play with the Push and put the step sequencer and scale modes through their paces...
But you want more. You want to keep up with all those Monome kids and their fancy grid-based, algorithmic step sequencers, right?
Well, that's what I wanted to do, so armed with a vaguest knowledge of max4live and an Internet connection I set out to find the way.
First we need to see how the various components of Live fit together to turn it into a programmable, reconfigurable environment, rather than a simple point-and-click driven application we're accustomed to. Cue diagram:
We have several parts in our system:
The Live Application. This is where your music lives.
The Live Application Programming Interface (API) - this is the part of Live that exposes all your clips, the mixer, devices, transport controls - basically everything in your Live Set - to outside programs. Using the API we can manipulate these elements in two ways:
Using max4live - programs written in the max programming language
Using controller scripts - written in the Python programming language
The Push controller. This communicates with Live via a special set of Python scripts.
...and, in a final twist, these scripts also expose an API to max4live.
(If you don't know any Python, don't worry - we won't be going anywhere near that! I'm sure it's a lovely language and all, but unfortunately the controller scripts are encrypted, entirely undocumented and changing them is unsupported by Ableton. However if you do feel like taking the plunge, visit Julien Bayle's Live 9 MIDI Remote scripts site.)
The interesting upshot of this Controller-Scripts-API model, with max4live mediating between them, is that the the Push control surface is just that - a fairly generic MIDI control surface that just sends and receives notes, Continuous Controllers and System Exclusive data. The actual magic that runs the step sequencer, the session view, instant mapping of device parameters and so on happens in the Controller Scripts that sit between the Push USB port and Live's API. Even the messages displayed on the Push's screen are defined in, and sent to the Push by, these scripts.
Which is brilliant for us, because we never have to worry about looking up arcane hexadecimal numbers in the blurry back pages of a manual (remember how much fun that used to be?). In theory we should have a nice well-documented and clearly named functions to pipe messages between max4live and the Push. Now, while I'm certain such documentation exists in Ableton's office, I'm sad to say it hasn't found its way onto the Internet, yet.