helgoboss / helgobox

Helgobox: ReaLearn & Playtime
https://www.helgoboss.org/projects/helgobox
GNU General Public License v3.0
205 stars 20 forks source link

Relative NRPN #385

Closed MusicIsMedicine closed 2 years ago

MusicIsMedicine commented 3 years ago

In regards to NRPN, I have a controller with endless knobs that sends CC96 for data increment and CC97 for data decrement.

The full message for increment is (CC99, CC98, [CC96], CC99, CC98), and for decrement it is (CC99, CC98, [CC97], CC99, CC98).

Would it be possible for you to add receiving of this type to ReaLearn?

Thank you, James

vonglan commented 3 years ago

I might also be interested in this. As a workaround for #203 , I could write a very small JSFX that maps absolute NRPNs to relative NRPNs. Then clone my OB6 controller preset so that it accepts relative NRPNs (with the same number), and chain the JSFX before ReaLearn. Although I am not sure whether this will work as expected for knobs that only send a small range (e.g. 0 to 6 for waveform selection).

helgoboss commented 3 years ago

@MusicIsMedicine @vonglan Can you tell:

a) What number is sent for CC96 or CC97? b) Is the number higher the faster your turn the encoder?

vonglan commented 3 years ago

For a): I can't tell, because I don't have a controller like that. For my use case, I would write a JSFX that creates these CCs (in whatever flavor is necessary, e.g. 0x2000 as 0, or 0x0000 as 0).

For b): Changes bigger than 1 should be possible for my use case

MusicIsMedicine commented 2 years ago

Hi, sorry for the late reply.

The number sent for 96 or 97 is always 1.

Ok, so lets say I have my knob programmed to 109 for MSB and 48 for LSB. For each movement it will send one of the following 4 part messages.

Clockwise: cc99 = MSB [109] cc98 = LSB [048] cc96 = Increment [val always = 1] cc99 = 127 [val always = 127] cc98 =127 [val always 127]

Counter-Clockwise: cc99 = MSB [109] cc98 = LSB [048] cc97 = Decrement [val always =1] cc99 = 127 [val always = 127] cc98 = 127 [val always = 127]

I would assume that I should enter 14000 in ReaLearns NRPN Number field which is what converts into the 109 and 048?

Hope that helps.

Thank You

helgoboss commented 2 years ago

Thanks for the info. I will see what I can do. Right now adding support for control-direction sys-ex, so this could be next on the list.

Yes, 14.000 = 109 (MSB) * 128 + 48 (LSB).

helgoboss commented 2 years ago

This will work in upcoming pre.2