The MIDI Forum

0
Votes
Undo
  1. Joel Young
  2. Getting Started with MIDI
  3. Monday, 01 February 2016
  4.  Subscribe via email
Hello! I'm posting in this section even though I worked with MIDI extensively from the late 80's to late 90's, but only started back again this past month or so. Guess you could say I'm an experienced newbie, lol.

I have a few hundred MIDIs on old 3.5 floppies, all created with the Roland MC50mkII sequencer. While going through them, I see that I used a lot of NRPN and RPN commands; specifically controllers 100, 101 and 6.

The problem is I can't for the life of me remember WHY I used them. Googling information on it only gives me basic info on what they're for. However, I can't find any real world examples of why a person would use them.

Can anyone provide such examples? It's possible I don't need them anymore, but before I disregard them, I need to know either way. What I'm doing currently is migrating all my MIDIs over to a DAW environment, and want to know what to keep or discard.

Thanks for any help or direction on this, and I'm also very happy to be part of the MIDI Association. Where were you all 25 years ago? haha ;)
Comment
There are no comments made yet.
Accepted Answer
Accepted Answer Pending Moderation
0
Votes
Undo
RPNs
GM defines several Registered Parameters, which act like Controllers but are addressed in a different way. In MIDI, every Registered Parameter is assigned a Registered Parameter Number or RPN. Registered Parameters are usually called RPNs for short.

Setting Registered Parameters requires sending (numbers are decimal):

Two Control Change messages using Control Numbers 101 and 100 to select the parameter, followed by
any number of Data Entry messages of one or two bytes (MSB = Controller #6, LSB = Controller #38), and finally
an "End of RPN" message
The following global Registered Parameter Numbers (RPNs) are standardised [2] (the parameter is specified by RPN LSB/MSB pair and the value is set by Data Entry LSB/MSB pair):

0,0 Pitch bend range
1,0 Channel Fine tuning
2,0 Channel Coarse tuning

For example: RPN control sequence to set coarse tuning to A440 (parm 2, value 64):
101:0, 100:2, 6:64, 101:127, 100:127


So given the time frame and the fact that these are MIDI files, these RPNs were probably used to set the pitch bend range of the channels in GM sequences or for tuning/detuning tracks via Channel Fine Tuning or changing octaves or transposing a part in whole steps via Coarse Tuning.


Hope that helps!
THE MIDI ASSOCIATION (TMA)
The community of people who work, play and create with MIDI
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
0
Votes
Undo
You can also have a look at a Web page I put up (many moons ago) that explains the how and the why of RPN and NRPN. Hopefully it will also help jog your memory.

Cheers
Eddie
Comment
There are no comments made yet.
  1. more than a month ago
  2. Getting Started with MIDI
  3. # 1
Accepted Answer Pending Moderation
0
Votes
Undo
The pitch bend makes sense, since I do remember working with it often back in the day. I need to do some more reading about MIDI Again. I remember quite a lot, but some of it escapes me now. Controllers 98 and 99, for instance. I see a lot of that in my sequences as well.

Thanks for that informative reply! :)
  Cape Breton Island, Nova Scotia, Canada
Visit 
Comment
There are no comments made yet.
  1. more than a month ago
  2. Getting Started with MIDI
  3. # 2
Accepted Answer Pending Moderation
0
Votes
Undo
Very helpful as well, Eddie. Thanks!
Comment
There are no comments made yet.
  1. more than a month ago
  2. Getting Started with MIDI
  3. # 3
Accepted Answer Pending Moderation
0
Votes
Undo
... and finally
an "End of RPN" message


Well, an "End of (N)RPN" message would be very useful on receiver side. But in practice, how many vendors do that? Maybe it would make sense to clearly emphasize this in the specs? ATM this is not mentioned in the CC table on midi.org at all: Control Change Messages (Data Bytes)

Nor on Wikipedia: NRPN (Wikipedia)

Currently the status quo is that (N)RPN LSB data message is optional, and almost no MIDI sender is actually sending a final "End of (N)RPN" message. And many are just sending "data MSB". Which leaves the receiving side with the problem to be uncertain when exactly it can assume the (N)RPN message sequence to be complete. Should it wait for the next MIDI message to arrive in order to see whether there's also LSB data? But what if the next MIDI message arrives seconds away or even not at all?

As implementer of a MIDI receiver it is currently almost inevitable to react both on "data MSB" and "data LSB". Which is problematic, because depending on what that parameter actually does, it can lead to audible glitches. Keep in mind that (N)RPNs are nowadays used for use cases beyond of what it was originally designed for. For instance (N)RPNs are heavily used in event-driven scripts of virtual instruments to trigger certain behaviours, and there it matters whether certain behaviour is triggered once or twice, and then even with a wrong value.

Maybe this issue is a candidate to be addressed in upcoming MIDI 2.0?
Comment
There are no comments made yet.
  1. more than a month ago
  2. Getting Started with MIDI
  3. # 4
Accepted Answer Pending Moderation
0
Votes
Undo
Maybe this issue is a candidate to be addressed in upcoming MIDI 2.0?

In MIDI 2.0, RPN and NRPN (now called Registered Controller Message and Assignable Controller Message respectively) send the entire message in one packet with a single 32-bit payload instead of a 7-bit MSB and a 7-bit LSB.
See the article Details about MIDI 2.0™
Comment
There are no comments made yet.
  1. more than a month ago
  2. Getting Started with MIDI
  3. # 5
  • Page :
  • 1


There are no replies made for this post yet.
Be one of the first to reply to this post!