Cubase 12 midi remote Arturia keylab 88 mkII

Hi, is there any script for Arturia keylab 88 mkII?


Same question!!???

I have Arturia Keylab 88 mkII here too… Any script?


There is a built-in script for KeyLab Essential. Is the hardware significantly different?

Tough not a script, this is the way I figured out how to use the build in keymapping.
After configuring your Keylab controllers DAW, you need to add the Mackie Control in Studio Setup. That did the magic for me.
Search the web for “4405748362002-KeyLab-MkII-Tips-Tricks” to find Arturias guide.

Hi and welcome to the forum,

This is the old way. Since Cubase 12, there are some dedicated scripts for some hardwares.

If you do the Mackie Control way, don’t forget to switch the KeyLab to the Mackie Control Mode. As far as I know, it’s in the Mackie HUI Mode by default.

I would love to see this made

Did this happen yet? What is taking them so long?


As @Martin.Jirsak said, there is a script for the Arturia Essential which seems to be very similar but with 8 pads instead of 12.

Maybe you can try to use it with the existing script, if it works, then modify the script to implement the missing functions?


I tried it doesn’t work well i wish they would juat add the feature until then ill just use the mackie mode way…


What exactly doesn’t work, please?

Btw, do you have the latest Cubase 12.0.40 update, please?

Transport control works which i dont need im looking for motor faders to work and knobs and scrolling which it doesnt… in mackie mode it does…


Oh, I didn’t know, the sliders and the knobs are motorised. I don’t know why the “big knob” is motorised (what is the advantage), but OK.

But it’s not a big deal to adapt the factory scripts to these changes.

In the keylab_essential_common.js file, add this line:


bellow the:


So the results are:




This should make the sliders and the knobs motorised.

To make the big knob motorised, change these 2 lines (in the very same file):

surfaceElements.aiKnob = surface.makePushEncoder(x + 3.4, y + 3, 5.6, 6.3)
surfaceElements.aiKnob.mEncoderValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(midiCh, 60).setTypeRelativeSignedBit()

like this:

surfaceElements.aiKnob = surface.makePushEncoder(x + 3.4, y + 3, 5.6, 6.3)
surfaceElements.aiKnob.mEncoderValue.mMidiBinding.setInputPort(midiInput).setOutputPort(midiOutput).bindToControlChange(midiCh, 60).setTypeRelativeSignedBit()```

I think, that's all.
1 Like


Sorry, one more thing… Of course you have to copy the script to other folder, rename the script and change the

var deviceDriver = midiremote_api.makeDeviceDriver('Arturia', 'KeyLab Essential 88', 'Steinberg Media Technologies GmbH')

line in the arturia_keylab_88.js file accordingly.

If you would just modify the factory script, this would become overwritten by the factory one during the next Cubase start.

Or copy the Public/arturia folder to the Local parent folder and adapt the script in this Local folder.

I have a Keylab 88 mk II. The faders are not motorised


Yes sorry for the miss communication my keylab mkii 61 controls are not mortized… sorry about that… im having issue where it needs midi in 2 port which my mackie mcu pro uses also so in getting midi port conflict


Then the previous code doesn’t make sense.

I would need to know the exact specification of the device, to know, how to adapt the script.

1 Like

Here are the specs for arturia keylab mkii 61 keyboard:

  • 61 key options available, each with high quality keybed with velocity and aftertouch
  • 16 RGB-backlit performance pads
  • Control bank with 9 faders and 9 rotary knobs
  • Control modular equipment with 4 CV/Gate outputs, controlling pitch, gate, and modulation


I mean the MIDI specification.

Could you elaborate more midi functionality? I would like all faders and knobs to work of not i will find a work around and use the old way… through mackie protocol…