NRPN midi output

Is there any way to define the MSB and LSB to output a NRPN message? Maybe a hack?

If not, perhaps an NRPN Generator module is in order?


  • No hacks afaik. At a time CC generator (multi) was worked on, there was a brief discussion... surprisingly giku said he has nothing against NRPN support, so it should be somewhere on the list :)

  • The easiest way would be to send a note and its velocity to a StreamByter script, and let it format the data to pass along. The annoying part is that you need to send 2 CCs to select the NRPN, then two more to set the value.

  • Lots if hardware these days are supporting NRPN. Integrating them with Drambo would be so much more fun with an NRPN Generator. A module like the CC Generator, with 1 CV input and 2 CCs for msb/lsb would be elegant.

  • Indeed there's something under development that will allow for that with the next big release:

    A CC generator that can send messages triggered by a gate signal.

  • edited December 2021

    I noticed the new gate input, but I’m unclear how that would be used for NRPN CC modulation?

    im sure there could be some logic to get 8 bit values, but I wouldn’t even be able to imagine how to get 14 bit combos with two generators

  • I expect you need the Gate to ensure the two values are stable before sending. For example, if you're ramping up, there are times when the LSB goes from max to zero, while the MSB increments. If the timing's wrong, the signal will jump.

    Also CCs 98 and 99 are the NRPN select messages that determine the parameter to be adjusted. You wouldn't want to send that value continuously, and certainly you need to ensure it's stable.

    And you can use some math modules to split a 0..1 CV into two appropriate 0..1 values for the two generators. Those values need to be sent on CCs 6 and 38.

  • This will split a CV value into two values corresponding to MSB and LSB. You multiply by 128 and quantize. Subtract the quantized value to get the LSB, already scaled up. Divide the quantized value by 128 to get the MSB. I drove it with a really slow LFO and the LSB values fly past while the MSB values step slowly. So this would let you transmit a 14-bit representation of an internal CV.

  • This is brilliant man! This should be sufficient until a NRPN module gets added. I’ll give it a try on some hardware and report back :)

  • Yep @uncleDave, being able to control when that message is sent was essential to me so I kept insisting for the gate jack to be added 😉

  • edited December 2021

    One little concern is that, for a continuous waveform, even slow-moving, this will generate a lot of CC messages. Also, as implemented, it will only send the MSB when it changes, not paired with every LSB message. That could be a problem if the hardware always expects a pair of messages. The Gate would be useful here, since you could trigger both messages, possibly on a clock.

    Edit: The multiplier in my screenshot should be 127, not 128. There are 127 fences (value bands), 128 fenceposts (data values). I was wrongly thinking of rounding, not truncation. Sorry for any confusion.

Sign In or Register to comment.