bjoluc / cubase-mcu-midiremote

Cubase MIDI Remote Scripts for DAW Controllers using the MCU Protocol
MIT License
34 stars 8 forks source link
cubase mackie-control mcu midi-controller midi-remote-script platform-m qcon-ex-g2 qcon-pro-g2 ssl-uf1 x-touch x-touch-extender x-touch-one

cubase-mcu-midiremote

Latest version GitHub Workflow Status GitHub release download count Minimum required Cubase version semantic-release Support me on Ko-fi

Cubase MIDI Remote Scripts for DAW Controllers using the MCU Protocol

Surface Screenshot

The following devices are explicitly supported:

* See Supplementary Remarks for Individual Scripts

Other MCU-compatible devices may work with any of these scripts, but their device surface is not explicitly displayed in Cubase. Feel free to open a discussion on GitHub if you would like your MCU-like device to be supported.

TL;DR

The Cubase MIDI Remote Scripts developed in this repository replace the default Mackie Control device setup for various MCU-like devices. They can be set up with single standalone controllers or with an arbitrary combination of standalone and extender units. The mapping is reasonably close to the default MCU mapping, with a few (workflow-)improving changes. Nevertheless, you can easily re-map most control elements using Cubase's MIDI Remote Mapping Assistant.

Motivation

Since version 12, Cubase supports the customized integration of MIDI controllers via a new MIDI Remote JavaScript API. Several vendors are producing DAW controllers similar to the Mackie Control Universal (MCU) which are traditionally set up as Mackie Control devices in Cubase. Creating MIDI Remote API scripts for these controllers allows to improve the mapping where applicable and offers users the possibility to override parts of it themselves via Cubase's MIDI Remote Mapping Assistant.

Moreover, some controllers have features that are not available with the default Mackie Control setup in Cubase. For instance, the Behringer X-Touch has an individual, RGB-backlit scribble strip display per channel, as well as integrated LEDs in most buttons. A MIDI Remote API script can illuminate these scribble strips according to their tracks' colors, avoid unnecessary display padding characters, and light up buttons while they are being pressed.

Setup

The script detects your device(s) based on MIDI port names. If you are using a standalone device (main or extender) or one main device with one or multiple extender(s), Cubase should automatically set up the MIDI Remote. Alternatively, you can manually add it by clicking the "+" button in the lower zone's MIDI Remote pane and selecting vendor, device, and input/output ports yourself.

Configuration Options

The very top of the MIDI Remote script file declares a number of configuration options. You can edit these options with a text editor to match your preferences. Each option is documented in a comment above it. For an overview of all options, please refer to the source code on GitHub.

Mapping

The mapping is similar to Cubase's default Mackie MCU Pro mapping, with the following exceptions:

[!NOTE] In the rest of this document, all buttons except the six encoder assign buttons are referred to by their Cubase MCU mapping labels. I recommend using a Cubase overlay for your device, unless your device already has the Cubase labels printed on it, like the iCON QCon Pro G2. Alternatively, page 7 of Cubase's remote control devices documentation provides a Mackie MCU Pro overlay which you can use to figure out the Cubase button labels for your device.

Encoder Assignments

The table below summarizes all available encoder assignments:

MCU button label Cubase button label Available parameter pages
Track First
  1. Monitor
  2. Pre Gain
  3. Phase
  4. Low-Cut Frequency / Enabled
  5. High-Cut Frequency / Enabled
  6. Selected Track Quick Controls
Pan/Surround Pan Pan
EQ EQ
  • EQ Bands 1 & 2 (8 encoders)
  • EQ Bands 3 & 4 (8 encoders)
Send Last
  • Send Levels / Enabled (8 encoders)
  • Send Pre/Post (8 encoders)
