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.
Bome Customer Care
Also available for paid consulting services: firstname.lastname@example.org