Novation MIDI Controller mappings problem across different Cubase projects

Novation Launch Control XL Mk2
Cubase Pro 14.0.32
Win11

I setup my Novation MIDI Controller with Cubase Mapping Assistant. All Slider, Knobs, Buttons work the way I want it. To be sure my mappings are save I exported the script as “Novation_Project_1.midiremote”.

Now If I start a new project the Novation surface is here again but without any mappings. I assume this is because the tracks of the new project have different names (“Drums”) or are missing, is this right? So I renamed the tracks with the same names as in the first project and tried an “Import Script” with my previous saved *.midiremote. But then there comes an error message “Script Archive could not be imported”.

So I am slightly confused now, do I have to do all the mappings again with any new project?

I also experimented with the (G) and (P) mapping scope, but the (G)lobal settings of different projects seems to overwrite each other.

Am I doing something wrong?
Thanks in advance!
Gery

Hi,

Global scope is used when we want a control to have a universal assignment, i.e. for all our projects.

Project scope is for when we want an assignment only for our currently active project.

Global mappings are saved in a file under[your Documents Folder]\Steinberg\Cubase\MIDI Remote\User Settings, while Project mappings inside the project.

When we export a script, the file created contains only the Global mappings. This is to be expected. Project mappings will be restored once you load the project containing them, and will override any Global mappings for the controls we’ve assigned to project mappings.

This is because most probably you’ve done a direct assignment, i.e. you’ve chosen a specific parameter, of a specific instrument plugin for a control. When we do that, Cubase will store (by default) this assignment to our project file. Now, when we open a new project, this assignment won’t be there any more.

And here’s another interesting thing. Say, that instead of having the Project scope for a VST parameter, we choose to make it Global. So then we create a new project and have the same VST to a track. There is a chance that the MIDI Remote will recognize our assignment. This will happen when the track with the VST has the very same “path” as the one we had in our older project. Think about “path” as an internal Cubase counter, based on track type. This doesn’t take into account the track name.

My suggestion: Build your MIDI Remote Surface with as many Global scopes as possible. For example, when dealing with VST Instruments parameters, instead of directly mapping to a very specific parameter, (I know how tempting this is), we can go for a more generic approach, and map it to “Parameter 1” of the instrument slot of the currently selected track. Then, by using the Remote Control Editor of the plugin instance, we can set this “Parameter 1”, to the parameter we need, say the CutOff frequency.

Still, if you insist to build upon the project scope approach, I think that creating a template with your VSTs and then open this template for creating a new project, will do the trick.

Dear m.c,

thanks for your answer, this is more or less similar to my experiences.

You wrote:
“..we can go for a more generic approach, and map it to “Parameter 1” of the instrument slot..”

I tried this, but whenever I make an assignment with the Mapping Assistant, e.g. assign a cue send level to a controller knob the assignment seems “hardcoded” to the NAME of the track e.g. “Level (1-Delay|Sends|Snare)”. This happens regardless if I use the Functions Browser or click on the object/knob in Cubase.

Such an assignment is useless in any other/new project.

So I think I will use the “creating a template with your VSTs” method you suggested.

Thanks again
Gery

Have a look at a way to do this:

As you can see, the target is the Selected Track.

Yes and no :slight_smile: The target is the track path, it’s just that Cubase brings us the human readable version, by showing the track name.

Thanks for the tip with “Selected Track”!

But since I am doing mostly Dub Reggae I need to access the sliders and send knobs simultaneously on an fixed assignment, i.e. Slider1=Drum Volume, Send1=Drum Delay, Slider2=Bass Volume and so on, as on an analogue mixing console.

BTW: I tried to program the color of the 16 lower buttons with java script. I read all the docs about Novation Programmers Guide, js, json, midiremote etc. I learned when a button is pressed I need to send an MIDI SysEx msg with the color code back to the controller. But up to now I could not find the right place in the java script to insert this code. Can you help me with that?

Thanks again!
Gery

My suggestion on this: Have your tracks fixed. For example in my setups, be it inside a DAW or out, I always have something like Keys/Bass/Pads/Pads 2/…/Drums, you get the idea. This way, even if you have your MIDI Remote setup in a generic way, you will always know what does what to what instrument exactly. No need to look at the displays.

Sure. Post the code you currently have, and I will try to help.

NovationGH_NovationGH3.zip (8.8 KB)

Thank you! The 16 buttons light green when pressed but I want a different color.

A further issue: When loading the Cubase project the first press does nothing, after the second press the LEDs and Cubase are “in sync”.

GreetZ
Gery

Hi, you’ve posted a json-based MIDI Remote Surface, i.e. one made from inside Cubase using the Mapping Assistant. If you want to have custom colors, or other sysEx messages, you have to code in javascript.

OK, I watched this video and thought I can use Mapping Assistant and adopt the generated code :smirking_face::

Cubase Custom MIDI Scripting using JavaScript and MORE!

So do I have to decide to use Mapping Assistant OR self written java code or can I mix the two methods? I used to program a lot in Pascal, C and C++ in former times but never did java :face_with_open_eyes_and_hand_over_mouth:. Is there a documentation about that to dig further?

Thanks for your patience!
Gery

Getting Started | MIDI REMOTE API

isn’t clear about this as far as I understand :thinking:.

Yes, that’s the one I would suggest.

The thing is, do we really want to script at this point? If you’re not planning to send display information to your controller (does it have displays?) then the only reason I see for diving into it is to change the color of buttons. Are you sure, this is allowed via sysEx messages to the controller? And even if it is, is it really worth it?

Please provide a link to the MIDI implementation of your controller, so I can have a look too. If I find just some time, I can get back with a scripted version of your remote surface.

This is what Novation support wrote me:

“In order for the buttons to illuminate, they need to receive the same MIDI message back as which they are sending, with their value determining the colour of the LED. You can find out more in the Launch Control XL Programmer’s Reference Guide:
https://fael-downloads-prod.focusrite.com/customer/prod/s3fs-public/downloads/launch-control-xl-programmers-reference-guide.pdf”

This is how far I came with Mapping Assistant:

From a quick look at the screenshot, I think you could easily move to a generic (global) approach instead of the Project-specific. You have to bind the volume/pan/send levels to the tracks of the mixer bank zone.

For example, say, for track 3:

Concerning the colors, indeed scripting is needed, it’s fairly easy, as long as you know what colors/rules exactly you want. What is your plan about colors?

Wow that’s great! Now I can use my controller in a new/empty project without any mapping again.

As for the lower 2x8 buttons:
An upper row button toggles the solo of the track in the color red (as in Cubase)
A lower row button toggles the mute of the track in the color yellow

The single rightmost Mute button toggles “Deactivate all mute states” (yellow)
The single rightmost Solo button toggles “Deactivate all solo states” (red)

It would be perfect if the hardware buttons are always “in sync” with Cubase, this is now not the case, I have to do one “dummy” press to be in sync.

Thank you very much for your patience!
Gery