Old 11-17-2012, 06:07 PM   #1
chammer
Human being with feelings
 
Join Date: Oct 2011
Posts: 28
Default MIDI NRPNs and Reaper

Does anyone know if Reaper supports MIDI NRPNs? Evidently Ableton and other DAWs do not support it. Thanks.
chammer is offline   Reply With Quote
Old 11-17-2012, 06:24 PM   #2
Banned
Human being with feelings
 
Banned's Avatar
 
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
Default

You can use ReaControlMIDI with 'Non-Reg Parameter' from the drop down list menu (under "Control Change").

Btw, this thread should rather be in MIDI & other protocols than the OSX sub forum, I think. Mods?
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
Banned is offline   Reply With Quote
Old 11-18-2012, 02:37 AM   #3
EvilDragon
Human being with feelings
 
EvilDragon's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 22,543
Default

NRPN is in fact consisted of sending MIDI CC #99 (NRPN MSB), then MIDI CC #100 (NRPN LSB), and after that MIDI CC #6 (Data). Optionally you can send MIDI CC #38 after MIDI CC #6 to finetune the value, since CC #6 and CC #38 form a MSB-LSB pair (14-bit CC).

http://en.wikipedia.org/wiki/NRPN

So, any DAW supporting MIDI CCs (and that's all of them, right?) can deal with NRPNs.
EvilDragon is offline   Reply With Quote
Old 11-18-2012, 02:46 AM   #4
gofer
-blänk-
 
gofer's Avatar
 
Join Date: Jun 2008
Posts: 11,094
Default

NRPN are just a combination of ordinary CC message. To use NRPN you'd send a single CC99, followed by a single CC98 message. These two together specify a parameter of the receiving device. Then you send CC6 (and if you want fine resolution and the receiving device supports it also CC38) to set this parameter to your desired value.
To switch control to another parameter you have to send new CC99/98. You can always only control one NRPN driven parameter at a time.

Thus a DAW that can record and send these CC events does have basic NRPN support. I'd be very surprised if Ableton doesn't.
(ED beat me on this part )



Some DAWs can sort of overcome the one-at-a-time restriction (at the expense of hogging the MIDI stream) by always sending a block of 99/98/6(/38) each time an NRPN parameter shall be changed. That also makes it quite a bit more comfortable to handle them from a MIDI editor, as you could edit the whole group on a single CC lane for each NRPN driven parameter.
The possible downside is the "hogging the MIDI stream" part, if the receiving device is outboard. Also the receiver might not be able to handle quick switching between different NRPN parameters.

If you mean that by "support NRPN". Reaper can't do that. You can come closer with plugins written to do the task, but can't ride them from within Reaper's piano roll editor, only from track envelopes.
To ride NRPN from Reaper's piano roll you need at least 3 CC lanes working together.
gofer is offline   Reply With Quote
Old 11-18-2012, 03:25 AM   #5
ivansc
Human being with feelings
 
Join Date: Aug 2007
Location: Near Cambridge UK and Near Questembert, France
Posts: 18,335
Default

Yep - back when I was using Roland SC type modules a lot, I routinely used reaper to do NRPNs.

Gets a bit wordy with the multiple control code calls, but I doubt if it is more elegantly supported in any other DAWs.
ivansc is offline   Reply With Quote
Old 11-18-2012, 03:50 AM   #6
gofer
-blänk-
 
gofer's Avatar
 
Join Date: Jun 2008
Posts: 11,094
Default

It would already be a lot easier if the piano roll could handle CC99 and CC98 in a single lane. They already do that in ReaControlMIDI. It can (does by default) handle 99 and 98 as a single high res event (like it also sends CC7 and CC39 together by default).

If one could specify NRPN "cluster" messages (define a 99/98 combo that "belongs together"), it's technically possible to have a CC lane that would send a certain combination of 99 and 98 prefixed to each event bar (which itself could represent a cluster of CC6 and CC38 to have hi res). That way, a single lane could control a complete NRPN parameter just by drawing in event bars. Apart from that the user has to specify the 99/98 cluster for the given lane, on the user side NRPN would be controlled exactly like any ordinary CC.

And you could have multiple lanes, each controlling it's own NRPN parameter - assumed that the data stream and the receiving device can handle the message flood.


I think (not sure) Sonar can do that, at least for a single NRPN combo. As said, I don't know for sure. Last time I did anything NRPN I was using Logic. And unless you dared to dive into the environment it was pretty much the same pain. If however you did a bit of environment bricolage, you could do exactly as described above which made it almost too easy (all the responsibility about stream-hogging was laying on you and it was pretty easy/tempting to overdo it )
gofer is offline   Reply With Quote
Old 11-18-2012, 04:39 AM   #7
Dstruct
Human being with feelings
 
Join Date: Jul 2006
Posts: 12,272
Default

Quote:
Originally Posted by gofer View Post
That way, a single lane could control a complete NRPN parameter just by drawing in event bars.
This would be cool!
Dstruct is offline   Reply With Quote
Old 11-18-2012, 08:11 AM   #8
Banned
Human being with feelings
 
Banned's Avatar
 
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
Default

Quote:
Originally Posted by gofer View Post
[…] a single lane could control a complete NRPN parameter just by drawing in event bars. Apart from that the user has to specify the 99/98 cluster for the given lane, on the user side NRPN would be controlled exactly like any ordinary CC.
Exactly!

I have added a formal FR to the previous FR discussion thread for 'learning' 14-bit MIDI types, and another FR + FR discussion thread for editing 14-bit MIDI in a single lane (since it concerns non-(N)RPN MSB/LSB pairs as well). Discuss, vote!
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
Banned is offline   Reply With Quote
Old 11-18-2012, 09:14 AM   #9
gofer
-blänk-
 
gofer's Avatar
 
Join Date: Jun 2008
Posts: 11,094
Default

14bit CC lanes would be very good (and most likely more users would find a use in that than in comfortable NRPN controlling), but not the essential part to make it work.

The necessary part would be means to define an NRPN message pair to be prefixed to the events on a CC6 (or the awesome CC6/38) lane. This would always be the exact same two messages prefixed to each event sent from that particular lane.
And the possibility to have several of the CC6 lanes open, each linked to an individual NRPN pair would be the icing.

If it would be done for NRPN, it should obviously also be capable of prefixing RPN pairs.





That all said, I am astonished that there is still any interest in this RPN/NRPN matter at all . Personally, if I had to decide between 14 bit capable lanes and "Instant-o-NRPN" lanes, I'd go for 14bit lanes any time. But it would be sweet and a nice bragging point nevertheless.

14bit for the parameter (and possibly, if it makes sense, action) learn system is almost a no-brainer request. Must have!
gofer is offline   Reply With Quote
Old 11-18-2012, 11:27 AM   #10
EvilDragon
Human being with feelings
 
EvilDragon's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 22,543
Default

Quote:
Originally Posted by gofer View Post
The necessary part would be means to define an NRPN message pair to be prefixed to the events on a CC6 (or the awesome CC6/38) lane.
This is not necessary. The value of CC6/38 will always change the last set RPN/NRPN parameter, so you don't need to define the RPN/NRPN for each CC6/38 event, only when you want to change the parameter you wish to edit.


One possible issue when you're using 14-bit CCs is that you cannot use regular 7-bit CCs anymore (except those above 63 IIRC). It should be switchable as a mode - either you see a list with all 128 CCs, or you'll see a condensed list with 14-bit CCs. The problem goes deeper if you want to use just SOME CCs as 14-bit, not all of them.
EvilDragon is offline   Reply With Quote
Old 11-18-2012, 11:43 AM   #11
gofer
-blänk-
 
gofer's Avatar
 
Join Date: Jun 2008
Posts: 11,094
Default

Quote:
Originally Posted by EvilDragon View Post
This is not necessary. The value of CC6/38 will always change the last set RPN/NRPN parameter, so you don't need to define the RPN/NRPN for each CC6/38 event, only when you want to change the parameter you wish to edit.
Believe me, I understand how they work

The whole idea behind prefixing the NRPN pair is to be able to comfortably control multiple target parameters without doing the switch on separate lanes for the NRPN mesages. You'd have a dedicated data CC lane for each target parameter and don't need to care for the NRPN overhead. That's how I did it in Logic back then.

As said, you have to be careful to not overdo it, or you may get into serious timing trouble on the receiving device, but it's as comfortable as controlling a simple CC, that's the whole gist of it.


EDIT:
As of the 14bit, I think it should be a parameter of CC lanes (well, those between 0 and 15 plus RPN and NRPN LSB lanes - those which according to GM specs may have an LSB cousin) to do the LSB message if you so choose. Per lane. The CC dropdown menu could be tweaked to make this possible. Like, offer each single CC like now plus in a separate submenu offer the 14bit-able ones.

I never thought about extending the specs and give other CC an LSB company as well, Needs thinking... You'd need to have receiving devices that actually do something with it, which is seldom enough and outside the specs will be - very rare, no? Normally LSB CC number is MSB CC number + 32 and only meant for CC0 through CC15 (plus the RPN and NRPN couples - maybe I forget some).

But all this should better be mentioned in the 14bit thread.

Last edited by gofer; 11-18-2012 at 12:03 PM.
gofer is offline   Reply With Quote
Old 11-18-2012, 12:37 PM   #12
Banned
Human being with feelings
 
Banned's Avatar
 
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
Default

Quote:
Originally Posted by EvilDragon View Post
[…] One possible issue when you're using 14-bit CCs is that you cannot use regular 7-bit CCs anymore (except those above 63 IIRC). It should be switchable as a mode - either you see a list with all 128 CCs, or you'll see a condensed list with 14-bit CCs. The problem goes deeper if you want to use just SOME CCs as 14-bit, not all of them.
Well, you can, but probably don't want to in most cases. (Fwiw, I sometimes switch between both on-the-fly: 7-bit for coarse tuning, switch to 14-bit when fine-tuning is needed; but for this purpose I also have to use a custom 14-bit scale which sacrifices a tiny bit of the available 14-bit range to ensure transitions between both modes without value 'jumping'.)

One option could be to collapse the lower 64 CC#s into 32 14-bit MSB/LSB pairs in the list of parameters. It would show up to CC#31 for 14-bit resolution, skip CC#32-63 (as they would be displayed as part of the lanes for the lower 32) and from CC#64 and up for 7-bit resolution.

A more advanced option would be to enable individual MSB/LSB pairs to be collapsed in the list of parameters, i.e. when the user chooses to use one of the lower (MSB) 32 CC# numbers (e.g. CC#7 for volume), the corresponding LSB CC# (e.g. 7+32 = 39 for volume) would be greyed out or disappear from the list.

Quote:
Originally Posted by gofer View Post
Believe me, I understand how they work

The whole idea behind prefixing the NRPN pair is to be able to comfortably control multiple target parameters without doing the switch on separate lanes for the NRPN mesages. You'd have a dedicated data CC lane for each target parameter and don't need to care for the NRPN overhead. That's how I did it in Logic back then.

As said, you have to be careful to not overdo it, or you may get into serious timing trouble on the receiving device, but it's as comfortable as controlling a simple CC, that's the whole gist of it.


EDIT:
As of the 14bit, I think it should be a parameter of CC lanes (well, those between 0 and 15 plus RPN and NRPN LSB lanes - those which according to GM specs may have an LSB cousin) to do the LSB message if you so choose. Per lane. The CC dropdown menu could be tweaked to make this possible. Like, offer each single CC like now plus in a separate submenu offer the 14bit-able ones.

I never thought about extending the specs and give other CC an LSB company as well, Needs thinking... You'd need to have receiving devices that actually do something with it, which is seldom enough and outside the specs will be - very rare, no? Normally LSB CC number is MSB CC number + 32 and only meant for CC0 through CC15 (plus the RPN and NRPN couples - maybe I forget some).

But all this should better be mentioned in the 14bit thread.
Afaik it works for CC#0 through CC#31. That seems to be confirmed by my BCR-2000 and the Moog Phatty: both go up to CC#31.

About the NRPN overhead: ideally, REAPER would handle it with some intelligence, only sending the parameter byte(s) when necessary, much like it needs to do with running status of note-on / note-offs (i.e. note-on with velocity 0 instead of note-off *only* when following another note-on message). But I also think it would be useful to provide a "better safe than sorry, here's the higher bandwidth including spam" mode much like you built in Logic's Environment, because REAPER can not know what happens to the MIDI stream once it leaves REAPER, before it hits the final destination.
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
Banned is offline   Reply With Quote
Old 11-18-2012, 12:45 PM   #13
gofer
-blänk-
 
gofer's Avatar
 
Join Date: Jun 2008
Posts: 11,094
Default

Indeed 0 through 31 it is! (just not in ReaControlMIDI, that was throwing me). Sorry for that mistake



Actually I had both "spam mode" and "sorta running status" versions, the latter using a pretty complex module to watch and compare the NRPN LSB (MSB was mostly the same anyway for all targets) that ran through and set a filter transformer with the last valid NRPN couple to filter out of the worker stream. Alas I never got it to work really perfect, occasionally switching to a wrong target under some circumstances. So I normally used the spam mode. But it was whole lotta fun to do that thing. Brain was really boiling

The things you can do in Logics environment are just plain amazing. I wish someone would rip that part out and make it available. I tried many other modular MIDI processing apps, but nothing felt quite like home. I almost got comfortable in Max, but not really

Last edited by gofer; 11-18-2012 at 01:06 PM.
gofer is offline   Reply With Quote
Old 11-18-2012, 12:50 PM   #14
Banned
Human being with feelings
 
Banned's Avatar
 
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
Default

Quote:
Originally Posted by gofer View Post
Indeed 0 through 31 it is! (just not in ReaControlMIDI, that was throwing me). Sorry for that mistake
No problem. That's actually worthy of a bug report / FR for ReaControlMIDI then.
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
Banned is offline   Reply With Quote
Old 11-18-2012, 01:25 PM   #15
EvilDragon
Human being with feelings
 
EvilDragon's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 22,543
Default

Quote:
Originally Posted by gofer View Post
I tried many other modular MIDI processing apps, but nothing felt quite like home. I almost got comfortable in Max, but not really
Bidule?
EvilDragon is offline   Reply With Quote
Old 11-18-2012, 01:36 PM   #16
gofer
-blänk-
 
gofer's Avatar
 
Join Date: Jun 2008
Posts: 11,094
Default

Been there, thanks for the tip. I should maybe try it again some day.
I probably have done stuff so long and intensively in Logic that I just can't readjust . The toolset just fits me like a glove.


What makes it really hard is that my old Logic 5 is still around - as long as I don't switch to a more modern OS. It's just too easy to just say "Damnit, I want this idea done - Logic to the rescue"

Last edited by gofer; 11-18-2012 at 01:41 PM.
gofer is offline   Reply With Quote
Old 11-18-2012, 02:13 PM   #17
Banned
Human being with feelings
 
Banned's Avatar
 
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
Default

We should perhaps try to combine some of the best features from apps like Logic, Bidule, Max, Numerology, etc. into a consolidated power-user MIDI tools FR in time for Cockos' trip to Paris.
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
Banned is offline   Reply With Quote
Old 11-19-2012, 09:40 AM   #18
Guido
Human being with feelings
 
Join Date: Nov 2007
Posts: 674
Default

Quote:
Originally Posted by Banned View Post
We should perhaps try to combine some of the best features from apps like Logic, Bidule, Max, Numerology, etc. into a consolidated power-user MIDI tools FR in time for Cockos' trip to Paris.
Hi,

wow..just trying to keep up! U guys are almost over my head...^^

I couldnt agree more with banned statement. But i must say that once u go Environment..u never go back!^^

I think it would kinda break down into this {on a broad view}....a better way of routing midi between tracks. Sort of what i thought the busses were going to do..but i cant seem to apply it in a workflow.
This would include advanced filtering/routing options down to at least note level.

Reacontrol Midi could have a slide out panel graphically showin that tracks routing..or a gloabal view of "the Reaviourment" Liteon built a js that I thought might have gone that way..sigh^^

In this scenario tracks would be like logics enviourment objects...but the midi flow thru all the "track's" midi plugins would be shown and editable in a grapical way. Instead of head scratching and frustration.

Sorry for the kinda off topic. Waddya think?

Guido
Guido is offline   Reply With Quote
Old 03-03-2017, 05:20 AM   #19
Prophet08
Human being with feelings
 
Join Date: Mar 2015
Location: London, UK
Posts: 18
Default NRPN to control outboard devices

Hi Guys,

If anyone is still monitoring this thread I could use some help pleaxe.

I am trying to send NRPN to a keyboard to change the Tempo/BPM of the device. I can send program change OK so I know the midi connection is working and I have added and enabled ReaControlMidi CC and Bank Program select.

I am sending cc99, cc98 and cc6 but the tempo is not changing According to the Midi map for the device I have the MSB is 2 and the LSB is 63 and the range is 40 to 240 which should fall with an 8 but value? so I don't need cc38?

To get the values in I have selection cc99 cc98 and cc6 under CC in ReaControlMidi and put the values in the boxes to the right.

Am I misunderstood something perhaps?

ATB - Mark
Prophet08 is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 08:20 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, vBulletin Solutions Inc.