Some notes on hacking the Ableton Push
The Ableton Push is an awesome piece of hardware. But its greatest strength is also its greatest weakness: It's uncomfortably closely tied to Ableton Live. That being said, it is, indeed, a standard MIDI device and is addressed by Ableton Live by standard MIDI commands. Unfortunately, mostly undocumented, at least officially.
Posts like this do a relatively good job at documenting most of the features, so there's not much left to be desired if you want to use the Push in your own (for example Web MIDI) projects.
After experimenting a bit with the SysEx commands to set the display, I came across a simple, but important addition: You don't actually have to send a full line of text on each update: The sequence actually contains the number of characters you want to send and a horizontal offset:
output.send([240, 71, 127, 21, (24+line_number), 0, (number_of_chars + 1), offset, char_1, char_2 … char_n, 247])
This means, for example, that you can update single display regions relatively quickly. Sending SysEx data takes time and if you have to send less data, you can speed up things. Of course, this means that you have to have some sort of dirty checks, so that you don't end up with garbage on the displays.
Also, important caveat when trying this with Web MIDI on Google Chrome: You need to request SysEx access, which requires elevated permissions. And by that I mean that your code won't work from your local harddisk, or, when loaded over the web, from non-secure connections. What worked for me is loading it over a local web server using "localhost".
If you're interested, I'm currently trying to build a small drum machine prototype for my Berlin Web Audio Meetup talk on wednesday. Feel free to follow my progress on github