Okay, there’s obviously no official response or support here (or barely any traffic for that matter), this forum seems effectively dead. Disappointing but unsurprising, I’ll just stick to reverse engineering then.
Anyway I’ll leave what I’ve found so far here for other poor souls googling while trying to tinker with this stuff.
General SYSEX: [0xF0, 0x00, 0x20, 0x6B, 0x7F, 0x42, ...<data>, 0xF7]
<data> for:
Memory Request: [0x01, 0x00, 0x40, 0x01] // returns <data>:
Arturia Test(?): [0x04, 0x01, 0x60, 0x01, 0x31, 0x32, 0x33, 0x00]
Arturia Connect: [0x04, 0x01, 0x60, 0x01, 0x00, 0x02, 0x00]
Arturia Disconnect: [0x04, 0x01, 0x60, 0x0A, 0x0A, 0x5F, 0x51, 0x00] followed by [0x02, 0x02, 0x40, 0x6A, 0x10]
DAW Connect: [0x02, 0x02, 0x40, 0x6A, 0x21]
DAW Disconnect: [0x02, 0x02, 0x40, 0x6A, 0x20]
// r g b = 0-127
Set Shift-LED: [0x02, 0x02, 0x16, <id>, <r>, <g>, <b>] // persistent: 0x57 Loop, 0x58 Stop, 0x59 Play, 0x5A Record, 0x5B Tap
Set PAD LEDs: [0x04, 0x02, 0x16, 0x00] followed by 8x [<r>, <g>, <b>] for each pad // impermanent, mode or bank switch resets to white
Set Display+Text: [0x04, 0x02, 0x60, ...<mode>, ...<line1>, ...<line2>] where
<mode>:
default: [],
two lines: [0x1F, 0x02, 0x01, 0x00] // seems identical to default?
encoder: [0x1F, 0x03, 0x01, <value>, 0x00, 0x00] (value 0-127)
fader: [0x1F, 0x04, 0x01, <value>, 0x00, 0x00] (value 0-127)
pressure: [0x1F, 0x05, 0x01, <value>, 0x00, 0x00] (value 0-127)
leftright: [0x1F, 0x06, 0x01, <???>, <option>, 0x00] // Shows line 2, but not Line1. option 0x00 bottom bar, 0x01 no bar
icons: [0x1F, 0x07, 0x01, <top_icon>, <bottom_icon>, 0x01, 0x00] // icons are 0: Empty, 1 Heart, 2 Play, 3 Record, 4 Note, 5 Checkmark
<line1>: [0x01, ...<up to 30 chars as bytes>, 0x00] // Zero terminated string? Display seems to show about 19 characters
<line2>: [0x02, ...<up to 30 chars as bytes>, 0x00] // Zero terminated string? Larger font so only 15 characters displayed
// note this is missing the pitchbend/modwheel display modes. DAW mode also has these hardwired to be active on inputs.
Seems like the Display stuff only writes to a buffer that’s displayed in the DAW mode, so this seems to be the default DAW midi map
enum DAW_CC : byte // all on channel 0x00 (aka 1) besides the modwheel
{
MODWHEEL = 1, // on keyboard channel
SHIFT = 27,
ENC_TURN = 28, ENC_SHIFT_TURN = 29, // always relative around 64+-3
ENC_CLICK = 118, ENC_SHIFT_CLICK = 119,
FADER1 = 0x0E, FADER2 = 0x0F, FADER3 = 0x1E, FADER4 = 0x1F,
ENC1 = 86, ENC2 = 87, ENC3 = 89, ENC4 = 90, // forced absolute mode with device accel
ENC5 = 110, ENC6 = 111, ENC7 = 116, ENC8 = 117, // forced absolute mode with device accel
PAD_SHIFTLOOP = 105, PAD_SHIFTSTOP = 106, PAD_SHIFTPLAY = 107, PAD_SHIFTREC = 108, PAD_SHIFTTAP = 109,
}
enum DAW_NOTE : byte // Always on Channel 0x09 (aka 10 percussion)
{
PADA1 = 36, PADA2 = 37, PADA3 = 38, PADA4 = 39, PADA5 = 40, PADA6 = 41, PADA7 = 42, PADA8 = 43,
PADB1 = 44, PADB2 = 45, PADB3 = 46, PADB4 = 47, PADB5 = 48, PADB6 = 49, PADB7 = 50, PADB8 = 51,
}
Very disappointing that there doesn’t seem to be a way to get relative data out of the encoders in DAW mode, otherwise this covers most things needed.
I can obviously calculate my own derivative from the absolute device output (including my own acceleration), but it sadly loses granularity at 0 and 127 where the device just repeats those values.
oh well