Issue using endless knobs with C6 commands... [SOLVED !]

Hi, all

I have an issue trying to use the endless knobs of my MPD32 controller as increment/decrement knobs within a Generic remote definition. I have 8 physical such knobs which can be extended to 24, as they can be setted independently in 3 control banks (from A to C).

Actually, the problem is that, using such a knob as an ‘ordinary/absolute’ one (with dedicated CC address) works until you reach the 0 or 127 value for the address set for it.

So, as I want to use several of them as true endless knobs, I was thinking that using them as NRPN controllers would be the solution. This is where the issue begins. As an example, I want to use the 3rd knob of the Control bank B to control the ‘Nudge+1 Frame’ command. Testing this, I setted it as following in my MPD32 :

Control bank B, knob 3 (K11)
Mode : ‘INC/DEC’
(the mode needed for the knob to be used as a NRPN controller)
MIDI channel : 8
Bank M field : 54
(the MSB bank used)
Bank L field : 0 (the LSB bank used)

In Cubase Generic remote definition, I setted the knob as shown in the DeviceSetup_NRPN.png attachment. Maybe I did something wrong, here : any advice is welcomed…

The problem is that the knob does nothing. I tried different settings, such as using, instead of the ‘Command/Transport/Nudge +1 Frame’ definition, the ‘Transport/Device/NudgeUp’ one, or changing the flags (‘Receive’ ticked/unticked…). To no avail…

What is strange is that Cubase recognizes perfectly the NRPN messages sent by the MPD32 (see the ListEditor_NRPN.png attachment). Each time I slightly turn the knob, I get a 5 events block with the correct NRPN messages sequence, this, with the expected ‘Data Incr’/‘Data Decr’ differenciation, whenever I turn the knob to the left or the right. Seeing this, I guess that the problem doesn’t come from my MPD32 remote controller.

So, the question is simple : I must be missing something obvious for this to work, but what ?

EDIT : I made a mistake, setting the MSB-LSB as 54-0 on my MPD32 : this gives an address of 54*128 = 6192… So, I inverted it as 0-54, but the problem sadly remains the same…

EDIT 2 : still unable to find the solution. Some, in different forums as well as here, suggest to manually activate the 4th or 5th bit of the controller ‘flag’ value in the Generic Remote definition xml file, which means add 8 or 16 to it. Doesn’t work either, and AFAICS, this value seem to be coded only on 3 bits, as the maximum value reachable is 7, using the ‘Device setup’ window dedicated panel…

So, I made a first : a support request about it with MySteinberg account… Just hope I’ll get an answer or, at least, a workaround. Will keep you informed…

NRPN has max value of 16383, not 127. Try to set it to that.
In the generic remote XML, add 16 to the flag. Instead of 5, make it 21.

Try to disable the Relative flag, since Relative needs 1 and 127 for down and up (or 1 and 16383 when using nrpn).
I’m not sure how Cubase handles incr/decr, but definitely not using Relative mode.

If nothing works, can the MPD send these kinds of messages instead of incr/decr?

Another thing to check is whether the MPD has memory. Try to set the midi output to it and add the “Transmit” flag.

Hi, Soul-Burn, and thanks for chiming in…

Since starting this thread, I think I tried everything I could think of, sadly…

I tried to set maxvalue at 16383, 127 and even 1, as the incr/decr value parameter received from my MPD32 is always 1. From this, I also tried each of these settings with the flag value at 0, 8, 16 and even 24 in my MPD32 Generic Remote definition file. Once done I changed every possible flag combination possible from ’ , , ’ to ‘R/T/R’ (0 -> 7) in the ‘Device setup…’ window. Took me a while, and I got this way any possible flag values from 0 to 31…

Whenever I save my MPD32 Generic Remote definition, Cubase updates only the 3 last bits of the flagvalue, which means that it keeps the manually setted 4th and 5th bits of it (when manually adding it at a 8, 16 or 24 value). But no matter all the combinations tried, it still doesn’t work.

About the incr/decr format, the MPD32 only send a 5 events block, as following (if the address is set to MSB:000 and LSB:000 in the MPD32) :
C99 -> 0
C98 -> 0
C96 -> 1 (incr) / C97 -> 1 (decr)
C99 -> 127
C98 -> 127
Seems logical to me as the NRPN incr/decr only uses 1 byte (not 2, as a NRPN fine adjustments such as pitch bend, which would use one byte for C38 and another for C6). And, I checked it, it’s the only way the MPD32 can send NRPN controllers messages, sadly.

