Is there any way to send NRPNs?

I just discovered that I could send pre-effect level CCs to my Supernova, allowing the volume pedal to fade the pre-effect signal but let the effects decay. After reading up on how to send NRPNs, I can’t see any way to that with a widget. If there’s a way, I’d love to hear it. If not, please consider this a feature request.


Trivial to do with a GP Script. For example (though untested)

Var
   Supernova : MidiOutBlock  // A GPScript named MidiOut Block associated with external synth
   Foo : Widget // Some widget

Function NRPN(midiOut : MidiOutBlock, parameterNumber : integer, parameterValue : integer)
var
   m : MidiMessage
   
   m = MakeControlChangeMessage(99, parameterNumber / 128)
   SendNowExternal(midiOut, m)
   m = MakeControlChangeMessage(98, parameterNumber % 128)
   SendNowExternal(midiOut, m)
   

   m = MakeControlChangeMessage(6, parameterValue / 128)
   SendNowExternal(midiOut, m)
   m = MakeControlChangeMessage(38, parameterValue % 128)
   SendNowExternal(midiOut, m)
   
End

// Called when a widget value has changed
On WidgetValueChanged(newValue : double) from Foo
var
   value : integer

   value = ParamToMidiEx(newValue, 0.0, 1.0, 0, 16383) // Convert from widget range to 14bit number
   NRPN(Supernova, 286, value) // Send the converted widget value to NRPN number 286 
End

A quick view with Midi Monitor would suggest that this does the right thing though. Look at every group of four events

screenshot_3069

Excellent! I’ll give it a try. I’m still not used to the idea of being able to script things.

I used the script as a template and it is working perfectly. Intermediate steps were to get a later version of the Supernova II manual (mine had no listing of the NRPNs) and then to figure out that the hex and decimal parameter numbers in the table were wrong, that I needed to use the MSB/LSB values instead. Now I have a pre-effect volume control so that the delay/reverb on the patch in question decays naturally.

1 Like