Arturia Keylab : display on LCD screen

I found a description for the Arturia Keylab where you can use SysEx messages to control the LEDs via script.

Hope this is usefull for all.

With the exception of MMC messages, all Keylab specific sysex messages (out/to and in/from Keylab) follow the form:

F0 00 20 6B 7F 42 PAYLOAD F7

Where the PAYLOAD is one of the following:
Request a Value: 01 00 PARM CTRLID
Response from Keylab 02 00 PARM CTRLID VALUE
Set a Value: 02 00 PARM CTRLID VALUE
Set LED on/off: 02 00 10 00 00 CTRLID ONOFF
Set Display Line 1: 04 00 60 01 LINE1 00 7F
Set Display Line 2: 04 00 60 02 LINE2 00 7F
Set Display Line 1&2: 04 00 60 01 LINE1 00 02 LINE2 00 7F
Load Keyboard Preset: 05 PRESET
Save Keyboard Preset: 06 PRESET

Where:
LINE1 & LINE2 16 character ASCII string.
ONOFF on=7F, off=00.
PARM See Parameters section below.
CTRLID See Controls section below.
VALUE The 7-bit value either being set or reported by Keylab

Parameters
The PARM values are different for global settings vs control settings.
Generally, a control is configured by sequentially sending 6 command values (numbers 1 through 6).
For faders and encoders, parameters 0x40 and 0x41 can optionally be sent to.

For controls, the following trush table describes the meaning of each command:
PARM: 1 2 3 4 5 6 40 41 Faders Encoders Buttons Pads Transports
Off 00 - - - - - Yes Yes Yes Yes Yes
CC Fader 01 CH CC MIN MAX 0 0 1 Yes
CC Encoder 01 CH CC MIN MAX 0 1 5 Yes
CC Relative 01 CH CC 0 7F 1 1 5 Yes
CC Duration 05 CH CC CC CC2 0 0 Yes Yes
CC Toggle 08 CH CC OFF ON 0 Yes Yes Yes
CC Gate 08 CH CC OFF ON 1 Yes Yes Yes
Note Toggle 09 CH NOTE 0 VEL 0 Yes Yes Yes
Note Gate 09 CH NOTE 0 VEL 1 Yes Yes Yes
Keyboard Preset 0B 0 0-9 0 0 0 Yes Yes Yes
MMC 07 0 MMC 0 0 0 Yes Yes
NRPN 04 CH RPN MIN MAX 0 Yes Yes Yes
RPN 04 CH NRPN MIN MAX 1 Yes Yes Yes
Program Change 0B CH PROG LSB MSB 1 Yes Yes
Where:
MIN, MAX Midi cc values from 0 - 0x7F to be sent by the control.
ON, OFF Midi cc values to be sent by buttons for on/off or down/up actions
CC Midi CC number for continuous controller messages or brief-press messages.
CC2 Midi CC number for long-press (duration) messages.
CH Midi Channel: 0-0x0F=1-16, 0x41 = Part1, 0x40 = Part2, 0x7E = All, 0x7F = Panel.
MMC The MMC identifier to be sent in a MMC message when a button is pressed. Sysex received on click is F0 7F MMC 06 F7.

Control identifiers:
The following values represent the CTRLID used in the aforementioned messages:
Volume 0x30
Param 0x31
Value 0x33
Param Button 0x32
Value Button 0x34
Sound 0x1E
Multi 0x1F
Bank1 0x1D
Bank2 0x1C
Play 0x58
Stop 0x59
Record 0x5A
Rewind 0x5B
Forward 0x5C
Loop 0x5D
Switch 1-10 0x12 - 0x1B
Encoder 1-4 Bank 1 0x01 - 0x04
Encoder 6-9 Bank 1 0x05 - 0x08
Encoder 5 Bank 1 0x09
Encoder 10 Bank 1 0x0A // can be 0x6E on some firmware. Seriously Arturia?
Encoder 1-4 Bank 2 0x21 - 0x24
Encoder 6-9 Bank 2 0x25 - 0x28
Encoder 5 Bank 2 0x29
Encoder 10 Bank 2 0x2A
Faders 1-4 Bank 1 0x0B - 0x0E
Faders 5-9 Bank 1 0x4B - 0x4F
Faders 1-4 Bank 2 0x2B - 0x2E
Faders 5-9 Bank 2 0x6B-0x6F
Pad 01-16 0x70 - 0x7F
Mod Wheel 0x40

Global Configuration
Configuration of global values is similar to controller configuration, except that PARM is always 0x40, and the CTRLID stipulates which global value is being set or requested.
Global Parameter: CTRLID Values
Relative Knob Mode 0x02 0x01 = Absolute, 0x7F = Relative
Drawbar Mode 0x01 0x01 = Normal, 0x7F = Drawbar
Part 1 Midi Chanel 0x06 0x00-0x0F = Midi Channel 1-16
Part 2 Midi Chanel 0x05 0x00-0x0F = Midi Channel 1-16
Keyboard Split Mode 0x07D 0x01 = Off, 0x7F = Split Mode On
Keyboard Split Point 0x0D number - Midi note value. 0x3C=Middle C, 0=C-2
After Touch Chanel 0x0B 0x00-0x0F = Midi Channel 1-16, 0x7E=All, 0x40=Part1, 0x41=Part2, 0x7F=Panel }
Part 1 Transpose Octave 0x03 number: 0=No Transpose, 1/2=Octave+1/2, 0x41/42=Octave-1/2
Part 2 Transpose Octave 0x10 number: 0=No Transpose, 1/2=Octave+1/2, 0x41/42=Octave-1/2
Part 1 Transpose Chromatic 0x06 number
Part 2 Transpose Chromatic 0x11 number
Octave Buttons Assign 0x12 string, { 0=Part1, 1=Part2, 2=Both" })

Notes:
Keylab handles signed values as 6-bit signed integers, so that bit 6 (0x40) is the sign bit.
This means that positive numbers are in the range 0x01 to 0x3F, and negative numbers span 0x41 to 0x7F…
Actual Number: 3 2 1 0 -1 -2 -3
Keylab 6-bit value: 3 2 1 0 0x41 0x42 0x43

2 Likes