To feed the Push button presses out to our Operator, we first need to convert the x, y and velocity numbers into midi notes, then feed those notes out of the device. A basic MIDI note consists of a semitone value and a velocity value. The semitones range from 0 to 127, where 60 is the middle C of the range. Velocities range from 1 is the softest velocity, 127 is the hardest, and 0 represents note off.
Since the Push has an 8x8 grid which outputs values from 0 to 7 for rows and columns, we can do some simple maths to convert the position of the button pressed into a semitone value, and the velocity values are fine as they are. However, these three numbers are currently in a list so we need to separate them using an unpack object. To create one of these, type n as before, followed by unpack 0 0 0. This creates an object to split out three integer numbers (denoted by the three zeroes) to separate outputs. Wire the p push_grid bottom-left output to this object’s top input.
Next we need an object to connect the whole device to the outside world, so somewhere near the bottom of the window type n then noteout.
Next we have some heavy patching to do. We need to add a plus object (type n +), a multiplication object (n *), a messagebox containing the number 8 (m 8), and a loadbang. Wire the devices up as shown in the diagram:
This arrangement simply takes the row number (the centre unpack output) from the Push and multiplies it by 8, then adds the result to the column number (the leftmost unpack output) from the Push, making a note number between 0 and 63. The loadbang ensures the number 8 message gets sent to the multiply object. Finally the note number is piped to the noteout Pitch input. The Velocity value is piped directly to the noteout Velocity input as it is already in the correct format. These notes then magically appear from the right-hand side of the max4live device and feed into anything after it - exactly the same way any of Live’s built in MIDI effects (Pitch, Arpeggiator, etc) work.
Oh, and welcome to the crazy world of max patching!
Save As... this device with a new name, and ensuring the device is selected in Live’s device bar, give the Push a tap. You should hear a note coming from the Operator, with very low notes at the top left and reasonably high ones at the bottom right. Obviously this is the very simplest pad-to-note mapping imaginable, but other more Push-esque chromatic mappings are only a few patch cables away. Well, okay, a lot of patch cables and a lot of maths - but you see the point, anything is possible.
Aside “Where’s he getting this stuff? How did he know about the noteout? Or the unpack?” I hear you ask. Well, it’s a good question. Max4Live has some really good built in documentation - just right click an object and follow the Help or Reference links; or hover your mouse over an object’s inputs and outputs to see a tooltip. Amazingly the Help pages are themselves max4live patcher windows, which you can unlock, copy and paste from and otherwise tinker with...
But that’s not much use if you don’t know the name of the object you need in the first place, is it?
So, get over to Ableton’s site to download and install the “M4L Building Tools”, which will appear under Packs in the Browser.
This pack (which wasn’t available with the initial release of Live 9 - hence why you may not already have it) contains a treasure trove of small pre-built audio and MIDI tools, as well as tools to manipulate Live’s clips, mixer and so on. More importantly it contains several folders full of well-annotated tutorial devices. These really are THE place to start learning max4live... Aside from these articles, of course!
Next time we will be finding having fun manipulating our newly created notes.
Bastien P is a techno producer, DJ, technical writer and (if he's honest) web developer. He's been using Ableton Live since back in the days when 'Nu skool breaks' was a popular musical genre. When he's not wrangling with MIDI controllers he's keen on drinking real ale and trying not to fall off of his bicycle.
So much power in a small package - but how does it perform?