So, I’m still without solution, here. Would like a feedback from someone in Steiny crew to explain us how we are supposed to set Cubase for actual NRPN messages reception, as I find incredible that a flagship host such as Cubase, with all its supposed MIDI ability, is not able to cope with endless knobs controllers… :confused:

Additionaly, I would like feedbacks from anyone here who uses such knobs to control Cubase, if there are any…

Thanks again !

I don’t know if Cubase works with inc/dec :frowning:

However, if you’re up for a bit more work, we can work to fake relative message that Cubase likes using Midi-ox.
Get it from here
It’s a very powerful (and low latency) midi monitor and editor.
You will have to add triggers that replace C96 and C97 with a combination of C6 and C38 (NRPN data insert) with values 1 and 16383 and set Cubase to accept the parameter as relative.

I opened a ticket with Steinberg for this over a year ago, as I have an MPK25. sadly its still unresolved (even in Cubase 7).

Let’s see how things could go with this one. I knew its existence but never felt the need to try it as, for me, the Input Transformer solved my MIDI problems until now.

Will install it in the following days and keep you informed about how things go.

Thanks again !

I was a little afraid to read something like this… Just hope that the one I just opened will end differently.
Thanks, anyway…

Input transformer can do the trick here, but unfortunately just for a single track.
Midi-OX has something similar to the this transformer, but it’s outside of Cubase.

However! You might be able to do some magic using the transformer and just a virtual midi cable, without MIDI-OX.
First, you’ll need a virtual midi cable like loopmidi, loopbe or MidiYoke. I’ve had the most luck with loopmidi, available here

  1. Create a virtual MIDI cable in loopmidi.
  2. Restart Cubase so it sees the cable.
  3. Create a midi track in Cubase and set its input to be your MPD.
  4. Set the output of this midi track to the loopmidi cable.
  5. Create a generic remote and set its input to be the loopmidi cable.
  6. Place some transformers on the midi track, set to “insert exclusive”:
    A. C96 to C6 & C38 with the value 127 for each.
    B. C97 to C6 with value 1 and C38 with value 0.
    That should transform the value without an external program other than the midi loop cable.
  7. Set the generic remote to receive Relative value.

That should do the trick.

Hi again, Soul-Burn,

Sadly, don’t have the time to test all this right now.

I didn’t try the Input Transformer, yet, for this issue. But maybe, as I use the Input Transformer as a ‘global’ setup on all my MIDI/instruments tracks, I could get something useful with it and your suggestions.

I’ll try all these tomorrow afternoon and keep you informed here. Thanks !

OK this won’t work because relative only works for NoteOn message and not NRPNs.
I think you’ll have to use a different approach :frowning:
That being:

  1. Using the controllers as normal CCs from 0 to 127, and enabling Soft Takeover in Cubase.
  2. Use a programmatic approach to convert the NRPN inc/dec to NoteOn with 1 and 127 (Midi-ox might do that).
  3. Use a programmatic approach to store current values receive from Cubase and send the correct values upstream.

Before we’re done, I’d like you to check whether the MPD32 can receive values from Cubase, if it can, it can solve our whole mess.
Set the MPD to CC mode, simple 0 to 127, and the same in Cubase.
Set the values as Receive and Transmit.
Change a value in Cubase. Did the value change in the MPD?
Change a value in the MPD, did it jump or did it continue from the correct spot?

I add to the ‘flag’ setting in my MPD32 Generic Remote definition file an 8 value, as I supposed that this is the correct value for the Soft takeover to be active. It doesn’t work - stating this, I mean that using the involved knob leads to the same behavior as if the flag 4th bit value was not set.

I failed configuring MIDI-OX properly. The whole thing is cryptic and the ‘help’ is useless (see the MIDI-OX_Settings.png attachment). I can’t get the configuration in order to have this simple routing :

E-DSP MIDI port 2 --> MIDI Mapper --> MIDI-OX Event port --> MIDI Yoke 1

