MENU
En décimal & en hexadécimal (H)
RPN MSB : CC 101 (65H)
RPN LSB : CC 100 (64H)
NRPN MSB : CC 99 (63H)
NRPN LSB : CC 98 (62H)
Data Entry MSB : CC 6 (6H)
Data Entry LSB : CC 38 (26H)
La norme Midi contient tous les messages nécessaires à la maîtrise des périphériques musicaux. Afin de garantir une compatibilité parfaite (ascendante et descendante), le cœur du système MIDI a été conçu pour être stable et sans évolution. Ainsi l’ensemble des messages courants (notes, contrôleurs etc.) est défini par la norme ainsi que des RPN (qui sont également spécifiés dans la norme)
Les NRPN sont prévus pour être librement définis par les constructeurs et différents pour chaque appareil compatible MIDI.
Les NRPN présentent l’avantage d’éviter d’utiliser le System Exclusif dont l’un des défauts est d’utiliser des messages longs et non sécables ainsi que de perturber et ralentir de ce fait le flot des données MIDI. L’autre défaut du système exclusif est la nécessité de calculer et d’envoyer une somme de contrôle en fin de message. (Checksum).
Nous étudions les RPN et les NRPN dans ce même article car les techniques pour les exploiter sont semblables.
Choisissons un RPN courant : le pitch bend sensitivity qui gouverne la variation possible de la courbure de hauteur (souvent nommé Bend Range).
La norme Midi et/ou le manuel de notre appareil nous indiquent les valeurs à employer (les valeurs sont presque toujours exprimées en Hexadécimal – un convertisseur est disponible en haut de cette page)
RPN MSB : 00H –
RPN LSB : 00H –
Data Entry : valeur souhaitée –
Pas de data entry LSB (La plupart du temps, le Data entry LSB n’est pas exploité pour cette commande simple.)
Nous devons donc envoyer les messages suivants à notre synthétiseur :
RPN MSB : 00H soit: CC N° 101 valeur 0
RPN LSB : 00H soit: CC N° 100 valeur 0
Data Entry = valeur souhaitée soit: CC N°6 valeur souhaitée.
Dans Cubase la liste d’événements se présentera ainsi :
Dans une carte d’implémentation Midi (en général en fin de manuel et en petits caractères)
tout ceci est expliqué ainsi :
**RPN** The RPN (Registered Parameter Number) messages are expanded control changes, and each function of an RPN is described by the MIDI Standard. To use these messages, you must first use RPN MSB and RPN LSB messages to specify the parameter to be controlled, and then use Data Entry messages to specify the value of the specified parameter. Once an RPN parameter has been specified, all Data Entry messages received on that channel will modify the value of that parameter.
Un tableau de ce type décrivant les trois octet de chaque message MIDI l’accompagne.
BnH signifie :
B est la valeur Hexadécimale du premier nibble de l’octet de statut qui correspond à contrôleur
n est la valeur Hexadécimale du second nibble de l’octet de statut qui correspond au canal MIDI (0H à FH soit 0 à 15 en décimal qui correspondent aux 16 canaux MIDI. (0 pour canal 1 à 15 pour canal 16).
le reste se comprend de soit même :
65h pour CC 101 et 64H pour CC 100.
mmH : valeur en Hexa pour l’octet de poids fort (most signifiant)
llH : valeur en Hexa pour l’octet de poids faible (less signifiant)
Notez que l’ordre à de l’importance, il faut envoyer les commandes dans cet ordre :
Msb + Valeur
Lsb +Valeur
Data entry Msb + valeur
Data entry LSB + valeur (si nécessaire)
Nous disposons maintenant de tous les éléments pour comprendre le manuel d’un synthétiseur en ce qui concerne les RPN et NRPN (dérouler le long exemple ci-dessous… )
[Software Synthesizer] | Date:Nov. 9, 2001 |
MODEL:HQ-GM2 | Ver. 1.00 |
Function … | Transmitted | Recognized | Remarks | |
Basic Channel | Default | x | 1-16 | |
Changed | x | 1-16 | ||
Mode | Default | x | Mode 3 | *2 |
Messages | x | Mode 3, 4 (M = 1) | ||
Altered | ******* | |||
Note Number | x | 0-127 | ||
True voice | ******* | 0-127 | ||
Velocity | Note ON | x | o | |
Note OFF | x | x | ||
After Touch | Key’s | x | x | |
Ch’s | x | o *1 | ||
Pitch Bend | x | o | ||
Control Change | 0, 32 | x | o | Bank select |
1 | x | o | Modulation | |
5 | x | o | Portamento time | |
6, 38 | x | o | Data entry | |
7 | x | o | Volume | |
10 | x | o | Panpot | |
11 | x | o | Expression | |
64 | x | o | Hold1 | |
65 | x | o | Portamento | |
66 | x | o | Sostenuto | |
67 | x | o | Soft | |
71 | x | o | Resonance | |
72 | x | o | Release Time | |
73 | x | o | Attack Time | |
74 | x | o | Cutoff | |
75 | x | o | Decay Time | |
76 | x | o | Vibrato Rate | |
77 | x | o | Vibrato Depth | |
78 | x | o | Vibrato Delay | |
91 | x | o (Reverb) | General purpose effects 1 | |
93 | x | o (Chorus) | General purpose effects 3 | |
98, 99 | x | o | NRPN LSB, MSB | |
100, 101 | x | o | RPN LSB, MSB | |
Prog Change | x | o | ||
True # | ******* | 0-127 | Prog.1-128 | |
System Exclusive | x | o | ||
System Common | Song Pos | x | x | |
Song Sel | x | x | ||
Tune | x | x | ||
System Real Times | Clock | x | x | |
Commands | x | x | ||
Aux Messages | All Sounds OFF | x | o (120, 126, 127) | |
Reset All Controllers | x | o | ||
Local ON/OFF | x | x | ||
All Notes OFF | x | o (123-125) | ||
Active Sensing | x | x | ||
System Reset | x | x | ||
Notes | *1 o x is selectable | |||
*2 Recognize as M = 1 even if M not EQ 1 |
Mode 1 : OMNI ON, POLY Mode 2 : OMNI ON, MONO | o : Yes |
Mode 3 : OMNI OFF, POLY Mode 4 : OMNI OFF, MONO | x : No |
Status | 2nd byte | 3rd byte |
8nH | kkH | vvH |
9nH | kkH | 00H |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
kk = note number : 00H-7FH (0-127)
vv = note off velocity : 00H-7FH (0-127)
* The velocity values of Note Off messages are ignored.
Status | 2nd byte | 3rd byte |
9nH | kkH | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
kk = note number : 00H-7FH (0-127)
vv = note on velocity : 01H-7FH (1-127)
> Bank Select (Controller number 0, 32)
Status | 2nd byte | 3rd byte |
BnH | 00H | mmH |
BnH | 20H | llH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
mm, ll = Bank number : 00H, 00H-7FH, 7FH (bank.1-bank.16384), Initial Value = 00 00H (bank.1)
* When sending Bank Select messages, you have to send both the MSB (mmH) and LSB (llH) together.
* Bank Select processing will be suspended until a Program Change message is received.
BANK MSB | BANK LSB | PROGRAM NUMBER | DESCRIPTION |
001 | 000 – 003 | 001 – 128 | User Normal |
002 | 000 | 001 – 128 | User Rhythm |
120 | 000 | 001,009,017, 025,026,033, 041,049,057 | GM2 Rhythm |
121 | 000 – 009 | 001 – 128 | GM2 Normal |
> Modulation (Controller number 1)
Status | 2nd byte | 3rd byte |
BnH | 01H | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Modulation depth : 00H-7FH (0-127)
> Portamento Time (Controller number 5)
Status | 2nd byte | 3rd byte |
BnH | 05H | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Portamento Time : 00H-7FH (0-127), Initial value = 00H (0)
> Data Entry (Controller number 6, 38)
Status | 2nd byte | 3rd byte |
BnH | 06H | mmH |
BnH | 26H | llH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
mm, ll = the value of the parameter specified by RPN/NRPN
> Volume (Controller number 7)
Status | 2nd byte | 3rd byte |
BnH | 07H | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Volume : 00H-7FH (0-127), Initial Value = 64H (100)
* Volume messages are used to adjust the volume balance of each Part.
> Pan (Controller number 10)
Status | 2nd byte | 3rd byte |
BnH | 0AH | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = pan : 00H-40H-7FH (Left-Center-Right), Initial Value = 40H (Center)
* Pan messages are used to adjust the pan setting of each part.
* For Rhythm Parts, this is a relative adjustment of each Instrument’s pan setting.
> Expression (Controller number 11)
Status | 2nd byte | 3rd byte |
BnH | 0BH | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Expression : 00H-7FH (0-127), Initial Value = 7FH (127)
* It can be used independently from Volume messages. Expression messages are used for musical expression within a performance; e.g., expression pedal movements, crescendo and decrescendo.
> Hold 1 (Controller number 64)
Status | 2nd byte | 3rd byte |
BnH | 40H | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Control value : 00H-7FH (0-127) 0-63 = OFF, 64-127 = ON
> Portamento (Controller number 65)
Status | 2nd byte | 3rd byte |
BnH | 41H | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Control value : 00H-7FH (0-127) 0-63 = OFF, 64-127 = ON
> Sostenuto (Controller number 66)
Status | 2nd byte | 3rd byte |
BnH | 42H | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Control value : 00H-7FH (0-127) 0-63 = OFF, 64-127 = ON
> Soft (Controller number 67)
Status | 2nd byte | 3rd byte |
BnH | 43H | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Control value : 00H-7FH (0-127) 0-63 = OFF, 64-127 = ON
* This message is effective only when you use piano sounds.
> Filter Resonance (Timebre/Harmonic Intensity) (Controller number 71)
Status | 2nd byte | 3rd byte |
BnH | 47H | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Resonance value (relative change): 00H-7FH (-64 – 0 – +63), Initial Value = 40H (no change)
> Release Time (Controller number 72)
Status | 2nd byte | 3rd byte |
BnH | 48H | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Release Time value (relative change): 00H-7FH (-64 – 0 – +63), Initial Value = 40H (no change)
> Attack Time (Controller number 73)
Status | 2nd byte | 3rd byte |
BnH | 49H | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Attack Time value (relative change): 00H-7FH (-64 – 0 – +63), Initial Value = 40H (no change)
> Cutoff (Controller number 74)
Status | 2nd byte | 3rd byte |
BnH | 4AH | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Cutoff value (relative change): 00H-7FH (-64 – 0 – +63), Initial Value = 40H (no change)
> Decay Time (Controller number 75)
Status | 2nd byte | 3rd byte |
BnH | 4BH | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Decay Time value (relative change): 00H-7FH (-64 – 0 – +63), Initial Value = 40H (no change)
> Vibrato Rate (Controller number 76)
Status | 2nd byte | 3rd byte |
BnH | 4CH | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Vibrato Rate value (relative change): 00H-7FH (-64 – 0 – +63), Initial Value = 40H (no change)
> Vibrato Depth (Controller number 77)
Status | 2nd byte | 3rd byte |
BnH | 4DH | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Vibrato Depth value (relative change): 00H-7FH (-64 – 0 – +63), Initial Value = 40H (no change)
> Vibrato Delay (Controller number 78)
Status | 2nd byte | 3rd byte |
BnH | 4EH | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Vibrato Delay value (relative change): 00H-7FH (-64 – 0 – +63), Initial Value = 40H (no change)
> Effect 1 (Reverb Send Level) (Controller number 91)
Status | 2nd byte | 3rd byte |
BnH | 5BH | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Control value : 00H-7FH (0-127), Initial Value = 28H (40)
* This message adjusts the Reverb Send Level of each Part.
> Effect 3 (Chorus Send Level) (Controller number 93)
Status | 2nd byte | 3rd byte |
BnH | 5DH | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Control value : 00H-7FH (0-127), Initial Value = 00H (0)0)
* This message adjusts the Chorus Send Level of each Part.
> NRPN MSB/LSB (Controller number 98, 99)
Status | 2nd byte | 3rd byte |
BnH | 63H | mmH |
BnH | 62H | llH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
mm = upper byte of the parameter number specified by NRPN
ll = lower byte of the parameter number specified by NRPN
The NRPN (Non Registered Parameter Number) message allows an extended range of control changes to be used.
To use these messages, you must first use NRPN MSB and NRPN LSB messages to specify the parameter to be controlled, and then use Data Entry messages to specify the value of the specified parameter. Once an NRPN parameter has been specified, all Data Entry messages received on that channel will modify the value of that parameter. To prevent accidents, it is recommended that you set RPN Null (RPN Number = 7FH/7FH) when you have finished setting the value of the desired parameter. Refer to Supplementary material « Examples of actual MIDI messages » <Example 4>. On the Hyper Canvas devices, Data entry LSB (llH) of NRPN is ignored, so it is no problem to send Data entry MSB (mmH) only (without Data entry LSB)
NRPN messages are used only for Hyper Canvas. Since the VST instruments cannot use exclusive messages, some of the functions defined by General MIDI 2 are assigned to NRPNs to be used with the Hyper Canvas.
On the Hyper Canvas, NRPN can be used to modify the following parameters.
NRPN MSB LSB | Data entry MSB | Explanation |
58H 01H | mmH | Charactor (absolute change) mm: 1CH-40H-64H (-36 – 0 – +36) |
58H 20H | mmH | Tone control switch (absolute change) mm: 00H-7FH (0 – 127) 0 – 63 = OFF, 64 – 127 = ON |
58H 22H | mmH | Tone control bass gain (absolute change) mm: 34H-40H-4CH (-12 – 0 – +12) |
58H 24H | mmH | Tone control treble gain (absolute change) mm: 34H-40H-4CH (-12 – 0 – +12) |
58H 27H | mmH | Tone control mid gain (absolute change) mm: 34H-40H-4CH (-12 – 0 – +12) |
58H 30H-3BH | mmH | Scale tune C – B mm: 00H-40H-7FH (-64 – 0 – +63 cent) |
58H 40H | mmH | Reverb switch mm: 00H-7FH (0 – 127) 0 – 63 = OFF, 64 – 127 = ON * Sets the reverb settings regardless of the channel on which it’s received. |
58H 41H | mmH | Reverb type mm: 00H-08H (00H = Small Room, 01H = Medium Room, 02H = Large Room, 03H = Medium Hall, 04H = Large Hall, 08H = Plate) * Sets the reverb settings regardless of the channel on which it’s received. |
58H 42H | mmH | Reverb time mm: 00H-7FH (0 – 127) * Sets the reverb settings regardless of the channel on which it’s received. |
58H 50H | mmH | Chorus switch mm: 00H-7FH (0 – 127) 0 – 63 = OFF, 64 – 127 = ON * Sets the chorus settings regardless of the channel on which it’s received. |
58H 51H | mmH | Chorus type mm: 00H-05H (00H = Chorus1, 01H = Chorus2, 02H = Chorus3, 03H = Chorus4, 04H = FB Chorus, 05H = Flanger) * Sets the chorus settings regardless of the channel on which it’s received. |
58H 52H | mmH | Chorus rate mm: 00H-7FH (0 – 127) * Sets the chorus settings regardless of the channel on which it’s received. |
58H 53H | mmH | Chorus depth mm: 00H-7FH (0 – 127) * Sets the chorus settings regardless of the channel on which it’s received. |
58H 54H | mmH | Chorus feedback mm: 00H-7FH (0 – 127) * Sets the chorus settings regardless of the channel on which it’s received. |
58H 55H | mmH | Chorus send to reverb mm: 00H-7FH (0 – 127) * Sets the chorus settings regardless of the channel on which it’s received. |
58H 70H | mmH | Master volume mm: 00H-7FH (zero-maximum) * Sets the master volume regardless of the channel on which it’s received. |
58H 71H | mmH llH | Master tuning mm, ll: 00 00H-40 00H-7F 7FH (-100 – 0 – +99.99 cent) * Sets the master tuning regardless of the channel on which it’s received. |
58H 72H | mmH | Master key shift mm: 28H-40H-58H (-24 – 0 – +24) * Sets the master key shift regardless of the channel on which it’s received. |
58H 7FH | mmH | System reset mm: ignore * Resets the synth to the initial state regardless of the channel on which it’s received. |
18H rrH | mmH | Pitch coarse of rhythm instrument (relative change) rr: key number of rhythm instrument (21 – 108) mm: 10H – 40H – 70H (-48 – 0 – +48) |
19H rrH | mmH | Pitch fine of rhythm instrument (relative change) rr: key number of rhythm instrument(21 – 108) mm: 0EH-40H-72H (-50 – 0 – 50) |
1AH rrH | mmH | Rhythm instrument level(relative change) rr: key number of rhythm instrument mm: 00H-7FH (0 – 200 percent) |
1CH rrH | mmH | Panpot of rhythm instrument (absolute change) rr: key number of rhythm instrument mm: 00H-40H-7FH (left-center-right) |
1DH rrH | mmH | Reverb send level of rhythm instrument (absolute change) rr: key number of rhythm instrument mm: 00H-7FH (zero-maximum) |
1EH rrH | mmH | Chorus send level of drum instrument (absolute change) rr: key number of drum instrument mm: 00H-7FH (zero-maximum) |
* Parameters marked « relative change » will change relative to the preset value. Depending on the sound or the pitch range, this may have no effect.
* Parameters marked « absolute change » will be set to the absolute value of the parameter, regardless of the preset value.
> RPN MSB/LSB (Controller number 100, 101)
Status | 2nd byte | 3rd byte |
BnH | 65H | mmH |
BnH | 64H | llH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
mm = upper byte of parameter number specified by RPN
ll = lower byte of parameter number specified by RPN
The RPN (Registered Parameter Number) messages are expanded control changes, and each function of an RPN is described by the MIDI Standard.
To use these messages, you must first use RPN MSB and RPN LSB messages to specify the parameter to be controlled, and then use Data Entry messages to specify the value of the specified parameter. Once an RPN parameter has been specified, all Data Entry messages received on that channel will modify the value of that parameter. To prevent accidents, it is recommended that you set RPN Null (RPN Number = 7FH/7FH) when you have finished setting the value of the desired parameter. Refer to Section « Examples of actual MIDI messages » <Example 4>
On the Hyper Canvas, RPN can be used to modify the following parameters.
RPN MSB LSB | Data entry MSB LSB | Explanation |
00H 00H | mmH — | Pitch Bend Sensitivity mm: 00H-18H (0-24 semitones), Initial Value = 02H (2 semitones) ll: ignored (processed as 00H) specify up to 2 octaves in semitone steps |
00H 01H | mmH llH | Master Fine Tuning mm, ll: 00 00H – 40 00H – 7F 7FH (-100 – 0 – +99.99 cents), Initial Value = 40 00H (0 cent) Refer to Supplementary material, « About tuning ». |
00H 02H | mmH — | Master Coarse Tuning mm: 30H-40H-70H (-48 – 0 – +48 semitones), Initial Value = 40H (0 semitone) ll: ignored (processed as 00H) |
00H 05H | mmH llH | Modulation Depth Range |
7FH 7FH | — — | RPN null Set condition where RPN and NRPN are unspecified. The data entry messages after set RPN null will be ignored. (No Data entry messages are required after RPN null). Settings already made will not change. mm, ll: ignored |
Status | 2nd byte |
CnH | ppH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
pp = Program number : 00H-7FH (prog.1-prog.128)
Status | 2nd byte |
DnH | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Channel Pressure : 00H-7FH (0-127)
* The specifics of the effect are determined by means of universal exclusive messages. In the default state, no effect is obtained.
Status | 2nd byte | 3rd byte |
EnH | llH | mmH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
mm, ll = Pitch Bend value : 00 00H – 40 00H – 7F 7FH (-8192 – 0 – +8191)
* The depth of pitch bend change is determined by the pitch bend sensitivity of the RPN.
Status | 2nd byte | 3rd byte |
BnH | 78H | 00H |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
* When this message is received, all currently-sounding notes on the corresponding channel will be turned off immediately.
Status | 2nd byte | 3rd byte |
BnH | 79H | 00H |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
* When this message is received, the following controllers will be set to their reset values.
Controller | Reset value |
Pitch Bend Change | 0 (center) |
Channel Pressure | 0 (off) |
Modulation | 0 (off) |
Expression | 127 (max) |
Hold 1 | 0 (off) |
Portamento | 0 (off) |
Sostenuto | 0 (off) |
Soft | 0 (off) |
RPN | unset; previously set data will not change |
NRPN | unset; previously set data will not change |
Status | 2nd byte | 3rd byte |
BnH | 7BH | 00H |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
* When All Notes Off is received, all notes on the corresponding channel will be turned off. However if Hold 1 or Sostenuto is ON, the sound will be continued until these are turned off.
Status | 2nd byte | 3rd byte |
BnH | 7CH | 00H |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
* The same processing will be carried out as when All Notes Off is received.
Status | 2nd byte | 3rd byte |
BnH | 7DH | 00H |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
* OMNI ON is only recognized as « All notes off »; the Mode doesn’t change (OMNI OFF remains).
Status | 2nd byte | 3rd byte |
BnH | 7EH | mmH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
mm = mono number : 00H-10H (0-16)
* The same processing will be carried out as when All Sounds Off and All Notes Off is received, and the corresponding channel will be set to Mode 4 (M = 1) regardless of the value of « mono number. »
Status | 2nd byte | 3rd byte |
BnH | 7FH | 00H |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
* The same processing will be carried out as when All Sounds Off and All Notes Off is received, and the corresponding channel will be set to Mode 3.
Status | Data byte | Status |
F0H | iiH, ddH, ……, eeH | F7H |
F0H : System Exclusive Message status
ii = ID number : an ID number (manufacturer ID) to indicate the manufacturer whose Exclusive message this is. Roland’s manufacturer ID is 41H.
ID numbers 7EH and 7FH are extensions of the MIDI standard; Universal Non-realtime Messages (7EH) and Universal Realtime Messages (7FH).
dd,…,ee = data : 00H-7FH (0-127)
F7H : EOX (End Of Exclusive)
The System Exclusive Messages received by the Hyper Canvas are; messages related to mode settings, Universal Realtime System Exclusive messages and Universal Non-realtime System Exclusive messages.
[Note] Reception of system exclusive messages is possible only for DXi.
> GM1 System On
This is a command message that resets the internal settings of the unit to the General MIDI System Level-1 initial state. After receiving this message Hyper Canvas, will automatically be set to the proper condition for correctly playing a General MIDI score.
Status | Data byte | Status |
F0H | 7EH, 7FH, 09H, 01H | F7H |
Byte | Explanation |
F0H | Exclusive status |
7EH | ID number (Universal Non-realtime Message) |
7FH | Device ID (Broadcast) |
09H | Sub ID#1 (General MIDI Message) |
01H | Sub ID#2 (General MIDI 1 On) |
F7H | EOX (End Of Exclusive) |
* There must be an interval of at least 50 ms between this message and the next message.
> GM2 System On
This is a command message that resets the internal settings of the unit to the General MIDI System Level-2 initial state. After receiving this message Hyper Canvas, will automatically be set to the proper condition for correctly playing a General MIDI score.
Status | Data byte | Status |
F0H | 7EH, 7FH, 09H, 03H | F7H |
Byte | Explanation |
F0H | Exclusive status |
7EH | ID number (Universal Non-realtime Message) |
7FH | Device ID (Broadcast) |
09H | Sub ID#1 (General MIDI Message) |
03H | Sub ID#2 (General MIDI 2 On) |
F7H | EOX (End Of Exclusive) |
* There must be an interval of at least 50 ms between this message and the next message.
> Scale/Octave Tuning Adjust
Status | Data byte | Status |
F0H | 7EH, 7FH, 08H, 08H, ffH, ggH, hhH, ssH,… | F7H |
Byte | Explanation |
F0H | Exclusive status |
7EH | ID number (universal non-realtime message) |
7FH | Device ID (Broadcast) |
08H | Sub ID#1 (MIDI Tuning Standard) |
08H | Sub ID#2 (scale/octave tuning 1-byte form) |
ffH | Channel/Option byte1 |
ggH | Channel byte2 |
hhH | Channel byte3 |
ssH | 12 byte tuning offset of 12 semitones from C to B 00H = -64 [cents] 40H = 0 [cents] (equal temperament) 7FH = +63 [cents] |
F7H | EOX (End Of Exclusive) |
> Master volume
Status | Data byte | Status |
F0H | 7FH, 7FH, 04H, 01H, llH, mmH | F7H |
Byte | Explanation |
F0H | Exclusive status |
7FH | ID number (universal realtime message) |
7FH | Device ID (Broadcast) |
04H | Sub ID#1 (Device Control messages) |
01H | Sub ID#2 (Master Volume) |
llH | Master volume lower byte |
mmH | Master volume upper byte |
F7H | EOX (End Of Exclusive) |
* The lower byte (llH) of Master Volume will be handled as 00H.
> Master Fine Tuning
Status | Data byte | Status |
F0H | 7FH, 7FH, 04H, 03H, llH, mmH | F7H |
Byte | Explanation |
F0H | Exclusive status |
7FH | ID number (universal realtime message) |
7FH | Device ID (Broadcast) |
04H | Sub ID#1 (Device Control messages) |
03H | Sub ID#2 (Master Fine Tuning) |
llH | Master Fine Tuning LSB |
mmH | Master Fine Tuning MSB |
F7H | EOX (End Of Exclusive) |
* mm, ll : 00 00H – 40 00H – 7F 7FH (-100 – 0 – +99.9 [cents])
> Master Coarse Tuning
Status | Data byte | Status |
F0H | 7FH, 7FH, 04H, 04H, llH, mmH | F7H |
Byte | Explanation |
F0H | Exclusive status |
7FH | ID number (universal realtime message) |
7FH | Device ID (Broadcast) |
04H | Sub ID#1 (Device Control messages) |
04H | Sub ID#2 (Master Coarse Tuning) |
llH | Master Coarse Tuning LSB |
mmH | Master Coarse Tuning MSB |
F7H | EOX (End Of Exclusive) |
* llH : ignored (processed as 00H)
* mmH : 28H – 40H – 58H (-24 – 0 – +24 [semitones])
> Reverb Parameters
Status | Data byte | Status |
F0H | 7FH, 7FH, 04H, 05H, 01H, 01H, 01H, 01H, 01H, ppH, vvH | F7H |
Byte | Explanation |
F0H | Exclusive status |
7FH | ID number (universal realtime message) |
7FH | Device ID (Broadcast) |
04H | Sub ID#1 (Device Control messages) |
05H | Sub ID#2 (Global Parameter Control) |
01H | Slot path length |
01H | Parameter ID width |
01H | Value width |
01H | Slot path MSB |
01H | Slot path LSB (Effect 01 01:Reverb) |
ppH | Parameter to be controlled. |
vvH | Value for the parameter. |
F7H | EOX (End Of Exclusive) |
pp=0 | Reverb Type |
pp=1 | Reverb Time |
> Chorus Parameters
Status | Data byte | Status |
F0H | 7FH, 7FH, 04H, 05H, 01H, 01H, 01H, 01H, 02H, ppH, vvH | F7H |
Byte | Explanation |
F0H | Exclusive status |
7FH | ID number (universal realtime message) |
7FH | Device ID (Broadcast) |
04H | Sub ID#1 (Device Control messages) |
05H | Sub ID#2 (Global Parameter Control) |
01H | Slot path length |
01H | Parameter width |
01H | Value width |
01H | Slot path MSB |
02H | Slot path LSB (Effect 01 02:Chorus) |
ppH | Parameter to be controlled. |
vvH | Value for the parameter. |
F7H | EOX (End Of Exclusive) |
pp=0 | Chorus Type |
pp=1 | Mod Rate |
pp=2 | Mod Depth |
pp=3 | Feedback |
pp=4 | Send To Reverb |
> Channel Pressure
Status | Data byte | Status |
F0H | 7FH, 7FH, 09H, 01H, 0nH, ppH, rrH | F7H |
Byte | Explanation |
F0H | Exclusive status |
7FH | ID number (universal realtime message) |
7FH | Device ID (Broadcast) |
09H | Sub ID#1 (Controller Destination Setting messages) |
01H | Sub ID#2 (Channel Pressure) |
0nH | MIDI Channel (00-0F) |
ppH | Controlled parameter |
rrH | Controlled range |
F7H | EOX (End Of Exclusive) |
pp=0 | Pitch Control |
pp=1 | Filter Cutoff Control |
pp=2 | Amplitude Control |
pp=3 | LFO Pitch Depth |
pp=4 | LFO Filter Depth |
pp=5 | LFO Amplitude Depth |
> Controller
Status | Data byte | Status |
F0H | 7FH, 7FH, 09H, 03H, 0nH, ccH, ppH, rrH | F7H |
Byte | Explanation |
F0H | Exclusive status |
7FH | ID number (universal realtime message) |
7FH | Device ID (Broadcast) |
09H | Sub ID#1 (Controller Destination Setting messages) |
03H | Sub ID#2 (Control Change) |
0nH | MIDI Channel (00-0F) |
ccH | Controller number (01-1FH, 40-5FH) |
ppH | Controlled parameter |
rrH | Controlled range |
F7H | EOX (End Of Exclusive) |
pp=0 | Pitch Control |
pp=1 | Filter Cutoff Control |
pp=2 | Amplitude Control |
pp=3 | LFO Pitch Depth |
pp=4 | LFO Filter Depth |
pp=5 | LFO Amplitude Depth |
> Key-Based Instrument Controllers
Status | Data byte | Status |
F0H | 7FH, 7FH, 0AH, 01H, 0nH, kkH, nnH, vvH | F7H |
Byte | Explanation |
F0H | Exclusive status |
7FH | ID number (universal realtime message) |
7FH | Device ID (Broadcast) |
0AH | Sub ID#1 (Key-Based Instrument Control messages) |
01H | Sub ID#2 (Controller) |
0nH | MIDI Channel (00-0F) |
kkH | Key Number |
nnH | Control Number |
vvH | Value |
F7H | EOX (End Of Exclusive) |
nn=07H | Level |
nn=0AH | Pan |
nn=5BH | Reverb Send |
nn=5DH | Chorus Send |
* This parameter affects drum instruments only.
In MIDI documentation, data values and addresses/sizes of exclusive messages etc. are expressed as hexadecimal values for each 7 bits.
The following table shows how these correspond to decimal numbers.
Dec. | Hex. | Dec. | Hex. | Dec. | Hex. | Dec. | Hex. |
0 | 00H | 32 | 20H | 64 | 40H | 96 | 60H |
1 | 01H | 33 | 21H | 65 | 41H | 97 | 61H |
2 | 02H | 34 | 22H | 66 | 42H | 98 | 62H |
3 | 03H | 35 | 23H | 67 | 43H | 99 | 63H |
4 | 04H | 36 | 24H | 68 | 44H | 100 | 64H |
5 | 05H | 37 | 25H | 69 | 45H | 101 | 65H |
6 | 06H | 38 | 26H | 70 | 46H | 102 | 66H |
7 | 07H | 39 | 27H | 71 | 47H | 103 | 67H |
8 | 08H | 40 | 28H | 72 | 48H | 104 | 68H |
9 | 09H | 41 | 29H | 73 | 49H | 105 | 69H |
10 | 0AH | 42 | 2AH | 74 | 4AH | 106 | 6AH |
11 | 0BH | 43 | 2BH | 75 | 4BH | 107 | 6BH |
12 | 0CH | 44 | 2CH | 76 | 4CH | 108 | 6CH |
13 | 0DH | 45 | 2DH | 77 | 4DH | 109 | 6DH |
14 | 0EH | 46 | 2EH | 78 | 4EH | 110 | 6EH |
15 | 0FH | 47 | 2FH | 79 | 4FH | 111 | 6FH |
16 | 10H | 48 | 30H | 80 | 50H | 112 | 70H |
17 | 11H | 49 | 31H | 81 | 51H | 113 | 71H |
18 | 12H | 50 | 32H | 82 | 52H | 114 | 72H |
19 | 13H | 51 | 33H | 83 | 53H | 115 | 73H |
20 | 14H | 52 | 34H | 84 | 54H | 116 | 74H |
21 | 15H | 53 | 35H | 85 | 55H | 117 | 75H |
22 | 16H | 54 | 36H | 86 | 56H | 118 | 76H |
23 | 17H | 55 | 37H | 87 | 57H | 119 | 77H |
24 | 18H | 56 | 38H | 88 | 58H | 120 | 78H |
25 | 19H | 57 | 39H | 89 | 59H | 121 | 79H |
26 | 1AH | 58 | 3AH | 90 | 5AH | 122 | 7AH |
27 | 1BH | 69 | 3BH | 91 | 5BH | 123 | 7BH |
28 | 1CH | 60 | 3CH | 92 | 5CH | 124 | 7CH |
29 | 1DH | 61 | 3DH | 93 | 5DH | 125 | 7DH |
30 | 1EH | 62 | 3EH | 94 | 5EH | 126 | 7EH |
31 | 1FH | 63 | 3FH | 95 | 5FH | 127 | 7FH |
* Decimal values such as MIDI channel, bank select, and program change are listed as one (1) greater than the values given in the above table.
* A 7-bit byte can express data in the range of 128 steps. For data where greater precision is required, we must use two or more bytes. For example, two hexadecimal numbers aa bbH expressing two 7-bit bytes would indicate a value of aa x 128 + bb.
* In the case of values which have a (+/-) sign, 00H = -64, 40H = +/-0, and 7FH = +63, so that the decimal expression would be 64 less than the value given in the above chart. In the case of two types, 00 00H = -8192, 40 00H = +/-0, and 7F 7FH = +8191. For example if aa bbH were expressed as decimal, this would be aa bbH – 40 00H = aa x 128 + bb – 64 x 128.
* Data marked « nibbled » is expressed in hexadecimal in 4-bit units. A value expressed as a 2-byte nibble 0a 0bH has the value of a x 16 + b.
<Example 1> What is the decimal expression of 5AH ?
From the preceding table, 5AH = 90
<Example 2> What is the decimal expression of the value 12 34H given as hexadecimal for each 7 bits?
From the preceding table, since 12H = 18 and 34H = 52
18 x 128 + 52 = 2356
<Example 3> What is the decimal expression of the nibbled value 0A 03 09 0D ?
From the preceding table, since 0AH = 10, 03H = 3, 09H = 9, 0DH = 13
((10 x 16 + 3) x 16 + 9) x 16 + 13 = 41885
<Example 4> What is the nibbled expression of the decimal value 1258?
16) 1258
16) 78 … 10
16) 4 … 14
0 … 4
Since from the preceding table, 0 = 00H, 4 = 04H, 14 = 0EH, 10 = 0AH, the answer is 00 04 0E 0AH.
<Example 1> 92 3E 5F
9n is the Note-on status, and n is the MIDI channel number. Since 2H = 2, 3EH = 62, and 5FH = 95, this is a Note-on message with MIDI CH = 3, note number 62 (note name is D4), and velocity 95.
<Example 2> CE 49
CnH is the Program Change status, and n is the MIDI channel number. Since EH = 14 and 49H = 73, this is a Program Change message with MIDI CH = 15, program number 74 (Flute).
<Example 3> EA 00 28
EnH is the Pitch Bend Change status, and n is the MIDI channel number. The 2nd byte (00H = 0) is the LSB and the 3rd byte (28H = 40) is the MSB, but Pitch Bend Value is a signed number in which 40 00H (= 64 x 128 + 0 = 8192) is 0, so this Pitch Bend Value is
28 00H – 40 00H = 40 x 128 + 0 – (64 x 128 + 0) = 5120 – 8192 = -3072
If the Pitch Bend Sensitivity is set to 2 semitones, -8192 (00 00H) will cause the pitch to change -200 cents, so in this case -200 x (-3072) / (-8192) = -75 cents of Pitch Bend is being applied to MIDI channel 11.
# <Example 4> B3 64 00 65 00 06 0C 26 00 64 7F 65 7F
BnH is the Control Change status, and n is the MIDI channel number. For Control Changes, the 2nd byte is the control number, and the 3rd byte is the value. In a case in which two or more messages consecutive messages have the same status, MIDI has a provision called « running status » which allows the status byte of the second and following messages to be omitted. Thus, the above messages have the following meaning.
B3 64 00 | MIDI ch.4, lower byte of RPN parameter number: 00H |
(B3)65 00 | (MIDI ch.4) upper byte of RPN parameter number: 00H |
(B3)06 0C | (MIDI ch.4) upper byte of parameter value: 0CH |
(B3)26 00 | (MIDI ch.4) lower byte of parameter value: 00H |
(B3)64 7F | (MIDI ch.4) lower byte of RPN parameter number: 7FH |
(B3)65 7F | (MIDI ch.4) upper byte of RPN parameter number: 7FH |
In other words, the above messages specify a value of 0C 00H for RPN parameter number 00 00H on MIDI channel 4, and then set the RPN parameter number to 7F 7FH.
RPN parameter number 00 00H is Pitch Bend Sensitivity, and the MSB of the value indicates semitone units, so a value of 0CH = 12 sets the maximum pitch bend range to +/-12 semitones (1 octave). (The LSB of Pitch Bend Sensitivity is ignored, but the LSB should be transmitted anyway (with a value of 0) so that operation will be correct on any device.)
Once the parameter number has been specified for RPN or NRPN, all Data Entry messages transmitted on that same channel will be valid, so after the desired value has been transmitted, it is a good idea to set the parameter number to 7F 7FH to prevent accidents. This is the reason for the (B3) 64 7F (B3) 65 7F at the end.
It is not desirable for performance data (such as Standard MIDI File data) to contain many events with running status as given in <Example 4>. This is because if playback is halted during the song and then rewound or fast-forwarded, the sequencer may not be able to transmit the correct status, and the sound source will then misinterpret the data. Take care to give each event its own status.
It is also necessary that the RPN or NRPN parameter number setting and the value setting be done in the proper order. On some sequencers, events occurring in the same (or consecutive) clock may be transmitted in an order different than the order in which they were received. For this reason it is a good idea to slightly skew the time of each event (about 1 tick for TPQN = 96, and about 5 ticks for TPQN = 480).
* TPQN: Ticks Per Quarter Note
In MIDI, individual Parts are tuned by sending RPN #1 (Master Fine Tuning) to the appropriate MIDI channel.
In MIDI, an entire device is tuned by either sending RPN #1 to all MIDI channels being used, or by sending a System Exclusive MASTER FINE TUNE.
RPN #1 allows tuning to be specified in steps of approximately 0.012 cents (to be precise, 100/8192 cent).
The values of RPN #1 and System Exclusive MASTER FINE TUNE are added together to determine the actual pitch sounded by each Part.
Frequently used tuning values are given in the following table for your reference. Values are in hexadecimal (decimal in parentheses).
Hz in A4 | cent | RPN #1 |
445.0 | +19.56 | 4C 43 (+1603) |
444.0 | +15.67 | 4A 03 (+1283) |
443.0 | +11.76 | 47 44 (+964) |
442.0 | + 7.85 | 45 03 (+643) |
441.0 | + 3.93 | 42 42 (+322) |
440.0 | 0.00 | 40 00 (0) |
439.0 | – 3.94 | 3D 3D (-323) |
438.0 | – 7.89 | 3A 7A (-646) |
<Example> Set the tuning of MIDI channel 3 to A4 = 442.0 Hz
Send RPN#1 to MIDI channel 3. From the above table, the value is 45 03H.
B2 64 00 | MIDI ch.3, lower byte of RPN parameter number: 00H |
(B2)65 01 | (MIDI ch.3) upper byte of RPN parameter number: 01H |
(B2)06 45 | (MIDI ch.3) upper byte of parameter value: 45H |
(B2)26 03 | (MIDI ch.3) lower byte of parameter value: 03H |
(B2)64 7F | (MIDI ch.3) lower byte of RPN parameter number: 7FH |
(B2)65 7F | (MIDI ch.3) upper byte of RPN parameter number: 7FH |
Comme vous l’avez constaté nous utilisons aussi bien pour les RPN que les NRPN deux contrôleurs qui sélectionnent le paramètre puis un contrôleur data entry MSB (message sur 7 bits) ou éventuellement un data entry MSB + LSB (message sur 14 bits) –
Nous pouvons ensuite au cours de la séquence continuer à utiliser data entry sans devoir renvoyer la sélection RPN ou NRPN. Cela implique que nous ne pourrons pas utiliser simultanément plusieurs RPN ou plusieurs NRPN. Un seul paramètre est actif à la fois et tient compte du Data Entry.
Pour éviter tout incident de fonctionnement dans le cas ou un Data Entry serait envoyé plus tard dans la séquence ou dans une autre séquence sans que le générateur de son ait été réinitialisé, il est recommandé de désactiver la fonction en envoyant au générateur de son un NULL RPN (message RPN MSB : 127, LSB : 127). Un événement Data Entry ne provoquera alors aucune action.