The New MIDI Remote is

i got my nano kontrol working fine… cubase has script for it… just need to dig a little to find it

You probably have to copy the “keylab_essential_common.js” file from “Public/arturia” to “Local/arturia”. I believe it’s just missing. You unfortunately picked one of the scripts that are NOT the simplest here :wink:

1 Like

Is the MIDI Remote capable of outputting data on its own, by mouse clicking buttons/controls?

For example, could I assign a bunch of buttons to trigger different PLE scripts by mouse clicking the buttons?

btw, fantastic work.

Look forward to checking this feature out but am fairly new to this whole part of DAW work. Would be good if cubase did a deep dive tutorial in an “explain it like I’m 5” way for newbies to get up to speed.

Also bodes well for an updated CC121 at some point in future that can display paramter names on LED screens beneath each control knob and update as you change channels…


Not exactly. You would have to use something like TouchOSC together with MIDI Remote for your mouse-click approach.

SB need to put a layer control on those quick controls. You can do it with VSTi’s already by opening the VSTi remote racks on the right and change page, I made a request here:-

If they put that in, I don’t know if it would work for inserts too, but it’s certainly something that we need to have as the quick controls are picked up from the first page of each default remote map. And within those remote maps are multiple pages.

Did you need to look for it? I have a MacBook Pro that saw the NanoKontrol2 immediately automatically, but my MacPro doesn’t see it. The folder with .js files is present in the MIDI Remote folder inside the app, but I cannot open the script (if that is what the .js file is) as it’s greyed out. In fact it’s not possible to navigate to the app folder so I copied out to the desktop top try manually loading but still it’s greyed out when I navigate to that folder from the “import script” page.
As the MacBook sees the Korg immediately there must be something odd going on with the MacPro, I’ve tried re-installing C12 but still no go. Anyone have any ideas? Don’t want to flood support at this time as I’m sure there are far more important bugs they’re dealing with!

I guess this feature is still a growing baby and I expect more to come in following patches.
The whole variety of settings possible (like f.e. TouchOSC) will come for sure.
Give the developers time!
For now it’s already a good step in the right direction

1 Like

Is the youth not capable of reading manuals anymore?


And you have been reading manuals back then? :wink:


Any ideas on how to split a knob range for use with key commands in the new MIDI Remote? (except for using the legacy Generic Remote?)

In the API it’s possible but not in an intuitive way. Let me guess, you want to trigger “Prev Track” and “Next Track” by turning the knob to the left or to the right?

Please could you explain how to do it in the API? Just a copy paste example would be great, if you could.

Yes, I’m more interested in Zoom In/Out, Nudge Loop Range Left/Right, nudge left or right locator left/right (those are macros) by twisting left and right, you get the picture.

I don’t know how to go about it. It seems that all assignments I can make are 1:1.

Why are you starting with the difficult things first, I am afraid that pushes the thing in the wrong direction. Nevertheless, here’s some pseudo-code that I haven’t even run. Just a blind shot:

var knob = deviceDriver.mSurface.makeFader(0, 0, 1, 3)
knob.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(15, 21)

var triggerValue1 = deviceDriver.mSurface.makeCustomValueVariable('Trigger1')
var triggerValue2 = deviceDriver.mSurface.makeCustomValueVariable('Trigger2')

var page = deviceDriver.mMapping.makePage('Default')

page.makeCommandBinding(triggerValue1, 'Nudge', 'Left')
page.makeCommandBinding(triggerValue2, 'Nudge', 'Right')

knob.mSurfaceValue.mOnProcessValueChange = function(activeDevice, value) {
	if(value < 0.3)
		triggerValue1.setProcessValue(activeDevice, 1 - value / 0.3)
	else if (value > 0.7)
		triggerValue2.setProcessValue(activeDevice, (value - 0.7) / 0.3)

The “processvalue” represents the CC-value or note-velocity in a normalized format (from 0 to 1 floating point). Here I have made a security gap between 0.3 and 0.7, otherwise you would always nudge back and forth and stay put.



Is there any chance to have buttons work to have them pressed only once? (aka press a button once to close the left zone, press it again to open it). As of right now, I have to double press it and even though it’s not the end of the world, I find it a bit annoying.

I changed the Value Mod. a bit around from absolute to Relative Binary Offset, and voila, it worked (minus for edit channel settings). But when you restart Cubase, that no longer works.

Don’t do that! The Value mode is for endless encoders only. There are different ways endless encoders notify about increment/decrement-events. All other control types MUST always use ABSOLUTE mode.
Please have a look into the Mapping Assistant. Hit the hardware-button your command is mapped to, the according mapping entry should be selected in the mapping list. You can change the behaviour of your button-command-mapping like “toggle” mode etc. If the hardware already does toggling, you’ll need to switch that off here, otherwise you must always hit it twice. And if the target command has a toggling behaviour like “Open/Close Preset Browser” you’d again switch that toggle mode off here.

1 Like

I’m not starting with these. I am done with all those regular functions I needed, they have already been assigned, since it was so easy! :smiley:

Ah, thank you very much for the code. Ok, I suppose the numbers would change depending on the hardware device’s knob? Absolute, INC/DEC, NRPN etc?

Is it required to start a script from scratch for this, or is it possible to edit the one I have from the surface editor?


I have made a feature request topic, about this, it could be a huge leap forward!


The Value-Mode has nothing to do with that. This “normalized” value is already on the “higher level” side and the inc/dec thing has been resolved by the system. But maybe you should just set the value mode to ABSOLUTE here and have a look at the values coming in then. You can make debug-prints in the code to monitor the values. just use

console.log('value: ' + value.toString())

They will be written into the MIDI Remote scripts console.