Unless I’m completely dumb, I think that this is the routing to get MIDI-OX transform an incoming MIDI controller message to another one. It simply doesn’t work and the ‘Help’ is absolutly of no… help : no examples, and as often in so-called help/user manuals, there are general considerations about what the software can do but no actual description and/or step-to-step way to do so. Few questions here :

  1. why doesn’t the MIDI-OX Events port appear in the MIDI Inputs panel ?
  2. How are the MIDI Mapper and the MIDI-OX Events ports interact ? No description about this.
  3. What does the Monitor output window actually shows ? The message from the MIDI mapper or the MIDI Yoke 1 output ?

The result is that, no matter what I try, the best I can get is a filtered (why the filtering, by the way ?) message as output, despite the added line in the ‘Transform map’ dialog to change any NRPN CC96 message to a Ctrl 54 one (see the MIDI-OX_TransformMap.png attachment)…

Could you be more precise, here ?

No, it doesn’t receive realtime CC changes, but this is probably because the MPD32 MIDI input connection is designed only for synchronizing it to another device and also to receive already saved SysEx configurations. But maybe it also has something to do with the fact that I use the MPD32 with MIDI cables, rather than an USB connection, who knows ? Beside this, changing a value on the MPD32 continues from the correct spot in Cubase.

So, the whole thing seems to be without solution and i’m almost giving up. Not worth the hassle… But thanks again for your help.

The only thing that I’m noticing is that the so-called full implemented MIDI capable Cubase host is not able to cope with NRPN incr/decr messages… :imp:

Steiny ? Chris Dobbs (as I see him interviening in different threads here, in the C6 forum) ? :confused:

You should have just “Out to MIDI Yoke” in the “midi outputs” and just “E-DSP” in the inputs.
First see that this works:
In Cubase set a generic remote to receive from “In from midi yoke”.
See that your controller causes output in midi-ox, and then in Cubase.

I see in mapper there’s “Map NRPN Data increments”, I think that would help.
Also, have the min and max of Value 2 set to 1 and 127. See if something appears in the output and in Cubase.
If you get 1 and 127, you’re there.

OK… just setted again the Outputs to only “Out to MIDI Yoke : 1”. The result is that I no longer get messages in the Monitor Outputs window… Again, what is the ‘MIDI Mapper’, actually ?

I also checked in Cubase, and there is no MIDI Yoke port, whether in the MIDI ports category of the ‘Device setup’ window or in the ‘MIDI Input’ list of the Generic Remote definition… Cubase seems to ignore anything MIDI-OX related : it continues to record all the NRPN incr/decr messages as if MIDI-OX wasn’t even running.

Did you restart Cubase after starting Yoke?
There might be a problem with Yoke on 64-bit systems, I don’t remember. Make sure you see it in Cubase, in the generic remote section.

The mapper takes certain messages, and replaces them with the other messages. Ranges are mapped in sequence.
In your image, it maps NRPN number 96 with data between 0 and 1 to Ctrl 54 with value 64.

Make it look like the attached image (ignore the lines marked in red).

This should map INC to 1 and DEC to 16383.
Set the controllers to relative in Cubase.

In the XML, you should have flags set to 21, for example:

I’ve tested it now on my setup and it seems to work.
Just note that if you want it to move faster, you’ll have to tweak the parameters, I’ll explain if needed.

Waaaaaaaaaait a sec. Just now I realized we’re on the C6 forums, meaning you use C6.
Haven’t used C6, but in C5, the flags should be 13 instead of 21. Try that.

Hi again, Soul-Burn

I think that there is indeed a problem between MIDI Yoke and systems running under a 64 bits OS… Or maybe the MIDI port routing is still wrong, I don’t know.

Still no MIDI Yoke ports appearing in Cubase (6.5.5, the 64 bits version), even after setting the translation map exactly as the four last lines showed in your attachment, restarting my DAW, immediatly launching MIDI-OX then Cubase. FWIW, I also tried with C5.1.1 (again, the 64 bits version) : exactly the same issue.

EDIT : the 64 bits OS is not the problem. The issue comes from whether it’s the 32 bits or 64 bits Cubase version that is used. I tried using C6.5.5, the 32 bits version, this time, and MIDI Yoke ports appear as available ones. But now, Cubase doesn’t record anything related to my knob setted as NRPN incr/decr controller. So, I guess that there is a routing problem left in MIDI-OX.

But, anyway, as I don’t want to use the only 32 bits version of Cubase remaining on my system (would it only be for the memory that BFD2 is taking), I think that there is no solution left involving the MIDI-OX/MIDI Yoke bundle…

