Is there a way to assign both zoom in and out to one midi controller fader or knob?

Is there a way to assign things like zoom in and out to one knob or fader so that going in one direction zooms in and going the other zooms out? I see how I can assign zoom in to one fader and zoom out to another, but not zoom back and forth on one fader. It would be SOOOOOOO convenient for editing. Imagine using the fader to zoom in and out vertically and the pan to zoom in and out horizontally.

Thanks in advance for any ideas.

You can do this. But, and it’s a big but, you need to use the API and write a script. You can’t do it from the Surface Editor and the Mapping Assistant.


It can be done with endless encoders on Native Instruments controllers, because they allow you configure to send different midi note messages for turning left vs. right. And then use those note messages to trigger the desired commands in the MIDI Remote.

I use that method for zooming, for track selection and for moving the cursor left and right.

Alternatively one could use relative CC messages from pretty much any controller with endless encoders, and use some sort of translation mechanism to turn those into note messages. This will however require virtual midi cable style routing and thus is more technically ambitious. But arguably easier than learning JavaScript programming.

1 Like

Both correct, obviously.
However, out of curiosity, I created a test script some time ago. It doesn’t do anything useful apart from translating midi messages (the same as we do using external utilities). The idea is to spit out to a virtual port either the original midi message or the split ones when we want dual functionality.
The problem is that the end user has to edit a settings file in order to tell which controls to send the original message and which ones the dual messages. Other than that, it works, and we can then create a surface using the mapping assistant and the virtual port.

At the same time, one of my scripts which handles the controller can be actually setup pretty similar to send “user” messages to a virtual port that we can then use for missing mappings. I think this approach stands to reason, since my idea is to have the “basic” stuff using scripting, and then allow users to add functionality using a second surface.

Generally speaking, I think this whole issue could be resolved if upon creating a surface using the assistant, we could have multiple instances of the same control and adding rules (as for example we do in BMT). Maybe this will happen in the future, who knows :slight_smile:


Are there places where I can get the code for this kind of thing? I don’t want to spend endless hours learning to code something that saves me a few seconds a day (but would add a world of enjoyment!) And I don’t want to re-invent the wheel if someone already made an awesome one.

It’s doable without programming, in some cases. Here is mine…

I have an Akai MPD32 controller which has 3 banks of knobs that can be set as endless ones. If so, they deliver NRPN messages, as defined by the MIDI 1.0 standard, and recognized as so in the MIDI Monitor plug-in, set as insert on a MIDI track :

To be able to use such messages in Cubase, I had to defined a pair of two controllers for each of my knob in the MIDI Remote manager :

  • The first one receives the decremental message (rotating the knob to the left), which has a CC97 value in it, and is set as following :

  • The second one receives the incremental message (rotating the knob to the right), which has a CC96 value in it, and is set as following :

Each knob has to transmit the NRPN message on its own MIDI channel (in the zoom case, I use the channel 1, but, in example, I also have set a ‘nudge’ endless knob which is using the channel 3, etc.) and, of course, its own LSB control number. Otherwise it won’t work, which means that I am limited to 16 endless knobs (theoretically, I should be able to use 24, as I have 3 banks od 8 knobs available), but well… As long as it works…

Actually, I have transposed in the MIDI Remote feature the workaround I found a long time ago on the Generic Remote definitions, which were also unable to cope with true NRPN messages (the dedicated NRPN function never worked on it).

I haven’t found a more ‘elegant’ solution with the MIDI Remote implementation, stumbling on the same buggy NRPN messages recognition (Steinberg has obviously a problem with NRPN messages), unless diving in the programming stuff without being sure that it’s worth it…