Novation SL MkIII (MK3) MIDI Remote Script

Here’s a MIDI Remote Script for the Novation SL MkIII I’ve prepared.

It covers the following sections:

  • Mixer
  • Focused Quick Controls
  • Quick Controls (This refers to the instrument’s controls)
  • Channel Strip
  • Insert Effects
  • Send Effects
  • Commands Set 1
  • Commands Set 2
  • Commands Set 3
  • Commands Set 4
  • Commands Set 5

Each section has sub sections, for example, the Channel Strip section has the Equalizer, Gate, Compressor, Tools, Saturation and Limiter sub sections.

At the same time, it features user defined pages, which we can edit through the MIDI Remote Mapping Assistant and our assignments to knobs and buttons will update our displays.

Please read the attached file Novation Sl MK3 MC Custom Script.pdf for instructions concerning installation and usage of this script, which is attached at the end of this post.

Quick Guide:
Novation Sl MK3 MC Custom Script.pdf (1.3 MB)

Change Log:
Novation_SL_MK3_versionChangesLog.pdf (73.0 KB)

Installation File (
Novation_SL MK3 MC Custom.midiremote (1.4 MB)

Warning: The script will not work with versions prior to 12.0.50


You’re killing it with these deep integrations, great to see!
Look forward to reading other owners responses to this, as it looks a nice bit of hardware too. :+1:


Thank you my friend!

Me too :slight_smile:

It’s a great controller, no question about that :+1:

Thank you very much mchantzi
Unfortunately am out of home but I will check it immediately I will be back.
Am sure you did very good job when big mens ISO looking at issues of customer are playing GAME OF TRONE beyond a computer😡
Thank you friend again

1 Like

Thank you my friend!

I do understand the confusion and the anger, however, both sides have a point:

From the one side, we have the creator of the API (Steinberg). APIs are there to help other developers to construct their script. It would need a good amount of programmers to deal with each controller out there, and at the same time maintain/support them.

On the other side, we have the manufacturer (Novation) which has a basic implementation (HUI) and at the same time would need time to get into the API’s details and prepare something deep. That said, I’m quite sure that in upcoming products (and not just from Novation) we will see more and more scripts from the manufacturers. Everyone needs time to adapt.

Just to give an idea on the effort it involves, it took me 10-20 hours to design the script in my mind (I mean how things should work for my personal workflow and really get to know the device) and then more than a 100 to actually build/debug/reconstruct/test it. I even had one time to rebuild from scratch. And I’m not even sure if all bugs are eliminated, that’s why updates are for after all.

Anyway, I’ll be waiting from you and others to let me know of bugs and suggestions on additions/changes :slight_smile:


I’ve been waiting for your script for some time now and I’m happy to finally see it published.
Though (with your help) I have my personal script running with everything I need it will be inspiring to check out yours, so big thanks for your work and contribution!

1 Like

Glad that I helped! Sure, we may always find ideas in the script of another :slight_smile:

Not even one day passed and I had to update my script.

I’ve noticed that upon creating a new track, the volume/pan was not getting updated (to 0:0 obviously), so I had to implement a new way of handling volume/pan display values.

The updated version is attached at the original post.

1 Like

Hi @m.c ,
I don’t have this controller, I’ve been following it for some time (hopefully for a mk4 :slight_smile: ), but I appreciate your effort

1 Like

Happy birthday!

Thank you very much!

This controller and the others I own and script for, appeared in the period 2017-2018, so it’s pretty likely that their manufacturers will indeed present something new this year or the next one I guess. So it’s a good strategy maybe to wait, though in the case of such powerful controllers, I don’t see a lot to be missed if buying one now. Of course, I really want to be amazed by a new one and most probably get it, no question about that :slight_smile:

@m.c Awesome! Thank you very very much. I will test this out the next days and give some feedback. :smiley:

1 Like

Thank you my friend, I’ve already found out one-two tiny issues to be fixed (in fact I fixed them already, just testing a bit more), I’ll be expecting for your feedback!

Hi there. I followed the instruction manual (Novation Sl MK3 MC Custom Script.pdf) up to page 6, trying to go for full implementation. I could follow the instructions well and it all worked out, except the point, that i found no Code in mapOfGeneralSettings.js saying “generalSettings.strippedDown=1” instead i found “generalSettings.strippedDownVersion=1” but changed it anyways to 0. Im not sure if this is right. Unfortunately the script that is loaded, only contains 6 rather empty pages (mixer & user 1 to 5). In the manual i see you describe a full implemented script at page 7 following, but for me it doesn’t show up. I’m not sure where the problem is. Maybe you have a clou.

Hello my friend, first of all, thank you for noticing the strippedDown setting in my pdf file, which indeed has to be strippedDownVersion, I wil update my guide.

From what I see in the screenshot you attached, it looks like the script’s loading process gets interrupted. This usually has to do with either a midi port missing (this can happen upon transitioning to the full version, since occasionally the Midi Remote won’t update our ports, or with an error somewhere in the code.

Here’s what to try first:

  • Close Cubase
  • Browse to your Documents folder and then to Steinberg\Cubase\MIDI Remote\User Settings.
  • You’ll find a file starting with Novation_SL_MK3_MC_Custom and with a .json extension. Please delete this file.
  • Open Cubase again. Do not create a new project for now.
  • Open Studio → MIDI Remote Manager and go to the Scripts tab.
  • Find mine, SL MK3 MC Custom, and click on Disable Controller Script
  • Click again to Enable Controller Script and close the MIDI Remote Manager window.
  • You should now see in the lower section in the MIDI Remote tab, the message No MIDI Controller connected.
  • Click on the add button, select my script and enter the ports again. Careful here to provide the MIDIIN2 and MIDIOUT2 of the SL as the first MIDI IN and OUT ports.

It should now work as expected IF it was a ports’ problem.

However, if the issue persists, please send a screenshot of error messages:

  • Click on the little icon at the top of the MIDI Remote Window in the areas Scripting Tools, which states Open MIDI Remote Console
  • Click on the tab Error messages
  • Post a screenshot of this window so that we can see what happens.

Hi. Ok, i did as you wrote, but same result. Except, that now i only got one page “mixer”. I took screenshots of the scripts section. There is an error message at line 1313. But look yourself. I’m off now for a while, but will be back in a few hours to go on with the fault finding. Regards.

Sure you haven’t touched the code by accident? This message says that we have not defined the mCustom. Can you please attach the core file Novation_SL_MK3_MC_Custom.js here? I know it’s mine and should be identical to what I have here, but you never know what changes can accidentally happen.
By the way, which version of Cubase 12 are you running?

Hello, yes, that’s what i suspect too. Something went wrong in the script itself. Because it loads, but doesn’t show up anything. I don’t know. But im sure we will find out what’s going on here. I must say, i’m not a power user of Cubase and never used a full scripted controller in cubase. So i have no real reference how it should be when running. That said btw.
My Cubase is Version 12.0.20 Build 263. I will attach my version of the .js. I had to pack it, due to security guidelines of this forum. (24.7 KB)

Hello mate, I’m not 100% sure but I think that in 12.0.20 the mCustom.makeHostValueVariable function is not supported :frowning: Since my script relies on this function, it won’t work for you at this version. I’m really sorry for that.
I could maybe work out the script without it relying on customHostVars, however at the current point I’m not that free to rewrite the necessary parts of the script. But then again, it is a challenge to build scripts with backward compatibility, so I will surely get into this as soon as I find the time for it.
Out of curiosity, why did you stay with the 0.20 build?

Oh yes, i just forgot. :roll_eyes:
I updated Cubase to 12.0.70 and that it was. It works now. I have no time today to deeply test it. But on first glance it all is fine so far. I will give more feedback later. Thank you very much. Btw do you have a “Buy me a coffee”-Account or something? I would really enjoy submitting you a reward because you solved a long running problem to me. This is not trivial and a real gain to have my wonderfull SL MkIII in Cubase now. :+1:

1 Like

Nope, and not planning to have one, I’m just happy with sharing and a “thank you” is really enough for me at this development area.

Anyway, glad that it works now!

1 Like