I add to the ‘flag’ setting in my MPD32 Generic Remote definition file an 8 value, as I supposed that this is the correct value for the Soft takeover to be active. It doesn’t work - stating this, I mean that using the involved knob leads to the same behavior as if the flag 4th bit value was not set.

Soft takeover works for me when I set the value to 9. did you get any feedback from Steinberg (since you opened a ticket)?

Interesting… And you are right, after a closer look (I was focusing on the NRPN incr/decr issue), soft takeover works, but with an annoying issue : it seems that it no longer works if you reach the zero value of a controller. Things are set as following in my Generic Remote definition flag for the knob involved (set as a normal controller, ch : 8, address : 54, flag : 'R, , ’ in the ‘Device setup’ window) :

K 11 (B3)1767541279

I tried this to control the MIDI fader of the only MIDI track created in my test project. I’m indeed able to move the fader by the knob with soft takeover. But, as soon as I reach the 0 value of it, the fader no longer follows the knob messages and sticks to the ‘Off’ value in the mixer, this, as long as I don’t move ‘manually’ the fader (with the mouse) to a non null value. This is NOT happening if the ‘flags’ value is setted as 1 instead of 9 in the Generic Remote definition file. Strange, but a workaround could be to use the Input Transformer to prevent the controller to reach the 0 value, I guess…

About the support request, no, still no feedback : no mail received, even as a receiving acknowledgement, and no PM here. But I think that Fabio stated somewhere in the C7 forum that there are delays to be expected, since there are a lot of support requests to be processed, these days.

So, I’m patiently waiting. But again, I would also like someone from the Steiny crew to chime in, just to give us his/her thoughts about what has already been stated here concerning Cubase NRPN Incr/Decr support, and also to explain us why the ‘Soft takeover’ feature is neither documented, nor usable with the ‘Device setup’ window UI…

Stupid of me… I should have think of it much sooner ! :bulb:

As a last attempt, instead of focusing on the ‘Ctrl-NRPN’ option in the top pane of the ‘Device window’ for my knob, I tried using this :

  1. On my MPD32, I resetted, as I did initially when I stumbled on the NRPN issue, the knob 11 (bank B, knob 3) to send NRPN Incr/Decr messages on channel 8 with an address of MSB : 000, LSB : 054.

  2. In the ‘Device setup’ window, I setted the two following lines, related to the K11 knob, as following…

Top pane :
Control name : K11 (B3)
MIDI Status : Controller (instead of Ctrl-NRPN)
MIDI channel : 8
Address : 96 (the control number used in the MIDI standard for NRPN Incr messages)
Max value : 1
Flags : 'R, , ’ (‘Receive’ only)

Bottom pane :
Control name : K11 (B3)
Device : Command
Channel/Category : Transport
Value/Action : Nudge +1 Frame
Flags : P

This means that I no longer take account of the NRPN address sent by the MPD32 knob. Result : works perfectly ! I can nudge as long as I want without the dreaded 127 controller value limit. But the only problem left at this stage was that I could only use this knob for a nudge in the ‘forward’ direction.

So, I tried to add these 2 lines in the ‘Device setup’ window…

Top pane :
Control name : K11 (B3)
MIDI Status : Controller (instead of Ctrl-NRPN)
MIDI channel : 8
Address : 97 (the control number used in the MIDI standard for NRPN Decr messages)
Max value : 1
Flags : 'R, , ’ (‘Receive’ only)

Bottom pane :
Control name : K11 (B3)
Device : Command
Channel/Category : Transport
Value/Action : Nudge -1 Frame
Flags : P

The miracle happened ! I can now use just one knob as a NRPN Incr/decr one without limitation, in this case for nudging forward and backward, which this thread was all about. I will be limited by the number of MIDI channels that I have at disposal for other similar knobs, but this will, at least, allow me to use some of them as NRPN Incr/Decr ones, using each time a different MIDI channel number. At the end, it’s only a workaround, actually, but an efficient one.

Still wondering why the NRPN Incr/Decr is not working as ‘native’ and why the ‘Soft takeover’ feature is not documented and reachable in Cubase UI, though. So, thoughts from Steiny would still be welcomed, here…

Thanks to anyone, especially Soul-Burn, for the help…

Cheers ! :smiley: