September 26, 2020, 02:37:18 pm
Welcome, Guest. Please login or register.
Did you miss your activation email

Arturia Forums

Author Topic: keyLab 61 engineering  (Read 2225 times)


  • Apprentice
  • Apprentice
  • *
  • Posts: 17
  • Karma: 0
keyLab 61 engineering
« on: March 31, 2017, 02:28:02 pm »
I was playing with The great instrument from Arturia (except few small firmware bugs).

Demo video:

Currently I'm heading to create control surface in Ableton, to send text messages to the Keylab when I'm switching between scenes. For me it will be useful for live performance, when each my scene has setup instruments for that particular song. So then I would see text on my keylab, on which scene am I, and I could be completely free of notebook.

Maybe some tech information:
Button LED turn on/off
F0 00 20 6B 7F 42 02 00 10 12 7F F7 (1st button)
F0 00 20 6B 7F 42 02 00 10 13 7F F7 (2nd button)...

Turn LED on on buttons 1-8 (9-10 are not responding to SysEx message, also i did not found transport buttons, for example light up on PLAY button would be very practical)
Command: F0 00 20 6B 7F 42 02 00 10 12 7F F7

Turn LED off
Command: F0 00 20 6B 7F 42 02 00 10 12 00 F7

Send text message to KeyLab:
(header) F0 00 20 6B 7F 42 04 00 60 01
text - convert your characters with any convertor from ASCII to HEX
new line - 00 02
footer - 00 F7
Entire message example:
F0 00 20 6B 7F 42 04 00 60 01 53757065722054657374 00 F7

It works with latest firmware (1.33)
I used MIDI-OX with message translator/replacement to have proper function on my KeyLab with VirtualMidi Driver. So I'm intercepting incoming messages (which are not handled in KeyLab) and translating them to SysEx messages (Where KeyLab is somehow listening)

Why I started this ?
1.Because my buttons under knobs/encoders/ are not lightning UP when they are set in CTRL Toggle mode (I need visual feedback without looking into notebook if my instrument is on /off). Just loop button acts properly. I see MIDI message coming from Ableton (toggle message) but keyboard (firmware) is not handling that - not managing button light.

2. Pads: When are they set to toggle mode, they are not toggling values 0/127, but they are still sending velocity. For Ableton >64 means turn on, <=64 turn off. So when I want to turn on my instrument I need to tap harder, to turn off I need to tap slightly (but what if not) :), this is not safe toggling. Every other instrument hiwch is having Pads (Akai, M-audio, novation), when is set to CTRL toggle mode, PADS are sending either 0 or 127 (or as you set). I miss this for my KeyLab.

I like this keyboard so much, just small bug fixes would make this keyboard perfect.
Any attention from Arturia ? :)
Thinkpad SL500 (T9400CPU & SSD), Arturia KeyLab 61 | My engineering of KeyLab 61 with Firmware comparison


  • Apprentice
  • Apprentice
  • *
  • Posts: 17
  • Karma: 0
Re: keyLab 61 engineering
« Reply #1 on: March 31, 2017, 05:27:52 pm »
I'v tested older Firmware and I created Firmware comparison sheet.

Can somebody confirm this ?
Thinkpad SL500 (T9400CPU & SSD), Arturia KeyLab 61 | My engineering of KeyLab 61 with Firmware comparison


  • Apprentice
  • Apprentice
  • *
  • Posts: 15
  • Karma: 1
Re: keyLab 61 engineering
« Reply #2 on: June 14, 2019, 11:47:05 pm »
Yes - this is the behavior I'm seeing too.

There are other odd quirks going on with the Keylab...  If a sysex is send to set the display of the keylab while you're playing, the next note-on sent by Keylab has velocity=127 (max).
It's surprisingly noticeable (and irritating) when using the out-the-box driver for Bitwig.  I've alerted the Arturia support folks, but fixing this doesn't seem to be a priority.

I asked Arturia whether they would consider open-sourcing the firmware so that we (the customer community) could fix these issues ourselves, but again Arturia shied away. I don't get it... they have a product that could be great, but has bugs, and are refusing help from their customers!


  • Apprentice
  • Apprentice
  • *
  • Posts: 15
  • Karma: 1
Re: keyLab 61 engineering
« Reply #3 on: June 15, 2019, 12:23:44 am »
BTW - for anyone wanting to know a little more about Keylab sysex, here's a quick guide:

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 Keylab02 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

