Controlling the Hydrasynth with MAX8 via MIDI-NRPN

banalytic's icon

Hi!

I want to control my hydrasynth with Max8. It's simple with CC but I don't get it with NRPN-Messages. Can anyone tell me, how to send a number with a live-dial zo the hydrasynth?! Is it possible to send NRPN in Hydrasynth MPE-Mode?

Here the MIDI-Specification:

Also don't understand VV and WW?!

Thanks for your help...

Source Audio's icon

VV*128+WW can only mean that

VV represents MSB value and WW LSB value of NRPN message.

full message in raw midi bytes would depend on NRPN specs of that device.

in Max you can try nrpnout object

banalytic's icon

Unfortunately, I'm completely overwhelmed by this NRPN thing. I'll take another look at it, but I was kind of hoping someone here could provide a patch that would show me how to transfer MIDI NRPN data from MAX to the Hydrasynth. I can't find much information about it online, and unfortunately, I don't find the NRPNout object or the other MIDI help files very helpful either.

Source Audio's icon

Ok, I’ll post few examples when I get home later today, if you can provide nrpn specs of that keyboard

banalytic's icon
ASM Hydrasynth_KB_DR_MIDI_Spec_1.5.0.pdf
pdf

here are the midi/nrpn spec… I hope you asked for this?! thank you so much!

Source Audio's icon

I guess it should do

I’ll let you know

Source Audio's icon

Ok , it looks as following.

NRPN message is formed using 4 CC messages

1 & 2 are parameter number, 3 & 4 are values, both MSB LSB

4 CC numbers are 99 98 6 38

as we send raw midi, one has to prepend status bytes which for CC messages

range from 176 ~ 191 for midi channels 1 ~ 16.

you will need to convert parameter number and values from HEX to decimal.

then form MSB LSB parameter and 2 values, for example OSC Mode :

3FH 18H hex = 63 24 decimal (H makes sure that we understand it as Hex number)

176 99 63 176 98 24 176 6 nn 176 38 nn

176 99 63 = MSB parameter (that stupid description VV)

176 98 24 = LSB parameter (that stupid description WW)

176 6 nn = MSB value 0, 1, 2 to target OSC1, OSC2 or OSC3

176 38 nn = LSB value which in this case selects mode , 0 = single, 1 = WaveScan.

For example to set OSC1 to WaveScan using midi channel 1

176 99 63 176 98 24 176 6 0 176 38 1 as raw midi message

to set OSC2 to Single

176 99 63 176 98 24 176 6 1 176 38 0

or you do it like this :

...................................

for NRPN values which use hires you need to create MSB LSB

let's take OSC1 Type

it says 3FH 19H = dec 63 25, value range 0 ~218

176 99 63 176 98 25 176 6 nn 176 38 nn

in max 0 ~ 16383 (14 bit value) to MSB LSB :

in this case you keep value to max 218, I don't know what you synth would do if you send

out of range controls.

to convert Hex to decimal pairs, use sprintf 0x%s 0x%s

.........................

I hope this helps you

banalytic's icon

thanks a lot … I will test it the next days and give feedback 😊

banalytic's icon

hey! thanks so much for for this great explanation - it works fine and now I can better understand it! are the parameter number 99 98 same for all synths?!

Source Audio's icon

CC# numbers 99 98 6 38 are fixed NRPN Control numbers.

parameters and values are of course different in most cases.

This might interest you as well

banalytic's icon

indeed, this additional information is really helpful! thanks so much 🙏