RPN and NRPN

NRPN -- sends a Non-registered parameter number where:
  parameter #1: channel (0-15)
  parameter #2: NRPN MSB indicator (controller #99 data)
  parameter #3: NRPN LSB indicator (controller #98 data)
  parameter #4: NRPN MSB data      (controller #6  data)
 [parameter #5: NRPN LSB data      (controller #38 data)]
or:
  parameter #1: channel (0-15)
  parameter #2: NRPN MSB indicator (controller #99 data)
  parameter #3: NRPN LSB indicator (controller #98 data)
  parameter #4: NRPN Floating point in range (-1..1) (ccont#6 and #38 data)

NRPN (Non-registered parameter number) -- General MIDI and Extended MIDI mess. It becomes the receiving synthesizer's responsibility to determine the meaning of continuous controller (ccont) #6 from data sent with cconts #98,99 (for NRPNS) and cconts #100,101 (for RPNS). NRPN parameters are not reset when the ccont#121 is sent to reset controllers.

NRPN's are "non-standard" meaning that any synthesizer could do whatever they want with a given NRPN; However, the GS and XG specifications are given in the table further below.

The data for NRPNs are transfered to synthesizer with data slider ccont #6(MSB) and ccont #38(LSB). Also data increment ccont#96 (data increment) and ccont#97 (data decrement) are in relation to the RPN or NRPN in effect. Increment and Decrement are not recommend to use with RPN's because of confusion in the MIDI industry over which 7-bit data (#6 or #38) to increment.

Once you have selected an NRPN on a given channel, the channel will apply subsequent Data Entry to the selected parameter. After making the necessary settings you should set NRPN to NULL to reduce the risk of operational errors. a NUL RPN will disable the previous values of either RPN or NRPN data.

The following NRPN values are supported in Yamaha's XG specification:
   CCont #98 = LSB of NRPN parameter ID
   CCont #99 = MSB of NRPN parameter ID

NRPN
MSB LSB                           Data Range
#99 #98    Parameter              (ccont#6=MSB, ccont#38=LSB)
=== ===== ====================== ======================
  1   8  Vibrato Rate            -64.. 0..+63 logical range or (-50..+50)
                                   0..64..127 MIDI data range  ( 14..114)
  1   9  Vibrato Depth           same ranges as above      
  1  10  Vibrato Delay           same ranges as above      
  1  32  Filter Cutoff Freq.     same ranges as above      
  1  33  Filter Resonance        same ranges as above      
  1  99  EG Attack Time          same ranges as above      
  1 100  EG Decay Time           same ranges as above      
  1 102  EG Release Time         same ranges as above
 20  xx  Drum Filter Cutoff Freq same ranges as above          
         xx = drum MIDI key number
 21  xx  Drum Filter Resonance   same ranges as above          
         xx = drum MIDI key number
 22  xx  Drum EG Attack Rage     same ranges as above          
         xx = drum MIDI key number
 23  xx  Drum EG Decay Rate      same ranges as above          
         xx = drum MIDI key number
 24  xx  Drum Pitch Coarse       same ranges as above          
         xx = drum MIDI key number
 25  xx  Drum Pitch Fine         same ranges as above          
         xx = drum MIDI key number
 26  xx  Drum Level                0..64..127 MIDI data range
         xx = drum MIDI key number
 28  xx  Drum Pan                  Random, Left..Center..Right
                                   0.......1.....64......127 MIDI data range
         xx = drum MIDI key number
 29  xx  Drum Reverb Send Level    0..64..127 MIDI data range
         xx = drum MIDI key number
 30  xx  Drum Chorus Send Level    0..64..127 MIDI data range
         xx = drum MIDI key number
 31  xx  Drum Variation Send Level 0..64..127 MIDI data range
         xx = drum MIDI key number
127 127  Null RPN (disables RPN/NRPN parameters from being altered).
RPN -- sends a registered parameter number where:
  parameter #1: channel (0-15)
  parameter #2: RPN MSB indicator (controller #101 data)
  parameter #3: RPN LSB indicator (controller #100 data)
  parameter #4: RPN MSB data      (controller #6  data)
 [parameter #5: RPN LSB data      (controller #38 data)]
or:
  parameter #1: channel (0-15)
  parameter #2: NRPN MSB indicator (controller #99 data)
  parameter #3: NRPN LSB indicator (controller #98 data)
  parameter #4: NRPN Floating point in range (-1..1) (ccont#6 and
  #38 data)

RPN (registered parameter number) -- General MIDI and Extended MIDI mess. It becomes the receiving synthesizer's responsibility to determine the meaning of continuous controller (ccont) #6 from data sent with cconts #100,101 (for RPNS) and cconts #98,99 (for NRPNS).

The data for RPNs are transfered to synthesizer with data slider ccont #6(MSB) and ccont #38(LSB). Also data increment ccont#96 (data increment) and ccont#97 (data decrement) are in relation to the RPN or NRPN in effect. Increment and Decrement are not recommend to use with RPN's because of confusion in the MIDI industry over which 7-bit data (#6 or #38) to increment.

Once you have selected an RPN on a given channel, the channel will apply subsequent Data Entry to the selected parameter. After making the necessary settings you should set RPN's to NULL to reduce the risk of operational errors. a NULL RPN will disable the previous values of either RPN or NRPN data.

The following RPN values are registered:
   CCont #100 = LSB of RPN parameter ID
   CCont #101 = MSB of RPN parameter ID

RPN                               Data Range
MSB LSB     Parameter              (ccont#6=MSB, ccont#38=LSB)
=== ===== ====================== ======================

  0   0   Pitchbend Sensitivity  0-127 (default 2) (LSB ignored)
                                 (The number of +/- half steps in
                                 pitch wheel range).
  0   1   Fine Tune              -64.. 0..+63 logical range
                                   0..64..127 MIDI data range
  0   2   Coarse Tune            same range as above.
  0   3   Change Tuning Program  0..127
  0   4   Change Tuning Bank     0..127