I bought Ableton Push 2 two years ago and it has been a useful tool for my sampling process. But since I do most of my projects in Logic Pro X, I don’t use most of its functions, unfortunately. During the quarantine, I decided to hack it to use with my macros I created in Keyboard Maestro. Luckily, I found out that Ableton decided to share the details of Push 2 for developers some time ago. First I started programming it with Python, but then I decided to go on with Cycling’ 74 Max for easier use, and also I’ve been looking for an excuse to learn Max anyway. After spending some time with it, I managed to customize the screen, buttons, and pads. I wanted different display menus for various apps. Keyboard Maestro tells which application is in the front and Push 2 displays the related menu for that app.

While I was experimenting with it, Logic finally released the 10.5 update and it came with so many nice features such as Live Loops which is a similar workflow to Ableton’s clip launching. Unfortunately, at this moment Logic only supports Novation Launchapad models as a Control Surface for triggering loops. To use my Push 2 with it, I had to understand how Logic communicates to a Launchpad so that I can emulate my Push 2 as a Launchpad X. The reason I chose “Launchpad X” to emulate instead of “Launchpad Pro” is; X version uses standard midi bytes which are easier to handle while the Pro version uses lots of Sysex Messages to communicate.


After doing some midi monitoring and taking lots of notes I started routing midi signals. This is the workflow I came up with: When I press a button on Push 2 it sends midi to Max. Then I manipulate that data inside Max environment and route it to Logic via a virtual midi bus. Logic thinks it’s coming from a Launchpad X. Then Logic sends data back to Max via another virtual midi bus. Then I convert that midi information to Push2-friendly information and send back to Push’s Live Port to color the LEDs of pads and buttons. The last byte of the midi message (CC Value/Note Velocity 0-127) defines the color of RGB LEDs but since Novation and Push 2 have different color schemes I had to do lots of routing to get similar colors. Blinking and flashing of LEDs are controlled with the Channel Number byte but again corresponding numbers are different in launchpad so I had to organize them too.

Finally, the array of pads was totally different; unlike Ableton’s vertical layout Logic’s Live Loops are horizontal. Which means columns represent loops and rows represent tracks. And Logic people solved this problem how? Instead of doing some midi routing, they end up telling launchpad users to rotate their device 90 degrees right or left! I didn’t want to rotate my Push, it’s not even square! So I had to spend some time on assigning each note to their new places. After a few more fixes it worked and I was able to play with the correct visual feedback from pads! I also assigned some functions to buttons to enter Mute/Solo/Record Arm modes but I will probably do some changes to them in the future.

-The display section WAS under development (Read the Update) as a different project. But you can download the Max patch with all the pad and button assignments on my Patreon here:



Update 1: Some friends warned me that the setup picture was missing in the patch. Max didn’t save the jpg in it obviously. I’ve updated the zip file with setup notes and a screenshot. 

Update 2: I received so many questions about the future of the project and thank you all for your interest. But I had to sell my Push 2 due to economical situations happening in my country. Thank you for all your support; it really means a lot to me. But for now, there seems to be no future for this project. However, other than the screen part, all the pads and buttons in the video are already functional. So with this patch, you can do almost anything a Launchpad X does with Logic Pro X. Have fun!

Liked it? Take a second to support umut on Patreon!