Using MIDI remote for plugin-specific control

I like the new MIDI remote in C12. However, while it can easily be used to control generic (like Mixer volumes) commands, the other big application, as far as I’m concerned and I believe I’m not the only one, is to control plugin parameters. These plugins can be instruments (synths) or FX controllers (eq, comps, etc). For the synths, we can often have multiple instances of the plugin that are assigned to different tracks. What I would like is to be able to control multiple instances (one at a time) of the same synth by merely selecting the track.
For instance, I have 10 different instruments using Pigments synth, and therefore 10 Pigments instances, each using a separate MIDI (or Instrument) track. I want the same control surface definition to control the same midi parameters for each synth (track) instance. Only the track-selected Pigments instance parameter should respond. I can do that with Quick controls, but there are only 8 parameters that I can control that way (and I have to define the QC’s for each instance…).
Any idea ?
P.S. I think it would be good to add this feature if not there, by using the plugin name for instance, so that every time you select a track using that plugin, the controller will control the same parameter for this instance.

1 Like

I was able to finally make this happen the way I wanted to, using latest release 12.0.20 of Cubase…
Check out this video:

Hi,

Why do you use MAX in-between, please? Do you send single MIDI Message from your hardware and convert it to multiple MIDI messages in MAX to be able to trigger multiple functions in Cubase?

Hi Martin,
Yes one of the reasons is to create a small “state machine” so that the the same knobs, buttons, or sliders can have different uses. This can be fairly easily implemented using Max and the “Mapping pages” of the MIDI Remote feature in Cubase.
But the main reason is that afaik the MIDI Remote in Cubase cannot send back info to the control surface. With Max I can use the state machine to create and send back the messages that I want to display with the small LCD screens attached to each knob, or the LED Display, or merely using the lights available for each button.

Hi,

You can send back info from Cubase to show the value on the hardware display. use the mOnProcessValueChange method, please.

Oh yes I’m sure one can do a lot of things with the API and some programming skills. But I did not want to go through the learning curve and the process of installing all the dev tools. Max is much easier (faster) to implement (especially when you know MIDI). I was referring to the MIDI REMOTE graphic interface which is the way to go for musicians and even sound engineers, rather than asking them to learn how to program… If Steinberg can find an easy way to use that interface to send back midi sequences to the control surface, then it will become really useful. Of course nothing applies for everyone and every use case, but the interface is a good compromise.

Hi,

Have you tried to set the Value Mode to Jump in the MIDI Remote Mapping Assistant? Then it sends the value of Cubase control back to MIDI.

I agree, I know Max very well. But it also costs quite some money.

Interesting tip Martin, but how do you convert that info to something compatible with McKie protocol? For example if you move the first knob it will send CC info to Cubase McKie emulation, which will return both another controller (for LED lights around the knob), and a couple of sysex messages to display the controller value/info on the LCD.
In the case of the MIDI remote, the only info which is returned is the same MIDI controller with an absolute value…

Hi,

Not really. You can do this:

surfaceElement.mSurfaceValue.mOnProcessValueChange = function (context, newValue) {
...
}

Here you can do whatever you want to. Send the MIDI Message out, generate a SysEx message, whatever… By using this I can send the MIDI CC to the V-Pot ring on the MCU and send the value to the MCU display. For the display, you can also use this:

mEncoderValue.mOnDisplayValueChange = function (context, value, units) {
...
}

This will allow you to show for example -2.23dB for the fader or L23 for the Pan values on the display.

Please re-read carefully my previous posts Martin :slight_smile:
I understand that you can do the same things using the API. I was referring to the graphic interface…

Hi,

Yes, this is the API. Do you mean the Mapping Assistant? In the Assistant this is not possible.

… which is why I used Max in the first place. :slight_smile:

my heart, my heart :sob:

Do not worry… I finally decided to use the API (working with MJ to make MCU + Instrument specific script)…

1 Like

I’ll try :joy:

…but for that I need a callback to display the time and bar like a normal MCU…
Apparently it is not implemented in the API (yet?..)

Not yet, that’s true. But it’s on the list.

2 Likes

Great !
… and for the same purpose we will need to get the track names when in track subpage. Right now we get a blank string when using mOnDisplayValueChange (or mOnTitleChange)…