Tool for Arturia Keylab MKII / Duplex

Hi everyone.

I’m currently developping a program with duplex for the Keylab MKII.
I think it’s finished so i give it here… please let me know if you find some bugs.
Download link at the end of the message.

I had not really be carreful about the gui as i though there’s enough light on keylab to see what you are doing and nearly every parameters send it’s name to the screen.
There’s a temp function to allow permanent message like the name of the track and temp message for the parameters that return to the last permanent 2sec. after the end of the use.

I’ll try to explain what this do…
It’s essentially for DAW mode but there’s some function triggered by USER mode so i use 2 programs run at the same time, one receive informations on standard keylab port and the other on the MIDIIN2.

In MCC, DAW commands need to be in USER mode (otherwise there’s problems with lights in USER mode, notified Arturia about this, maybe in future firmaware but i don’t think so)
Pads backlights is “always on” (firmware 1.2.4)

The 8 first PADs trigger Renoise config view, these are configured in midi default file (in the archive).
The 8 last trigger USER config 1 to 8, all mapped to specific VSTi but it’s up to you to do what you want with these, it’s done with the MCC.

Note that all react to Renoise with an idle function so every lights are trigged if you make change to track/device/automation/solo/mute/instrument GUI open/close in Renoise.

DAW Command functions:

Solo - solo selected track (light up when solo is on)
Mute - mute selected track (light up when mute is on) - can be semi lighted (unmute, mute, off)

Record - delete selected automation (pattern only).
If you start to automate a parameter, renoise will show the automation windows on the correct parameter and this button will light up. Then you have to press it to delete automation and restart to record if necessary.
If you go on a track pattern with automation on the track but not on this pattern, button will be semi lighted.
Find this super useful because i often have a record more than once to the result i want.

Read/Write - select previous / next device FX (if it’s a VST, GUI open and close with the selection)

Save : save current song

In / Out : Open Instrument GUI from pattern (not the selected instrument) and close it (button IN light up when GUI is open even when it’s open from Renoise or with the central button, see later in the desciption)

Metro : metronome
Undo : undo

Then there’s all the transport buttons (pattern previous/next for the arrow)

At the center:
Arrow : Track previous and next
Central knob : select Instrument, press on it to open GUI. When you change Instrument, if a previous one was opened (gui visible), it close (not sure it’s better like this or not, will see with more working with it).

Then we have the right controls:
There’s 2 buttons available to trigger different functions (Part1 / Part2), ‘Live’ send nothing.

Part 1 not pressed is the mixer mode:
Faders controls volume post of each track per bank of 8.
Encoders controls the mixer subset parameters (the first 8 of the track, don’t have bank here but it can be implemented)
Switches controls mute/unmute of each tracks.
Colors change when it’s mute or not, when the track is master, send or sequencer (haven’t make a specific color for group but i’ll probably add it). If you trigger solo for example, all colors adapt on the switches to fast see what’s going on.

Part1 pressed is the track mode.
Faders & Encoders controls the first 8 parameters of the selected FX.
It’s easy to make the faders control the 9-16 parameters but i find this great to automate with encoders or faders depending on the conrol.
No bank here, don’t have anymore buttons on the controller to do that but i search for a solution. If you want to automate or just control FX parameter 10 for example, yoçu have to use mixer subset.
Switches control FX selection 1 to 8. Press on already selected FX open the GUI and repress close it.
When you change the device selection, previous GUI opened close like for the instrument.

Now if you press Part2, there’s only the switches that change, you can select track directly with the switches, encoders and faders stay as they were (Part 1 define what they control).

The user mode can not be used with the same control, if i write on screen, default Arturia parameters name will ovewrite it. Not a big deal, it’s just to control VSTi and you can define every parameters name in MCC.

Now the problem is that part1/part2/live don’t send any message in USER mode and they reset all the light at every trigger so i have desactivated the light for the user mode (specially in DAW commands section). The buttons have the same functions but with no light otherwise it’s really confusing.

I search for the sysex message to ask the keylab the state of a control but i can’t resolve this for the moment. Arturia don’t want to share those informations and told me it’s private.

Same for the DAW/USER mode buttons, they send the same sysex message so in some situations, the light will not light up according to the mode selected (like if you do DAW->ANALOG LAB->USER), you just have to touch a control/butons/encoders to send a midi and the light will be correctly displayed.

So i think it’s finish, please let me know if you encounters some bugs.
There’s the whole Duplex directory just in case i’ve modified something. I try to avoid but who knows ^^
You can try the program with your Duplex directory, it should work.

Last note: you have to select manually the automation mode in the duplex interface in Effect_Track, Effect_Track2 and Effect_Mixer section otherwise it won’t record automations. Don’t know if i can select those by default. Same in the Mixer section if you want the soft takeover on faders.

Note that i use a Keylab 61 (firmware 1.2.4), not sure about the 49 and 88 but it should work.

Link to download:

To finish i’m far from an expert programmer and i’m sure the program can be optimized plus i’m not really organized in my head so there’s some redundancy but i’ll try to reduce it later.
If someone has the code to send a request for a value on a specific parameter to the keylab, please let me know, i could really improve the USER MODE with that.

