Programming the Pocket Miku, Details, Part2


RPN refers to Registered Parameter Number. NRPN is Non-Registered Parameter Number. “Registered” means that it’s part of the standard MIDI spec and will work the same on all synthesizers. “Non-Registered” parameters only work as intended for the given machine. That is, the NSX-1 NRPN messages are NSX-1 specific. Both sets of parameters take effect faster than if you program them using SysEx, and they duplicate some of the SysEx parameters.

Registered Parameter Numbers are:

Pitch Bend Sensitivity (changes the range of pitch bend)
Master Fine Tuning (changes the pitch of all notes a small amount)
Master Coarse Tuning (changes the pitch of all notes a lot)
RPN null (nothing)


The NSX-1 Non-Registered Parameter numbers duplicate many of the Control Change parameters. That is, Vibrato Rate, Vibrato Depth and Vibrato Delay work the same as Control Change Vibrato Rate, Time and Depth do. Note that NRPN includes identical parameters specific to the Drum Kit instruments, but on a per-note basis. When you’re using the drum kit (either the sound bank or GM channel 9), each keyboard key plays a different drum instrument. When you play a drum note, you need to specify that note number as part of the NRPN Drum parameter data if you want to change Drum Filter or Drum Pitch.


Say you’re pressing the keyboard key that corresponds to MIDI note number 60 while using the Drum Kit sound bank. If you want to change the Drum Low Pass Filter Cutoff Frequency in Java, you do the following:

myMsg1.setMessage(ShortMessage.CONTROL_CHANGE + channel, 0x63, nrpnMsb);
myMsg2.setMessage(ShortMessage.CONTROL_CHANGE + channel, 0x06, dataMsb);
myMsg3.setMessage(ShortMessage.CONTROL_CHANGE + channel, 0x62, nrpnLsb);
myMsg4.setMessage(ShortMessage.CONTROL_CHANGE + channel, 0x26, dataLsb);
nsxRcvr.send(myMsg1, -1);
nsxRcvr.send(myMsg2, -1);
nsxRcvr.send(myMsg3, -1);
nsxRcvr.send(myMsg4, -1);


0x63 is the Control Change number for setting the NRPN MSB byte, and “nrpnMsb” contains 0x14 for controlling the Drum Cutoff Frequency.
0x06 is the CC number for setting the NRPN data MSB byte, and “dataMsb” represents the cutoff frequency (0-127).
0x62 is the CC number for setting the NRPN LSB byte. “nrpnLsb” is the keyboard key number (60 in this example).
0x26 is the CC number for setting the NRPN data LSB byte. “dataLsb” has no effect and can be left at 0x00.

If you play more than one drum instrument, you need to change “nrpnLsb” to that note number every time you call Drum Low Pass Filter Cutoff Frequency.

NRPN parameters that are not available through Control Change include: Low Pass Filter Cutoff Frequency, Low Pass Filter Resonance, Drum Low Pass Filter Cutoff Frequency, Drum Low Pass Filter Resonance, and everything that starts with 0x70.


The 0x70 NRPN parameters only apply to eVocaloid (channel 0). Vibrato Type and Delay work the same as for General MIDI. Portamento Timing is a single parameter that ranges from 0x00 (fast) to 0x7F (slow). Seek isn’t included in the Perfect Guide so I don’t know what that does. White Noise adds a little hiss to the eVocaloid voice. Phoneme Connect Type has three modes: 0x00 = Fixed 50ms delay between phonemes; 0x01 = Minimum connect times; 0x02 = Note velocity changes time between phonemes. (Start of Phonetic Symbol, Phonetic Symbol and End of Phonetic Symbol aren’t included in the Perfect Guide.)

Note that anything not included in the Pocket Miku Perfect Guide is not otherwise documented, and seems to be deactivated in the Pocket Miku itself.

In the Control Section above, we have Reverb, Chorus and Variation parameters. For some reason, chorus and variation have very little impact on the note played, as far as I can tell. Reverb is the most noticeable of the three, and I can sense some change in chorus, but I have yet to figure out if variation is doing anything at all. This is relevant in that it plays a big part in the following SysEx tables.


Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: