Convert CC to NRPN

Full disclosure - I don’t really understand NRPN messages, apart from the fact that the most significant byte will work as a regular CC message.

This is a shot in the dark, but wondering if there is a way to set things up in Midihub to receive regular CCs from a controller and convert them into an NRPN for the filter cutoff on a Moog Slim Phatty.

We plan to add a pipe for converting to NRPN in a future update, at the moment you could only route these CC messages through Midihub from external sources.


Cool, thanks for the reply Giedrius. Any idea when that update will be out?

We can’t predict that yet. :slight_smile:


I’m just here to express a want for a pipe to transform CC to NRPN.

I have a sequencer (Synthstrom Deluge) that does not support NRPN, only CC. I wish I could send out CC and transform it to NRPN values.

Hoping this pipe can be made.


Yes. Me too. Then I could use a nanokontrol to control the vocoder in my microkorg XL for example. Would be really useful to have more hands on control there.

1 Like

You could use a couple of Transform pipes to produce NRPN compatible messages, but of course a dedicated pipe would be easier to use.

However, to get the full 14 bit range, 2 CC knobs would be necessary - one for coarse value adjustments, and another for fine adjustments. Do you think this would be fine?

I’d like to give the Transform idea a try, could someone tell me which 2 specific CCs you’d like to transform to which NRPN id? I’ll cook something up. :slight_smile: (be specific to your current setup, so as little modifications are necessary as possible)

It would be easy to test it with turning the arpeggiator on and off in the microkorg xl+ .

Then it uses these parameters:

  1. Use NRPN MSB (CC#99) [Bn, 63, mm] and NRPN LSB (CC#98) [Bn, 62,
    rr] (n: channel, mm, rr: parameter no. upper and lower bytes) to select the

  2. Use data entry MSB (CC#6) [Bn, 06, mm] (n: channel, mm: parameter value) to specify the value.

  3. ARP ON/OFF:

MSB (Hex) 00(00)
LSB (Hex) 02(02)

Value (transmitted): 0: OFF, 127: ON
Value (received): 0…63: OFF, 64…127: ON

This is set up to convert CC #50 - just change the number in the CC Range Filter pipe.

CC To NRPN.mhp (109 Bytes)

If this works, let’s try some parameter that makes use of both MSB and LSB for value.

1 Like

Works perfectly. I see if I can give an example of using both MSB and LSB soon.

Of course a dedicated pipe would make it less messy.

But really glad it’s doable!

1 Like

It seems like the MicroKorg Xl+ only uses MSB. So I will check my other synths. Otherwise @DudFaz perhaps could help us.

1 Like

No. None of my synth need both LSB and MSB.

But now I should be able to program my nanoKontrol so it operates both the vocoder and arpeggiator on the MicroKorg XL+. That brings new joy to old equipment. No more menu diving!

1 Like

If anyone has a synth making use of both MSB and LSB of NRPN or RPN for something, let us know. :slight_smile:

1 Like

I have a problem controlling the vocoder levels.

It uses these settings similar to what we did earlier:
Level1…Level16: [Bn, 63, 04, Bn, 62, 40…4F, Bn, 06, mm]
(n: channel, mm: parameter value)

So I should change the second argument in the third transform pipe. Without entering letters which isn’t allowed, I guess I can only work with the lowest band in the 16 band vocoder.

Or am I wrong?

These are hex numbers, you have to first convert them to decimal and use that value, you can use this online converter: Hexadecimal to Decimal Converter

Thank you! Of course. I haven’t been thinking of hex numbers since I was a teenager. I’ll check it out.

1 Like

Works flawlessly now! Thank you!

1 Like

This is just a snippet of the MiniNova remote values with LSB…

1 Like

I have a Sequential OB-6 which uses both MSB and LSB via NRPN and would love to test possible CC to NRPN solutions with Midihub.

This is awesome! Thanks for sharing. I’m trying to get my head around using this technique to change LFO1 shape on my Prophet REV2. LFO1 Shape uses MSB 0 and LSB 38 with a course value from 0 to 4 to set the waveform. I tried replacing 50 in the patch to 38, but it’s not working. Perhaps I’m missing something?