Plug-In Plug-Ins All Remote Control Editor parameter pages of the currently focused plugin (all encoders)
Instrument Dyn/FX/Aux
  • Remote Control Editor parameters of the selected track's VST instrument (all encoders)
  • Channel Strip Gate (8 encoders)
  • Channel Strip Compressor (8 encoders)
  • Channel Strip Tools (8 encoders)
  • Channel Strip Saturation (8 encoders)
  • Channel Strip Limiter (8 encoders)

Buttons

Miscellaneous

Drawbacks

Current limitations of the MIDI Remote API:

Supplementary Remarks for Individual Scripts

Behringer X-Touch One - The X-Touch One script does not provide a `devices` config option. If you want to use an X-Touch One with an extender, please use the X-Touch One script and the X-Touch script separately. - The X-Touch One does not have encoder assign buttons. To make up for this, the F1 button is mapped to cycle through the following encoder assignments: - **1** Pan - **2** Monitor - **3** Pre Gain - **4** Low-Cut Frequency / Enabled - **5** High-Cut Frequency / Enabled - **6** Send Slot 1 Level / Active - **7** Send Slot 2 Level / Active - **8** Send Slot 3 Level / Active - The F3 button turns the push encoder and the jog wheel into controllers for the value that's currently under the mouse cursor – like the Steinberg CC121's AI knob. - The F4 button is mapped as "Shift".
iCON Platform M+ - The Mixer button is mapped as Shift - The Platform M+ does not have encoder assign buttons. Instead, pressing the Channel Left/Right buttons while holding Shift (Mixer) allows to navigate through a number of encoder assignments. Those are: - Pan - Monitor - Pre Gain - Low-Cut Frequency / Enabled - High-Cut Frequency / Enabled - Focused Quick Controls - EQ Bands 1 & 2 (8 encoders), EQ Bands 3 & 4 (8 encoders) - Send Levels / Enabled (8 encoders), Send Pre/Post (8 encoders) - Channel Strip Gate (8 encoders), Compressor (8 encoders), Tools (8 encoders), Saturation (8 encoders), Limiter (8 encoders)
SSL UF1 - The UF1 script does not provide a `devices` config option. - The first encoder page of the "STRIP" encoder assignment ("Instrument" in the encoder assignment table above) maps the V-Pots to the Focus Quick Controls instead of the selected track's instrument. It is enabled by default to assign a consistent and useful function to the four V-Pots out of the box.

Troubleshooting

Having issues with the scripts? Here are some common problems and potential solutions you should try before reporting an issue:

Some buttons do not work as expected

You can re-map most surface elements (buttons, faders, encoders) using the MIDI Remote Mapping Assistant in Cubase. Those mappings are stored as JSON files in a User Settings folder at Documents/Steinberg/Cubase/MIDI Remote/User Settings, next to the MIDI Remote Driver Scripts folder. If some button/fader/encoder isn't working as expected – especially after an update to the script – it is always worth a try to remove the user setting files (those starting with your script's name) to make sure they don't interfere with the script's default functionality. Afterwards, restart Cubase to reload the MIDI Remote scripts and settings.

If that still didn't help, disabling and re-enabling the controller script can solve some mapping issues as well.

Some displays are lagging or faders are stuttering heavily when reading automation

This might be caused by another source sending MIDI data to your device, for instance Cubase's default Mackie Control remote device integration. Make sure you have removed all Mackie Control remote devices in the studio setup window, or that you have selected "Not Connected" for their ports.

The SMPTE/Beats button doesn't change the time format

The SMPTE/Beats button is mapped to the "Exchange Time Formats" command which switches between the primary and secondary time format. The button has no effect when both time formats are identical, so make sure you have selected different primary and secondary time formats.

One or multiple devices are unresponsive

Try disabling and re-enabling the controller script in the MIDI Remote Manager to make Cubase re-detect the script's MIDI ports. If that doesn't solve it and the unresponsive device is connected via network MIDI, it might help to configure a lower bitrate.

How to disable and re-enable a controller script?

How to disable and re-enable a controller script