What is a MIDI NRPN?
An NRPN, a Non-Registered Parameter Number, is a way to control more settings than the 128 Control Change numbers allow. It is built from ordinary Control Change messages sent in order: CC 99 and CC 98 pick which parameter, then CC 6 and CC 38 set its value. That gives 16,384 parameters, each with a value of up to 16,384 steps. An RPN works the same way with CC 101 and CC 100, for a short list of parameters every maker shares.
The scheme is part of the MIDI standard. Which NRPN number does what is up to each synth's maker, and its manual has the list.
Read an NRPN, message by message
| Step | Message | Carries |
|---|---|---|
| 1 | CC 99 | The coarse half of the parameter number (MSB) |
| 2 | CC 98 | The fine half of the parameter number (LSB) |
| 3 | CC 6, Data Entry | The coarse half of the value (MSB) |
| 4 | CC 38 | The fine half of the value (LSB), if the parameter uses it |
CC 96 and CC 97 can follow in place of a value, to step the chosen parameter up or down by one. The first two messages point at a setting, and the next two change it.
InputConfig is free on the Mac App Store. macOS 14 or later, no account, no tracking, open source.
Know the registered ones
An RPN, a Registered Parameter Number, uses CC 101 and CC 100 to pick the parameter and the same CC 6 and CC 38 for the value. Its numbers mean the same thing on every device.
| RPN (MSB, LSB) | Parameter |
|---|---|
| 0, 0 | Pitch bend range, in semitones and cents |
| 0, 1 | Fine tuning |
| 0, 2 | Coarse tuning |
| 127, 127 | Null: no parameter selected |
Registered means agreed by everyone, and non-registered means defined by the maker. MIDI pitch bend explains the range that RPN 0 sets.
Work through one example
Setting the pitch bend range to 12 semitones on channel 1 takes four messages, then two more to close the door.
| Bytes (hex) | Meaning |
|---|---|
| B0 65 00 | CC 101 at 0: RPN, coarse half 0 |
| B0 64 00 | CC 100 at 0: RPN, fine half 0, so pitch bend range is selected |
| B0 06 0C | CC 6 at 12: twelve semitones |
| B0 26 00 | CC 38 at 0: no extra cents |
| B0 65 7F, B0 64 7F | RPN null, so a later CC 6 changes nothing by accident |
Send the null at the end, or the next Data Entry message lands on the same parameter. Paste any of these into the MIDI message decoder to check them.
Tell an NRPN from a CC
| Control Change | NRPN | |
|---|---|---|
| Messages for one change | One | Three or four |
| How many parameters | 128, many with fixed jobs | 16,384 |
| Value range | 0 to 127 | Up to 0 to 16,383 |
| Who defines the numbers | The MIDI standard, for the common ones | Each maker |
A CC is simple and coarse, and an NRPN is fine and takes more messages.
Know when you need one
Use an NRPN when a synth's manual lists the setting you want only as an NRPN, or when 128 steps are too coarse and you can hear the jumps. For everything else a plain CC is easier, and most DAWs can MIDI learn one in a second. InputConfig, the free Mac app I make, sends single messages from a game controller: a note, a Control Change, pitch bend or a Program Change. If the synth offers the same setting as a CC, use the CC. The MIDI CC list names the standard ones.
The short version
- NRPN. CC 99 and 98 pick, CC 6 and 38 set. Maker-defined.
- RPN. CC 101 and 100 pick, CC 6 and 38 set. Standard.
- Finish. Send 127 and 127 to deselect.
An NRPN is four Control Changes working as one.
Questions
What does NRPN stand for?
Non-Registered Parameter Number. Non-registered means each maker decides what its numbers control.
Which CC numbers make an NRPN?
CC 99 and CC 98 select the parameter, and CC 6 and CC 38 set its value. CC 96 and CC 97 step the value up and down.
What is the difference between NRPN and RPN?
They work the same way. An RPN selects with CC 101 and CC 100 and its numbers are standard, such as pitch bend range. An NRPN selects with CC 99 and CC 98 and its numbers are set by the maker.
What is the difference between NRPN and CC?
A CC is one message with a value from 0 to 127. An NRPN is three or four CC messages in order, reaching 16,384 parameters with values up to 16,383.
How do I set pitch bend range over MIDI?
Send RPN 0: CC 101 at 0, CC 100 at 0, then CC 6 with the number of semitones and CC 38 with cents. Finish with CC 101 and CC 100 at 127.
Why does my synth ignore an NRPN?
The four messages must arrive in order on the synth's channel, the numbers must be ones its manual lists, and some synths need NRPN receive switched on in their settings.
Related
Free. macOS 14 or later. No account, nothing leaves your Mac. Open source on GitHub.
Updated