LINE1 & LINE216 character ASCII string.
ONOFFon=7F, off=00.
PARMSee Parameters section below.
CTRLIDSee Controls section below.
VALUEThe 7-bit value either being set or reported by Keylab

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:   1234564041FadersEncodersButtonsPadsTransports
Off   00-----YesYesYesYesYes
CC Fader      01CHCCMINMAX001Yes
CC Encoder    01CHCCMINMAX015Yes
CC Relative   01CHCC07F115Yes
CC Duration   05CHCCCCCC200YesYes
CC Toggle     08CHCCOFFON0YesYesYes
CC Gate       08CHCCOFFON1YesYesYes
Note Toggle   09CHNOTE0VEL0YesYesYes
Note Gate     09CHNOTE0VEL1YesYesYes
Keyboard Preset0B00-9000YesYesYes
MMC           070MMC000YesYes
NRPN          04CHRPNMINMAX0YesYesYes
RPN           04CHNRPNMINMAX1YesYesYes
Program Change0BCHPROGLSBMSB1YesYes
MIN, MAXMidi cc values from 0 - 0x7F to be sent by the control.
ON, OFFMidi cc values to be sent by buttons for on/off or down/up actions
CCMidi CC number for continuous controller messages or brief-press messages.
CC2Midi CC number for long-press (duration) messages.
CHMidi Channel: 0-0x0F=1-16, 0x41 = Part1, 0x40 = Part2, 0x7E = All, 0x7F = Panel.
MMCThe 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:
Param Button0x32
Value Button0x34
Switch  1-100x12 - 0x1B
Encoder 1-4 Bank 10x01 - 0x04
Encoder 6-9 Bank 10x05 - 0x08
Encoder   5 Bank 10x09
Encoder  10 Bank 10x0A // can be 0x6E on some firmware. Seriously Arturia?
Encoder 1-4 Bank 20x21 - 0x24
Encoder 6-9 Bank 20x25 - 0x28
Encoder   5 Bank 20x29
Encoder  10 Bank 20x2A
Faders 1-4 Bank 10x0B - 0x0E
Faders 5-9 Bank 10x4B - 0x4F
Faders 1-4 Bank 20x2B - 0x2E
Faders 5-9 Bank 20x6B-0x6F
Pad 01-160x70 - 0x7F
Mod Wheel0x40

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:CTRLIDValues
Relative Knob Mode0x020x01 = Absolute, 0x7F = Relative
Drawbar Mode0x010x01 = Normal, 0x7F = Drawbar
Part 1 Midi Chanel0x060x00-0x0F = Midi Channel 1-16
Part 2 Midi Chanel0x050x00-0x0F = Midi Channel 1-16
Keyboard Split Mode0x07D0x01 = Off, 0x7F = Split Mode On
Keyboard Split Point0x0Dnumber - Midi note value. 0x3C=Middle C,  0=C-2
After Touch Chanel0x0B0x00-0x0F = Midi Channel 1-16, 0x7E=All, 0x40=Part1, 0x41=Part2, 0x7F=Panel }
Part 1 Transpose Octave0x03number: 0=No Transpose, 1/2=Octave+1/2, 0x41/42=Octave-1/2
Part 2 Transpose Octave0x10number: 0=No Transpose, 1/2=Octave+1/2, 0x41/42=Octave-1/2
Part 1 Transpose Chromatic0x06number
Part 2 Transpose Chromatic0x11number
Octave Buttons Assign0x12string, { 0=Part1, 1=Part2, 2=Both" })

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  00x410x420x43

SysexIdentity Request:    F07E7F0601F7
SysexIdentity Response: F07E00060200206B0200054806000201F7
« Last Edit: June 16, 2019, 09:56:13 am by maranite88 »


  • Newbie
  • *
  • Posts: 1
  • Karma: 0
Re: keyLab 61 engineering
« Reply #4 on: August 18, 2020, 11:12:09 pm »
maranite88, thank you so much for such a useful and detailed piece of information!

Does anybody know how does Analog Lab detect the identity of the Keyboard Controller??
Is it just by the MIDI Port name??

I tried sending the identity sysex string from a program to Analog Lab but it didn't work.

Thanks in advance!



Carbonate design by Bloc
SMF 2.0.13 | SMF © 2016, Simple Machines