Wish granted, hackers. The full specification for Ableton’s Push 2 hardware is now online on GitHub, after passionate Live users clamored for its release. And there’s a lot. This isn’t just a MIDI specification (though that’s there). Every minute detail of how colors appear on LEDs gets covered. (The color “white” has its own section. Yeah, like that minute.) Every animation. The pixels that show up on the display. This isn’t just a guide to how to hack Push 2 – though it’s certainly that. It’s a technical bible on how Push 2 works.

Here, the easiest way to express this is actually to post the table of contents:

1. Introduction
1.1. Purpose
1.2. Architecture Overview
2. MIDI Interface
2.1. MIDI Interface Access
2.2. MIDI Messages
2.3. MIDI Mapping
2.4. Sysex Commands
2.4.1. General Command Format
2.4.2. Command List
2.5. MIDI Mode
2.6. LEDs
2.6.1. Setting LED Colors
2.6.2. RGB LED Color Processing
2.6.3. White LED Color Processing
2.6.4. Touch Strip LED Color Processing
2.6.5. Default Color Palettes
2.6.6. White Balance
2.6.7. Global LED Brightness
2.6.8. LED Animation
2.6.9. PWM Frequency
2.7. Buttons
2.8. Pads
2.8.1. Velocity Curve
2.8.2. Pad Parameters
2.8.3. Individual Pad Calibration
2.8.4. Aftertouch
2.9. Encoders
2.10. Touch Strip
2.10.1. Touch Strip Configuration
2.11. Pedals
2.11.1. Pedal Sampling
2.11.2. Pedal Configuration
2.12. Display Backlight
2.13. Device Inquiry
2.14. Statistics
3. Display Interface
3.1. USB Display Interface Access
3.2. Display Interface Protocol
3.2.1. Frame Header
3.2.2. Pixel Data
3.2.3. Pixel Color Encoding
3.2.4. XORing Pixel Data
3.2.5. Frame Buffering
3.2.6. Allocating Libusb Transfers
4. Appendix A: MIDI Implementation Chart

I imagine this could inspire a whole lot of different people.

1. For the curious, you can learn how Push 2 works, just by browsing. (I had a manual to the Space Shuttle as a kid; this is sort of like that for hardware controller fans.)

2. If you’re working on a Max for Live patch, you can now easily learn how to make even minor modifications and hacks.

3. Developers working on Push 2 controller support now can do all kinds of new things.

4. People wanting to use Push 2 with hardware other than Live now can go about that in more powerful ways (and that’s possible, too, because all of this works regardless of OS and host).

5. People designing their own DIY hardware can learn from what Ableton have done. Yes, heck, that includes competitors – but to be honest, those competitors probably could figure this out on their own. And, oh, by the way, competitors will also be under equal pressure to reciprocate, which is good for all of us.

It’s not really “open source” – Ableton owns everything you see here. It wouldn’t really make sense to modify, anyway, as it’s tied specifically to the Push 2 hardware. It’s more like public source – but that’s still a good thing.
https://github.com/Ableton/push-interface

I think it’s all intensely healthy. I’d still like to see an API on the side of the Live software that makes it easier to make modifications. But this is indisputably good news.

And since I really have no idea what people will do with it, let us know what you do intend to do with it – or share the results.