How to control the Push LCD with sysex messages
I haven't found any info on this, so tonight I reverse engineered my Push LCD screen. An invaluable tool was MIDI Monitor (http://www.snoize.com/MIDIMonitor/), which allows me to spy of the Push "Live Out" MIDI port.
A single 77 byte sysex message sets the text for a single line. Each line on the LCD has 68 characters. The sysex message format looks like (in decimal format):
240 71 127 21 {line} 0 69 0 {ASCII char1} {ASCII char2} ... {ASCII char68} 247
the value of the {line} byte is:
24 for line 1 of the LCD
25 for line 2
26 for line 3
27 for line 4
For the ASCII characters, the value must be between 0 and 127. From 32-126, it matches standard ASCII character sets (http://www.asciitable.com/). The other values are various other characters. All 128 numbers in this range are printable on the LCD (unlike standard ASCII).
Patchers speak louder than words, so try the patch below for yourself. Note, this only works in stand-alone Max/MSP. Live & Max for Live do not allow you to send sysex messages (unless you hack on the Python remote scripts, but the point of all this is to avoid that and just use Max).
There is one workaround for the lack of sysex support in Live that I know of:
Create a patcher in stand-alone Max/MSP
Setup your midiin/midiout in the stand-alone patcher to talk to the Push
Add a send or receive object
Create a MFL device with a corresponding send/receive object
Leave the MFL device open for edit
Alternately you could probably do something with networking protocols, but timing will possibly be worse? That last bullet point is annoying, but seemingly necessary. I can't get MFL send/receive to talk to Max stand-alone send/receive otherwise. It's really not ideal, but workable... in the meantime, if this is something you want to do, pester Ableton about adding sysex support!
Anyway, here's the patcher (only works in stand-alone Max/MSP!):
Here are externals for unlimited midi communication of M4L devices (Mac only)
Those external look promising, however I am under the impression they only work with certain versions of OS X (maybe not Mountain Lion?) and not Windows. Of course, my workaround has its own problems. There's no ideal solution right now AFAIK.
The latency of UDP/OSC messages sent or received from an M4L device depends on Live's audio buffer (eg. 12ms @512 samples). So it's quite usable for sysex data.
That is a good point. I was trying to take a purist approach and only use MIDI, as that's what I want to do even though the software doesn't quite support it yet. I'll keep networking protocols in mind as a backup plan.
That is some excellent work right there. The last unaccessible aspects of the Push Hardware are now accessible.
Thank you.
I don't know a lot about MAX or how it is used at all, however, I have a softwhere than can send Sysex codes, when I try to send one with your template, either random LEDS on my push turn on, or nothing happens. What am I doing wrong, could someone provide clearer instructions on what to do? What does MFL mean? Maybe an example Sysex message that has worked before? I don't know where I am going wrong.
It looks like this patch is not working any more. I am testing with Push2, no text is showing.
Anthony, I think the way the screen is handled on Push 1 and Push 2 are completely different. I don't think my approach will work with Push 2.
There are some alternatives that will work with Push 2, described here: https://cycling74.com/articles/max-for-live-focus-the-push-2-as-a-max-controller