Arturia Keylab transport controls.

If I remember it right the Roland pedals are reversed from any other pedals. Meaning they have a connection between tip and sleeve, when pressed the connection gets cut. Other pedals have no connection until pressed. Some Roland pedals have a switch to reverse the behavior.


that works for Keylab 49 - 88 :

Open in Cubase Transport > Project Synchronization Setup > Machine Control Input section
Click “MMC Slave Active”
In MIDI TimeCode Source Section and select your Keylab Keyboard
MMC input : ALL MIDI Input
MMC Device ID : 127

Thats all



1 Like

Thank you Ruedi.

But do you have an idea how to activate the loop button in the keylab transport control?
And the play/pause button does only play, no pause.

Regards, Mike

under Cubase 11, under MMC Input, I had to select specifically my Keylab 88 in order for it to work. (selecting All MIDI Input didn’t work). But FINALLY after 2 years since I purchased my Keylab 88, and no working keylab transport before (started with Cubase 10) I discovered your fix, yay!! Thanks!

Didnt really work with keylab 25. Cant find any mapping on net for keylab 25 with cubase 11.

I can’t get the Transport controls to work in Cubase 12 with My Keylab 88. Help please

I just had the same question myself. I am, by the way, specifically referring to the Keylab 88 and not the Keylab 88 Mk II.

The answer for me was to:

  1. Turn on MMC Slave Active under Transport → Project Synchronization Setup → Machine Control.
  2. Select the Keylab 88 as the MMC Input on the same screen.

And that’s it. I am using Cubase Pro 10.5, but the online v12 Operation Manual indicates the same settings exist in the same place (see Synchronization → Project Synchronization Setup Dialog → Machine Control Page).

I hope this helps you get it working!

I’ve also got the first same Keylab 88 but those settings do nothing for me. Can’t get it to work. The Controller works perfectly in Ableton

So, I upgraded to Cubase Pro 12 to see if I could help further and found that the settings I supplied don’t work if you have configured the KeyLab as a MIDI Remote Controller.

You can see for yourself if you Disable Controller Script for your KeyLab in Studio → Midi Remote Manager. As soon as you do this the transport buttons (except Loop/Cycle, which is a different story) will start working.

