MIDI controller sending multiple messages - NRPN to CC

Pushing a button on my Novation Zero SL MKII is causing multiple translators to trigger.

So I found out that each button is sending four different messages from one button press. It sends the assigned NRPN message, but also three other CC messages that I didn't assign. Each button sends these three CC messages, as well as their own respective assignment. It's always CC #'s 9, 98, and 99. This is bizarre. I've reinstalled the driver, and tried all the firmware settings, but nothing seems to fix it. I'm waiting for a response from Novation. Does anyone know why this would happen?

 


Attachments:
![](upload://rbsilAbrav6LmHaGFb1OtdfY28X.png)

Yes, so it is sending NRPN which is a combination of CC 98 (NRPN LSB), 99 (NRPN MSB) and CC#6 (value)

So you should select NRPN as your incoming trigger with the parmeter value you want based on CC 6.

 

You can find out how NRPN's work on MIDI.org and maybe other places as well.

 

So in fact is is a complex MIDI message that together define it as an NRPN message.

 

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

 

You know what, I had no idea about that. Thought NRPN was simply a different type of message.
I will head over to that site and do some study.
The issue is, CC#6 is conflicting with something else. It’s strange, because I don’t have CC#6 on anything that I can find. But when disabling a certain knob, the problem disappears.
I wonder if I should just stick with basic CC assignments instead of NRPN. How many is there in total for a channel, 99?

Hi, since NRPNs use two 7 bit numbers the total possible number of NRPNs used could be up to 16384. My guess is your controller uses much less. As far as CC#6 not showing as being used. Some DAWs have only show CC#6 that are manually mapped by the users and use scripts or some other means to internally map functionality.

NRPN (stands for Non Registered Parameter Number) since the are non-registered, are freely useable by a manufacturer of anything they want. So best to steer away from CC numbers that are associated with NRPN's in your programming.

 

CC 98, 99 6 and 38.

 

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

Ya I just discovered CC#6 was the offender. Every button was executing their translator, but also moving the knob that was assigned to CC#6. I moved the assignment and it seems to be working now, thank you again.

Hi, ive been looking at how to get NRPN messages translated to midi cc messages but im struggling somewhat…
The implementation of the NRPN looks pretty straightforward on the face of it, but when i try to implement a translation in BOME im getting nowhere.
On this link is the midi implementation of the device in question, a Novation Ultranova.

Any help would be appreciated, because Automap on this keyboard has been resided to the scrap heap so im trying to capture the midi off the knobs on the synth side of it to control my vst synths instead.

Any help would be greatly appreciated.

Hi and welcome back!

The below example shows converting NRPN MSB=0 LSB=0 (FiltEnv Velocity) to CC 60 and NRPN MSB=0 and LSB=1 (FiltEnv Attack) to CC 61.

14-bit-NRPN-to-7-bit=cc-2023-12-08.bmtp|attachment (1.5 KB)

Note that we only use the MSB for the value which is typical in 7 bit NRPN values.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

That’s great, thank you Steve !

1 Like

Hi Steve this doesnt actually work for me, bome doesnt appear to capture an NRPN message, and thus wont output any data out of bome,
however if i capture raw midi sysex from the knobs for eg: Filter attack it will give me a starting sysex string the first few lines looking like this

Filter Attack - midi capture looking like this:

Alternating Etc…
Line 4 = B0 62 01
Line 3 = B0 06 0B
Line 2 = B0 62 01
Line 1 = B0 06 00

Filter Attack - midi capture looking like this:

Alternating Etc…
Line 4 = B0 62 02
Line 3 = B0 06 04
Line 2 = B0 62 02
Line 1 = B0 06 00

And they will output 127 steps to the destination if i attach a basic rule for the cc.
but obviously this does not work properly.
I have attached the project file, to see if you can make any sense of what my Ultranova is doing.
Thanks for the help, as this ones driving me bananas…
sysextocc.bmtp (969 Bytes)

OK, so it looks like they are not officially breaking the NRPN rules but indeed they are breaking the guidlines.

Now one thing to consider is that the total number of NRPN parameters (not including system parameters) is 577. So you will probably need to map CC’s to different MIDI channels to be able to handle all possible CC/channel combinations. Of course reserved CCs like RPN, NRPN, controller reset, etc, will need to be excluded.

The attached file is my recommended strategy.

We use the global variable ga to hold the NRPN MSB, gb to hold the NRPN LSB, gc to hold the NRPN MSB Value and gd to hold the NRPN LSB value.

We have a different preset that we select for each NRPN MSB handled by translator 0.4 and 0.6

Then for each select preset we look at CC #6 and then map it to a MIDI CH and CC number. This is done in 1.0 and 2.0 and then send the CC using the new Perform (V 1.9.1 MT required) capability in translators 1.1 and 1.2. Parameter values passed to ‘Perform Parameter’ are the parameter number (LSB) and value. Translators 1.1 and 1.2 actually do the MIDI Channel and CC # mapping.

You can add additional presets for the remaining NRPN MSBs.

What I haven’t tackled yet is the handling of 14 BIT NRPNs. As far as I can tell there is only one so it I leave it to you to figure this out. You would need to send either a SysEX or 14 bit CC or pitch bend (which is also 14 bit).

The first Preset (Init") is an always on preset and then the when selecting the desired preset, the other presets (except always on) are de-selected.

I hope this gets you started.
Ultranova - NRPN-to-CC-2023-12-09.bmtp (4.7 KB)

By the way B0 06 xx is CC 6 value xx and not SysEX. SysEX messages always start with F0 and end with F7. You are just seeing the data a raw MIDI data.

I might also note, that I do not have any MIDI thru paths set so anything not related to NRPNs will not get passed through. You can either add translators or a MIDI thru path to handle these messages.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Wow i thought something was a bit on the odd side, the way they have done this.
Thanks for all the help, i’ll dive in and see what happens…
Glad you stepped in here, or that would have been the end of it before it started.

Regards

Chris