Using MIDI NRPN controllers

Though I’m relatively familiar with synth programming and MIDI controllers, I never cared or needed Non-Registered Parameter Numbers. Sequence 15 shares some info about them:

To send an NRPN value, first you send messages to select the desired parameter. Continuous controller 99 is used to send the most significant byte (MSB), and controller 98 is used to send the least significant byte (LSB). If the receiver has fewer than 128 parameters, the MSB message need not be used. For example, to select parameter 131 (whatever that parameter happens to be on a given synth), you would send a controller 99 message with a value of 1, and a controller 98 message with a value of 3. (The value of the controller 99 message is multiplied by 128, and added to the value of the controller 98 message.) Having selected the parameter, you then send two more messages to specify the value of the selected parameter: controller 8 sends the MSB of the value, and controller 38 sends the LSB. (If the parameter is limited to the range 0-127, the MSB message need not be sent.) If we wanted to set the selected parameter to a value of 286, we send the controller 8 message with a value of 2 (2*128=256), and the controller 38 message with a value of 30.

Comments are closed.