[EDIT] Ah, yes - now I see this post (Midi remote control doesn't capturing MMC?) explains what I was observing: MMC is not supported (yet), and the transport buttons (with the exception of Loop/Cycle) are mapped by default as being MMC controls. There’s an ugly hack that works which is to use Arturia’s MIDI Control Center to map the transport buttons to send (for example) controller messages (I used #110-114) and now you can add them to your Midi Controller map in Cubase.

Unfortunately, I cannot make the LEDs work the way I would like. So far the best I can do is map the buttons (in Arturia’s MIDI Control Center) as Gate triggers and then specify Toggle = On in the Cubase map (although I actually set Toggle = Off for REW and FFWD). This allows them to function correctly, but the LEDs don’t show the actual state of the transport in Cubase - they light only for the time that you push them. I’m a bit disappointed with that, but at least I can control the transport.

On the other hand, the Loop/Cycle (mapped by default to controller #55) does tend to work correctly since there is no interaction between it and other controls (unlike Start/Stop/Record, for example, which can each affect the others’ state). For this to work, you will need to map it as a Toggle trigger in Arturia’s MIDI Control Center and as Toggle = Off in Cubase (since the Keylab itself will be controlling whether the toggle is on or off, and so Cubase doesn’t need to interfere).

Note that you will run into issues, though, if you change the state of it by any means other than via the KeyLab, since there is no feedback of state to the KeyLab that would cause the light’s state to change if the Cycle control’s state was changed, for example, via the Cubase UI.

Thanks SO MUCH for this info! I will get scripting asap!!!

No problem - if you hit any roadblocks, let me know. I should mention that I ended up setting the Transport buttons (including Loop/cycle) to use controllers #52-57 since I discovered clashes with other defaults as I worked through mapping the remaining controllers.

I hesitate to post these in the general locations that I see popping up for people to add their templates since it is so dependent on the modified mapping, but the attached ZIP contains two files that will get you going if you want something to have an initial crack at it:

Mapped Transports.keylab88 - Arturia Midi Control Center template with remapped transport controls
Arturia_KeyLab 88.midiremote - The Cubase Midi Remote script

Mapped (7.9 KB)

It’s a WIP, but it should have the basics of what I talked about in the above post.

Best of luck!

P.S. A couple of things to note:

  1. You will notice two sets of encoders and faders. These are for banks 1 and 2.
  2. Ditto the repeated switches underneath those banks of encoders. These two rows are for the “short press” and “long press” feature supported by these buttons.
  3. There are a couple of additional buttons under the Param and Value encoders on the left. These are for the select (push) feature that these encoders support.
  4. You will see my fader banks only have 8 faders, not 9. This is entirely due to a custom reconfiguration involving a set of stairs and an excited dog on the day I brought home my KeyLab. You will probably want to add the ninth one yourself.

Everything else should be fairly obvious.


Thanks for this AWESOME help! This is what one would expect from Arturia but they just shrugged their shoulders and said sort yourself out…

You’re welcome, my friend - I’m glad that it appeared to help.

I see also now that oqion has been pointing you down the same path:

I should point out that I only called this approach an “ugly hack” above because I dislike that the LEDs don’t toggle on and off. I know that’s pretty minor, but that’s what’s ugly about it. Everything else seems to work just fine.

Well, except perhaps for this: BUG? VST Remote-Control Focus not respected in Cubase Pro 12

…and I’d like to be able to use an encoder to select patches and so on instead of having to map previous/next buttons. Consequently, I’ll probably be diving into the API instead of doing it through the new MIDI Remote editor to see if there’s a way to do that.

I read in the other thread that you’ve been frustrated by the MIDI Remote feature up until now. I upgraded mostly for that feature, so I’m glad to find that we’re able to generally achieve what we’re looking for, even if there are a couple of remaining irritations. I hope you are at least equally satisfied.

1 Like

I still battle to get the LOOP button to work properly. It sometimes activate Cubase’s loop and sometimes not. Then the LED is out of sync with Cubase. There are way too many things to fiddle with - I think my signals are going in circles atm.

PS: I mapped the transport functions to the PADS and I must say, I actually like the feel of them better - it activates with just a quick finger slap :grinning:

Hey, redskyroad -

I just spent a little time looking at the API and have great news - everything we’re looking for (including transport LEDs toggling in synchronization with the host transport regardless of the source of the transport command) is achievable in script.

It seems I could have (and probably should have) provided you the JSON representation of the MIDI Remote definition yesterday, but if you can until tomorrow I think you’ll be pleased with what I end up with (it’s too late right now for me to finish it up). I’ll provide the JavaScript with plenty of comments so that you can tweak it as much as you like, although you will be able to use it as-is if you prefer.

Watch this space… :slight_smile:

I have NO idea about scripting… But it sounds promising

OK - having been waylaid a little by other less important matters (work…), I dove deeper into the API than originally intended and I have a first pass that should show you my vision while keeping you frustrated that it’s still all ever so slightly out of reach of being exactly what you want. I’d appreciate some feedback, though, to make sure I’m on the right track.

VERY IMPORTANT!!! The first thing the script does is dump a new mapping into your Keylab’s working memory, overwriting anything you have in your working memory. It doesn’t write anything to the preset locations, so if you have any custom mapping that you have performed on the keyboard itself or via MIDI Control Center, make sure to either store it as a preset or back it up in some other way (e.g. via MIDI Control Center). I’d feel a little bad if you lose settings that you have spent hours crafting, but there isn’t going to be anything I can do about it if you don’t take this precaution prior to importing the script.

A couple of additional notes:

  1. The duration switch operation mode on switches 1-10 are turned off. This is because of Cubase’s behavior when it receives two MIDI messages with the exact same timestamp, as the Keylab sends on short presses. I may take this up with Steinberg at some point, but for right now we have bigger fish to fry.
  2. I’ve mapped the Bank 1 and Bank 2 buttons to cycle through the defined mapping pages BUT the Keylab switches between the two banks. When you’re on the Mixer mapping page, then, the encoders, faders and volume knob won’t work if Bank 2 is lit. I’ll tackle this at some point.
  3. I have mapped switches 1-8 to mute channels 1-8 in the currently selected mixer bank.
  4. Use switches 9 & 10 to select previous and next mixer bank, respectively.
  5. I haven’t done anything with the pads yet.
  6. The pitchwheel isn’t hooked up.
  7. The Program and Category push encoders support both twisting and prodding, transmitting different control codes for each mode of interaction. Consequently, my earlier initial pass of adding a button under the knob is no longer needed. I don’t have these configured to my taste at the moment, though, so they’re simply indicating “left” and “right” rather than an absolute value (I’m not at by board right now to check, but from memory I suspect they’re operating in relative mode).

Now, some points of particular interest:

  1. You can use the MIDI Controller editor to map controls that I haven’t mapped yet. Right click the control and select Pick for MIDI Remote Mapping.
  2. You can even re-map buttons those that I have mapped by default!
  3. Enjoy the transport and how the LEDs stay in sync, even when you change state via the UI or some other means!
  4. Marvel at how the colors of the encoders and faders sync with the selected mixer bank!
  5. Be amazed that the mute switch LEDs change to show the current state of the associated track mute buttons!
  6. Coo over the automatic labeling of mapped controls!
  7. Chuckle at the behavior of the encoders and faders operating in pickup mode!

OK - so with the exception of the control of the LEDs, all the groovy stuff comes without any (or much) effort courtesy of the API, so as you can see I’ve had a lot of fun discovering what can be done beyond the drag-and-drop mapping that you and I both started out with.

The code is a bit ugly at the moment and I’ll probably look to tidy it up, but functionality comes first. As I noted above, there are some quirks that definitely need attention and I’ll get around to that at some point. When I do I’ll probably formalize it by creating a fork in GitHub, but until then I’d warn you (and anyone else) to treat this as demo-ware. You may find it serves a purpose and thus fills a gap, any by all means be happy with it as it is, but do expect that there will be quirks that may annoy. I will update it over time.

Let me know how you get on, and have fun!

Arturia_KeyLab 88_mk_i.midiremote (32.2 KB)


This looks awesome! Gonna try it tonight! Will let you know how it goes.
Thanks for getting involved in this!

You might want to try this version instead.

I stumbled across some undocumented methods which allowed me to setup the encoders to use relative mode. This means there’s no jumping and or any need to use pickup mode. Feel free to compare the two, but I prefer this one.

If you’re interested, I already called out the lack of documentation here:

And here is v0.2:
Arturia_KeyLab_88_mk_I.midiremote (38.0 KB)

1 Like

I’m in Cubase Pro 12 with my Arturia Keylab MKII and I’ve tried setting the MMC input to Keylab mkII 88 with the MMC Device Id set to 127 along with the timecode setting MIDI input as Keylab MKII 88 but I’m not having any luck. getting the basic transport buttons to work. Tried disabling controller script as well but that doesn’t seem to be fixing it.

Any ideas might be up here?