NI Controllers with Cubase

Native Instruments MIDI Controllers with Cubase MIDI Remote API

I’ve been using several MIDI Controllers made by Native Instruments with my Cubase setup for quite a while. First with the Generic Remote, and starting with Cubase 12 gradually switching things over to use the MIDI Remote.

The Cubase MIDI Remote has a couple of different parts to it. It has a GUI right in Cubase that allows access to most – but not all – functionality. For more ambitious use cases, there is also an API. But that requires some programming skills and quite a bit of patience to figure out.

A little while ago, I decided to finally take the required time and effort to learn how to program the Cubase MIDI Remote API.

Fortunately, in addition to the actual API documentation, there is some example code published by Steinberg plus numerous fellow users have shared their implementations for various controller hardware devices. Additionally there’s also quite a bit of code shared at the Steinberg forums. However I didn’t find any tutorials, so that made the learning curve a bit more steep.

Common Code for 3 different devices

Since I wanted to create API code for 3 different NI MIDI Controllers (Maschine Jam, Maschine MK3, Traktor Kontrol X1 MK1, I tried to create as much common code as possible. And I split some of the configuration data into separate modules, so the main JavaScript module could stay a little bit shorter and therefore easier to understand and navigate.

Features I wanted to retire my use of the Cubase Generic Remote.

  • Access all Inserts parameters FX directly
  • Access inserts from non selected tracks/channels
  • Overcome the motorized fader pushback issue
  • Use the Transport START button like the Cubase spacebar, while also using the STOP button

There are other tricks, some other enthusiasts have done, but the above were my priorities.

Since my code seems to be structured quite differently than most other individuals have done, I don’t think it will be that interesting to many others. There may be very good reasons, not to do things the way I have done – but this way seems to work for my way of thinking. 🙂

However, just in case, some of the ideas and snippets end up being useful to someone else, I’ll share my code here under a MIT No Attribution License / MIT-0.

eMXR_MidiRemote_code-2025-09-05.zip

Warning: This code will only make sense to someone, who already knows how to set up a programming environment for the MIDI Remote API.