Second note: thanks to the original creator of a keylab duplex tool, it’s based on his program :slight_smile:

EDIT: forgot to ask, is there a way to capture the instrument parameters name? Without the Instr Automation device…
Is there a way to have the value of the value (don’t know how to spell that) like hrtz for freq, sec for delay etc?

Sorry to add a new message but i just notice a problem when using the midi port and analog lab.
Everything works correctly but the Analog lab mode don’t write parameter name and value on screen plus the light for part1/part2 don’t light when selecting part.

You can desactivate the keylab_mkII_midi program to return to normal with analog lab but the pad won’t light as with the program and there’s some others little things…

If i start analog lab without the program started and then try to start the midi program, it tells me that the midi device cannot be opened so it seem’s analog lab use it!!! (keylab mkII port not the MIDIIN2).

Everything works fine for the DAW mode and i’ll search how to do to keep all 3 modes with the best possibles integration but for now i have no idea how to fix this.

To find a workaround for this i’ll try to bypass the midi file for all possible functions but i’m on the pad and can’t seem to find a way to observe global view from renoise?
There’s only constant and some observable like mixer/pattern view etc but i would need to have an observable about keyzone/waveform/sample_mod/MIDI… is there a way please?
The PADs send though the same device as Analog Lab so if i can’t observe the change from Renoise, i don’t know how i can light them as i want without lose some functions in Analog Lab :frowning:

I don’t know if I can help you. Here I purposefully built a tool for the KeyLab mkII. The code is open, you can consult it.

If you know how to program, I suggest you forget about Duplex and create your own LUA tool, only with what you need. This way you will control all your code and you will not depend on others.

In DAW mode, which one do you use? Have you tried routing it with MCU?

I am currently developing two broad tools that have nothing to do with this (while I wait for the API to update with other missing add-ons, with total uncertainty). However, I plan to go back to the code for my Arturia Keylab mkII tool and refine it even more. So any new information will be great.

For example, I have no idea how to change the keyboard screen names. I don’t know if it can be done using sysex.

However, I don’t want to mix things up. I know you have your problems and I don’t want to be dizzy. With MCU you can have control of almost all physical controllers via LUA and sysex.

By the way, you will not find a better ecosystem than Renoise + LUA tool + a keyboard like this to control the DAW. If the tool is well programmed, the MIDI control far exceeds any other DAW on the market.

Hello Raul.

I already have your code to check :slight_smile:
The goal is to do it outside of Duplex and i have already start the tool but i need a functionnal one fast and the tool without duplex will probably take some months to finish.

I use the standard MCU in DAW mode.

There’s a way to send sysex to screen, you can check the program to see the code but for the moment it work only in DAW mode. Probably in Analog mode too because the device is used by the program and then Analog Lab doesn’t send anymore messages to screen (exept for ANALOG LAB when you enter the mode).
But i notice that Analog Lab mode sending midi data too so i’ll keep the program as it is. I already managed to light up the button like in the standard Analog Lab mode, the only thing really missing is the preset name and the parameter name on screen.

It’s totally incredible to see the name of the FX/Track selected plus the parameter name on screen for every renoise control!!

A way to have the instrument device parameter name would be the final total integration for every plugins, that would be great!!
And the name of Hz, secondes, gain, etc…

Totally agree, this is the best way to have a perfect control, Keylab + renoise is the perfect combination.

I miss 2 sysex codes for the keylab, ask for a specific hardware value (most important) and change preset. Don’t know if these exist though they exist on the first keylab…

Anyway don’t hesitate to contact me if you have some infos or want somes, i would be happy to share :slight_smile:
I’ll post a new version probably in few hours, just the time to update the Analog mode as far as i can.

Edit: here’s the code to send text, probably faster than checking the code:
0x00,0x20,0x6B,0x7F,0x42,0x04,0x00,0x60,0x01,string to enter on line 1,string to enter on line 2,0x00
You can use one string if you want but i find it simpler to have one for both line.
You have to check for 16char on every line, otherwise the second string can be merged between the first and second line.
There’s a code to send directly on the second line but it has a bug… anyway i have a strange sign at start of the line so i use one code.
Hope that’s help :slight_smile:

Here’s the new version.
Corrected some minor things and added Analog Lab “support”.

So to keep the use of the midi keylab mkii port, i’ve tried to reproduce the Analog Lab functions.
Of course, it’s not as integrated as the original mode but, the lights are ok (part select and category select), and the parameters can be displayed on screen.
You just have to add an instr. automation on the analog lab track (or track in use) and select Analog Lab on the device.
Then all the parameters send their name corresponding to the original controls of Analog Lab.

This work for part1 and part2, unfortunally, there’s not enough parameters in the Instr Automation to make the third part. 3rd part work as normal but don’t send name to the display.

The value shown is the midi value (not hz for cutoff etc)

Last thing missing is the preset name, don’t know if i can get them, i will look later.

Note: litlle change about buttons read/write, now they are assignable in USER MODE (Used to select preset in VST Instrument) It is for FX+/- in DAW/ANALOG MODE.

In User mode too, the button record now resend the correct lighting for the rare case when it’s not corresponding to the mode activated on the hardware (automation button in DAW/ANALOG LAB MODE).