MIDI Implementation
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 | *1 | |
Control Change | 0, 32 | x | o *1 | Bank select |
1 | x | o *1 | Modulation | |
5 | x | o *1 | Portamento time | |
6, 38 | x | o *1 | Data entry- | |
7 | x | o *1 | Volume | |
10 | x | o *1 | Panpot | |
11 | x | o *1 | Expression | |
64 | x | o *1 | Hold1 | |
65 | x | o *1 | Portamento | |
66 | x | o *1 | Sostenuto | |
84 | x | o *1 | Portamento control | |
91 | x | o (Reverb) *1 | Effect1 depth | |
93 | x | o (Chorus) *1 | Effect3 depth | |
94 | x | o (Delay) *1 | Effect4 depth | |
98, 99 | x | x *1 | NRPN LSB, MSB | |
100, 101 | x | o *1 | RPN LSB, MSB | |
Prog Change | x | o *1 | ||
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 | o | ||
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
Section 1. Receive data
Channel Voice Messages
<Note off>
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)
* For Drum Parts, these messages are received when Rx.NOTE OFF
= ON for each Instrument.
* The velocity values of Note Off messages are ignored.
<Note on>
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)
* Not received when Rx.NOTE MESSAGE = OFF. (Initial value is
ON)
* For Drum Parts, not received when Rx.NOTE ON = OFF for each
Instrument.
<Control Change>
* When Rx.CONTROL CHANGE = OFF, all control change messages
except for Channel Mode messages will be ignored.
* The value specified by a Control Change message will not be
reset even by a Program Change, etc.
> 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)
* Not received when Rx.BANK SELECT = OFF. "Rx.BANK
SELECT" is set to OFF by "Turn General MIDI System
On," and set to ON by "GS RESET." (Power-on
default value is ON.)
* Bank number LSB will be handled as 00H regardless of the
received value. However, when sending Bank Select messages, you
have to send both the MSB (mmH) and LSB (llH, the value should be
00H) together.
* Bank Select processing will be suspended until a Program Change
message is received.
* The GS format "Variation number" is the value of the
Bank Select MSB (Controller number 0) expressed in decimal.
> 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)
* Not received when Rx.MODULATION = OFF. (Initial value is ON)
* The resulting effect is determined by System Exclusive
messages. With the initial settings, this is Pitch Modulation
Depth.
> 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)
* This adjusts the rate of pitch change when Portamento is ON or when using the Portamento Control. A value of 0 results in the fastest change.
> 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.
* Not received when Rx.VOLUME = OFF. (Initial value is ON)
> 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)
* For Rhythm Parts, this is a relative adjustment of each
Instrument's pan setting.
* Not received when Rx.PANPOT = OFF. (Initial value is ON)
> 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.
* Not received when Rx.EXPRESSION = OFF. (Initial value is ON)
> 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
* Not received when Rx.HOLD1 = OFF. (Initial value is 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
* Not received when Rx.PORTAMENTO = OFF. (Initial value is 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
* Not received when Rx.SOSTENUTO = OFF. (Initial value is ON)
> Portamento control (Controller number 84)
Status | 2nd byte | 3rd byte |
BnH | 54H | kkH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
kk = source note number : 00H-7FH (0-127)
* A Note-on received immediately after a Portamento Control
message will change continuously in pitch, starting from the
pitch of the Source Note Number.
* If a voice is already sounding for a note number identical to
the Source Note Number, this voice will continue sounding (i.e.,
legato) and will, when the next Note-on is received, smoothly
change to the pitch of that Note-on.
* The rate of the pitch change caused by Portamento Control is
determined by the Portamento Time valu
Example 1)
On MIDI Description | Result |
90 3C 40(Note on C4) | C4 on |
B0 54 3C(Portamento Control from C4) | no change (C4 voice still sounding) |
90 40 40(Note on E4) | glide from C4 to E4 |
80 3C 40(Note off C4) | no change |
80 40 40(Note off E4) | E4 off |
Example 2)
On MIDI Description | Result |
B0 54 3C(Portamento Control from C4) | no change |
90 40 40(Note on E4) | E4 is played with glide from C4 to E4 |
80 40 40(Note off E4) | E4 off |
> 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.
> Effect 4 (Delay Send Level) (Controller number 94)
Status | 2nd byte | 3rd byte |
BnH | 5EH | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Control value : 00H-7FH (0-127), Initial Value = 00H (0)
* This message adjusts the Delay 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
* NRPN can be received when Rx.NRPN = ON. "Rx.NRPN"
is set to OFF by power-on reset or by receiving "Turn
General MIDI System On," and it is set to ON by "GS
RESET."
* The value set by NRPN will not be reset even if Program Change
or Reset All Controllers is received.
**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 GS 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)
On the VSC 3.0, NRPN can be used to modify the following parameters.
NRPN MSB LSB | Data entry MSB | Explanation |
01H 08H | mmH | Vibrato rate (relative change on specified channel) mm: 00H-40H-7FH (-64 - 0 - +63) |
01H 09H | mmH | ibrato depth (relative change on specified channel) mm: 00H-40H-7FH (-64 - 0 - +63) |
01H 0AH | mmH | Vibrato delay (relative change on specified channel) mm: 00H-40H-7FH (-64 - 0 - +63) |
01H 20H | mmH | TVF Cutoff Frequency (relative change) mm: 00H-40H-7FH (-64 - 0 - +63) |
01H 63H | mmH | TVF&TVA Envelope Attack Time (relative change) mm: 00H-40H-7FH (-64 - 0 - +63) |
01H 64H | mmH | TVF&TVA Envelope Decay Time (relative change) mm: 00H-40H-7FH (-64 - 0 - +63) |
01H 66H | mmH | TVF&TVA Envelope Release Time (relative change) mm: 00H-40H-7FH (-64 - 0 - +63) |
18H rrH | mmH | Pitch coarse of drum instrument (relative change on
specified drum instrument) rr: key number of drum instrument mm: 00H-40H-7FH (-64 - 0 - +63 semitone) |
1AH rrH | mmH | TVA level of drum instrument (absolute change on
specified drum instrument) rr: key number of drum instrument mm: 00H-7FH (zero-maximum) |
1CH rrH | mmH | Panpot of drum instrument (absolute change on
specified drum instrument) rr: key number of drum instrument mm: 01H-40H-7FH (Left-Center-Right) |
1DH rrH | mmH | Reverb send level of drum instrument (absolute change
on specified drum instrument) rr: key number of drum instrument mm: 00H-7FH (zero-maximum) |
1EH rrH | mmH | horus send level of drum instrument (absolute change
on specified drum instrument) rr: key number of drum instrument mm: 00H-7FH (zero-maximum) |
1FH rrH | mmH | Delay send level of drum instrument (absolute change
on specified drum instrument) rr: key number of drum instrument mm: 00H-7FH (zero-maximum) |
* Parameters marked "relative change" will change
relative to the preset value.
* 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
* Not received when Rx.RPN = OFF. (Initial value is ON)
* The value specified by RPN will not be reset even by messages
such as Program Change or Reset All Controller.
**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 VSC 3.0, RPN can be used to modify the following parameters.
RPN MSB LSB | Data entry MSB LSB | Explanation |
00H 00H | mmH --- | itch 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: 28H-40H-58H (-24 - 0 - +24 semitones), Initial Value = 40H (0 semitone) ll: ignored (processed as 00H) |
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 |
<Program Change>
Status | 2nd byte |
CnH | ppH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
pp = Program number : 00H-7FH (prog.1-prog.128)
* Not received when Rx.PROGRAM CHANGE = OFF. (Initial value is
ON)
* After a Program Change message is received, the sound will
change beginning with the next Note-on. Voices already sounding
when the Program Change message was received will not be
affected.
* For Drum Parts, Program Change messages will not be received on
bank numbers 129-16384 (the value of Control Number 0 is other
than 0 (00H)).
<Channel Pressure>
Status | 2nd byte |
DnH | vvH |
n = MIDI channel number : 0H-FH (ch.1-ch.16)
vv = Channel Pressure : 00H-7FH (0-127)
* Not received when Rx.CH PRESSURE (CAf) = OFF. (Initial value
is ON)
* The resulting effect is determined by System Exclusive
messages. With the initial settings there will be no effect.
<Pitch Bend Change>
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)
* Not received when Rx.PITCH BEND = OFF. (Initial value is ON)
* The resulting effect is determined by System Exclusive
messages. With the initial settings the effect is Pitch Bend.
Channel Mode Messages
<All Sounds Off (Controller number 120)>
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.
<Reset All Controllers (Controller number 121)>
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) |
RPN | unset; previously set data will not change |
NRPN | unset; previously set data will not change |
<All Notes Off (Controller number 123)>
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.
<OMNI OFF (Controller number 124)>
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.
<OMNI ON (Controller number 125)>
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).
<MONO (Controller number 126)>
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."
<POLY (Controller number 127)>
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.
System Exclusive Message
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 VSC 3.0 are; messages related to mode settings, Universal Realtime System Exclusive messages, and Data Set (DT1).
<System exclusive messages related to mode settings>
These messages are used to initialize a device to GS or
General MIDI mode, or change the operating mode. When creating
performance data, a "Turn General MIDI System On"
message should be inserted at the beginning of a General MIDI
score, and a "GS Reset" message at the beginning of a
GS music data. Each song should contain only one mode message as
appropriate for the type of data. (Do not insert two or more mode
setting messages in a single song.)
"Turn General MIDI System On" and "Turn General
MIDI System Off" use Universal Non-realtime Message format.
"GS Reset" and "Exit GS mode" use Roland
system exclusive format "Data Set 1 (DT1)."
> 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 VSC 3.0, 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) |
* When this message is received, Rx.BANK SELECT will be OFF
and Rx.NRPN will be OFF.
* 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 VSC 3.0, 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) |
* When this message is received, Rx.NRPN will be OFF.
* There must be an interval of at least 50 ms between this
message and the next message.
> GM System Off
This message resets the unit from General MIDI mode to GS mode.
Status | Data byte | Status |
F0H | 7EH, 7FH, 09H, 02H | F7H |
Byte | Explanation |
F0H | Exclusive status |
7EH | ID number (Universal Non-realtime Message) |
7FH | Device ID (Broadcast) |
09H | Sub ID#1 (General MIDI Message) |
02H | sub-ID#2 (General MIDI Off) |
F7H | EOX (End Of Exclusive) |
* This message will not be received if "Mode Change Receive SW = OFF," or "Rx.Sys.Ex.SW = OFF."
> GS Reset
GS Reset is a command message that resets the internal settings of a device to the GS initial state. This message will appear at the beginning of GS music data, and a GS device that receives this message will automatically be set to the proper state to correctly playback GS music data.
Status | Data byte | Status |
F0H | 41H, dev, 42H, 12H, 40H, 00H, 7FH, 00H, 41H | F7H |
Byte | Explanation |
F0H | Exclusive status |
41H | ID number (Roland) |
dev | Device ID (dev: 00H-1FH (1-32), Initial value is 10H (17)) |
42H | Model ID (GS) |
12H | Command ID (DT1) |
40H | Address MSB |
00H | Address |
7FH | Address LSB |
00H | Data (GS reset) |
41H | Checksum |
F7H | EOX (End Of Exclusive) |
* When this message is received, Rx.NRPN will be ON.
> Exit GS mode
This is a command message that resets the internal settings of the unit from GS mode to GM mode.
Status | Data byte | Status |
F0H | 41H, dev, 42H, 12H, 40H, 00H, 7FH, 7FH, 42H | F7H |
Byte | Explanation |
F0H | Exclusive status |
41H | ID number (Roland) |
dev | Device ID (dev: 00H-1FH (1-32), Initial value is 10H (17)) |
42H | Model ID (GS) |
12H | Command ID (DT1) |
40H | Address MSB |
00H | Address |
7FH | Address LSB |
7FH | Data (Exit GS mode) |
41H | Checksum |
F7H | EOX (End Of Exclusive) |
* This message will not be received if "Mode Change Receive SW = OFF," or "Rx.Sys.Ex.SW = OFF" won't recognize this message.
> System Mode Set
On this system, This message is same as GS reset message.
Status | Data byte | Status |
F0H | 41H, dev, 42H, 12H, 00H, 00H, 7FH, ddH, sumH | F7H |
Byte | Explanation |
F0H | Exclusive status |
41H | ID number (Roland) |
dev | Device ID (dev: 00H-1FH (1-32), Initial value is 10H (17)) |
42H | Model ID (GS) |
12H | Command ID (DT1) |
00H | Address MSB |
00H | Address |
7FH | Address LSB |
ddH | Data |
sumH | Checksum |
F7H | EOX (End Of Exclusive) |
<Universal Realtime System Exclusive Messages>
> 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.
* This message will not be received if "Mode Change Receive
SW = OFF," or "Rx.Sys.Ex.SW = OFF."
<Data transmission>
> Data set 1 DT1
This is the message that actually performs data transmission, and is used when you wish to transmit the data.
Status | Data byte | Status |
F0H | 41H, dev, 42H, 12H, aaH, bbH, ccH, ddH, ... eeH, sum | F7H |
Byte | Explanation |
F0H | Exclusive status |
41H | ID number (Roland) |
dev | Device ID (dev: 00H-1FH, Initial value is 10H)) |
42H | Model ID (GS) |
12H | Command ID (DT1) |
aaH | Address MSB: upper byte of the starting address of the transmitted data |
bbH | Address: middle byte of the starting address of the transmitted data |
ccH | Address LSB: lower byte of the starting address of the transmitted data |
ddH | Data: the actual data to be transmitted. Multiple bytes of data are transmitted starting from the address. |
: | : |
eeH | Data |
sum | Checksum |
F7H | EOX (End Of Exclusive) |
* The amount of data that can be transmitted at one time
depends on the type of data, and data can be received only from
the specified starting address and size. Refer to the Address and
Size given in Section 3.
* Data larger than 128 bytes must be divided into packets of 128
bytes or less. If "Data Set 1" is transmitted
successively, there must be an interval of at least 40 ms between
packets.
Address Block map
An outlined address map of the Exclusive Communication is as follows;
Address (H) | Block | |
40 00 00 : 40 01 3F |
SYSTEM PARAMETERS | Individual |
40 1x 00 : 40 2x 5A |
PART PARAMETERS (x = 0-F) | Individual |
41 m0 00 : 41 m8 7F |
DRUM SETUP PARAMETERS (m = 0-1) | Individual |
There are two ways in which GS data is transmitted: Individual Parameter Transmission in which individual parameters are transmitted one by one, and Bulk Dump Transmission in which a large amount of data is transmitted at once.
Individual Parameters
Individual Parameter Transmission transmits data (or requests
data) for one parameter as one exclusive message (one packet of
"F0 ..... F7").
In Individual Parameter Transmission, you must use the Address
and Size listed in the following "Parameter Address
Map." Addresses marked at "#" cannot be used as
starting addresses.
<System Parameters>
Parameters related to the system of the device are called System Parameters.
Address (H) | Size (H) | Data (H) | Parameter | Description | Default Value (H) | Description |
40 00 00 | 00 00 04 | 0018-07E8 | MASTER TUNE | -100.0 - +100.0 [cent] Use nibblized data. * Refer to Supplementary material, "About tuning". |
00 04 00 00 | 0 [cent] |
40 00 01# | ||||||
40 00 02# | ||||||
40 00 03# | ||||||
40 00 04 | 00 00 01 | 00-7F | MASTER VOLUME (= F0 7F 7F 04 01 00 vv F7) |
0-127 | 7F | 127 |
40 00 05 | 00 00 01 | 28-58 | MASTER KEY-SHIFT | -24 - +24[semitones] | 40 | 0 [semitones] |
40 00 06 | 00 00 01 | 01-7F | MASTER PAN | -63 (LEFT) - +63 (RIGHT) | 40 | 0 (CENTER) |
40 00 7F | 00 00 01 | 00, 7F | MODE SET (Rx. only) |
00 = GS Reset 127 = Exit GS mode * Refer to "System exclusive messages related to Mode settings". |
||
40 01 10 | 00 00 10 | 00-0F | VOICE RESERVE | Part 10 (Drum Part) | 02 | 2 |
40 01 11# | Part 1 | 06 | 6 | |||
40 01 12# | Part 2 | 02 | 2 | |||
40 01 13# | Part 3 | 02 | 2 | |||
40 01 14# | Part 4 | 02 | 2 | |||
40 01 15# | Part 5 | 02 | 2 | |||
40 01 16# | Part 6 | 02 | 2 | |||
40 01 17# | Part 7 | 02 | 2 | |||
40 01 18# | Part 8 | 02 | 2 | |||
40 01 19# | Part 9 | 02 | 2 | |||
40 01 1A# | Part 11 | 00 | 0 | |||
40 01 :# | : | : | : | |||
40 01 1F# | Part 16 | 00 | 0 | |||
40 01 30 | 00 00 01 | 00-07 | REVERB MACRO | 00:Room 1 01:Room 2 02:Room 3 03:Hall 1 04:Hall 2 05:Plate 06:Delay 07:Panning Delay * REVERB MACRO is a macro parameter that allows global setting of reverb parameters. When you select the reverb type with REVERB MACRO, each reverb parameter will be set to the most suitable value. |
04 | Hall 2 |
40 01 31 | 00 00 01 | 00-07 | REVERB CHARACTER | 0-7 * REVERB CHARACTER is a parameter that changes the reverb algorithm. The value of REVERB CHARACTER corresponds to the REVERB MACRO of the same number. |
04 | 4 |
40 01 33 | 00 00 01 | 00-7F | REVERB LEVEL | 0-127 | 40 | 64 |
40 01 34 | 00 00 01 | 00-7F | REVERB TIME | 0-127 | 40 | 64 |
40 01 35 | 00 00 01 | 00-7F | REVERB DELAY FEEDBACK | 0-127 | 00 | 0 |
40 01 38 | 00 00 01 | 00-07 | CHORUS MACRO | 00:Chorus 1 01:Chorus 2 02:Chorus 3 03:Chorus 4 04:Feedback Chorus 05:Flanger 06:Short Delay 07:Short Delay(FB) *CHORUS MACRO is a macro parameter that allows global setting of chorus parameters. When you use CHORUS MACRO to select the chorus type, each chorus parameter will be set to the most suitable value. |
02 | Chorus 3 |
40 01 3A | 00 00 01 | 00-7F | CHORUS LEVEL | 0-127 | 40 | 64 |
40 01 3B | 00 00 01 | 00-7F | CHORUS FEEDBACK | 0-127 | 08 | 8 |
40 01 3C | 00 00 01 | 00-7F | CHORUS DELAY | 0-127 | 50 | 80 |
40 01 3D | 00 00 01 | 00-7F | CHORUS RATE | 0-127 | 03 | 3 |
40 01 3E | 00 00 01 | 00-7F | CHORUS DEPTH | 0-127 | 13 | 19 |
40 01 3F | 00 00 01 | 00-7F | CHORUS SEND LEVEL TO REVERB | 0-127 | 00 | 0 |
40 01 40 | 00 00 01 | 00-7F | CHORUS SEND LEVEL TO DELAY | 0-127 | 00 | 0 |
40 01 50 | 00 00 01 | 00-07 | DELAY MACRO | 00:Delay 1 01:Delay 2 02:Delay 3 03:Delay 4 04:Pan Delay 1 05:Pan Delay 2 06:Pan Delay 3 07:Pan Delay 4 08:Delay to Reverb 09:Pan Repeat * DELAY MACRO is a macro parameter that allows global setting of delay parameters. When you use DELAY MACRO to select the delay type, each delay parameter will be set to the most suitable value. |
00 | Delay 1 |
40 01 52 | 00 00 01 | 00-73 | DELAY TIME CENTER | 0.1mS - 1sec |
61 | 340 |
40 01 53 | 00 00 01 | 01-78 | DELAY TIME RATIO LEFT | 4 - 500% | 01 | 4 |
40 01 54 | 00 00 01 | 01-78 | DELAY TIME RATIO RIGHT | 4 - 500% | 01 | 4 |
40 01 55 | 00 00 01 | 00-7F | DELAY LEVEL CENTER | 0-127 | 7F | 127 |
40 01 56 | 00 00 01 | 00-7F | DELAY LEVEL LEFT | 0-127 | 00 | 0 |
40 01 57 | 00 00 01 | 00-7F | DELAY LEVEL RIGHT | 0-127 | 00 | 0 |
40 01 58 | 00 00 01 | 00-7F | DELAY LEVEL | 0-127 | 40 | 64 |
40 01 59 | 00 00 01 | 00-7F | DELAY FEEDBACK | -64 - +63 | 50 | 80 |
40 01 5A | 00 00 01 | 00-7F | DELAY SEND LEVEL TO REVERB | 0-127 | 00 | 0 |
* The preset parameters value for each DELAY MACRO are as follows.
DELAY TIME | Time Range[ms] | Resolution[ms] |
01 - 14 | 0.1 - 2.0 | 0.1 |
14 - 23 | 2.0 - 5.0 | 0.2 |
23 - 2D | 5.0 - 10.0 | 0.5 |
2D - 37 | 10.0 - 20.0 | 1.0 |
37 - 46 | 20.0 - 50.0 | 2.0 |
46 - 50 | 50.0 - 100.0 | 5.0 |
50 - 5A | 100.0 - 200.0 | 10.0 |
5A - 69 | 200.0 - 500.0 | 20.0 |
69 - 73 | 500.0 - 1000.0 | 50.0 |
<Part Parameters>
VSC 3.0 has 16 parts. Parameters that can be set individually
for each Part are called Part parameters.
If you use exclusive messages to set Part parameters, specify the
address by Block number rather than Part Number (normally the
same number as the MIDI channel). The Block number can be
specified as one of 16 blocks, from 0 (H) to F (H).
The relation between Part number and Block number is as follows.
x...BLOCK NUMBER (0-F) | Part 1(MIDIch = 1) x = 1(H) Part 2(MIDIch = 2) x = 2(H) : : : Part 9(MIDIch = 9) x = 9(H) Part10(MIDIch = 10) x = 0(H) Part11(MIDIch = 11) x = A(H) Part12(MIDIch = 12) x = B(H) : : : Part16 (MIDIch = 16) x = F(H) |
In the following Map, the Controller Number of Control Change is indicated as "CC#."
Address (H) | Size (H) | Data (H) | Parameter | Description | Default Value (H) | Description |
40 1x 00 | 00 00 02 | 00-7F | TONE NUMBER | CC#00 VALUE 0-127 | 00 | 0 |
40 1x 01# | 00-7F | P.C. VALUE 1-128 | 00 | 1 | ||
40 1x 02 | 00 00 01 | 00-10 | Rx. CHANNEL | 1-16, OFF | Same as the Part Number. | |
40 1x 03 | 00 00 01 | 00-01 | Rx. PITCH BEND | OFF/ON | 01 | ON |
40 1x 04 | 00 00 01 | 00-01 | Rx. CH PRESSURE(CAf) | OFF/ON | 01 | ON |
40 1x 05 | 00 00 01 | 00-01 | Rx. PROGRAM CHANGE | OFF/ON | 01 | ON |
40 1x 06 | 00 00 01 | 00-01 | Rx. CONTROL CHANGE | OFF/ON | 01 | ON |
40 1x 07 | 00 00 01 | 00-01 | Rx. POLY PRESSURE(PAf) | OFF/ON | 01 | ON |
40 1x 08 | 00 00 01 | 00-01 | Rx. NOTE MESSAGE | OFF/ON | 01 | ON |
40 1x 09 | 00 00 01 | 00-01 | Rx. RPN | OFF/ON | 01 | ON |
40 1x 0A | 00 00 01 | 00-01 | Rx. NRPN | OFF/ON | 00(01*) | OFF (ON*) * Rx. NRPN is set to OFF by power-on or by receiving "Turn General MIDI System On," and it will be set ON when "GS RESET" is received. |
40 1x 0B | 00 00 01 | 00-01 | Rx. MODULATION | OFF/ON | 01 | ON |
40 1x 0C | 00 00 01 | 00-01 | Rx. VOLUME | OFF/ON | 01 | ON |
40 1x 0D | 00 00 01 | 00-01 | Rx. PANPOT | OFF/ON | 01 | ON |
40 1x 0E | 00 00 01 | 00-01 | Rx. EXPRESSION | OFF/ON | 01 | ON |
40 1x 0F | 00 00 01 | 00-01 | Rx. HOLD1 | OFF/ON | 01 | ON |
40 1x 10 | 00 00 01 | 00-01 | Rx. PORTAMENTO | OFF/ON | 01 | ON |
40 1x 11 | 00 00 01 | 00-01 | Rx. SOSTENUTO | OFF/ON | 01 | ON |
40 1x 13 | 00 00 01 | 00-01 | MONO/POLY MODE (= CC# 126 01/CC# 127 00) |
Mono/Poly | 01 | Poly |
40 1x 14 | 00 00 01 | 00-02 | ASSIGN MODE | 0 = SINGLE 1 = LIMITED-MULTI 2 = FULL-MULTI |
00 at x = 0 01 at x = 1-F |
SINGLE at x = 0 LIMITED-MULTI at x = 1-F * ASSIGN MODE is the parameter that determines how voice assignment will be handled when sounds overlap on identical note numbers in the same channel (i.e., repeatedly struck notes). This is initialized to a mode suitable for each Part, so for general purposes there is no need to change this. |
40 1x 15 | 00 00 01 | 00-02 | USE FOR RHYTHM PART | 0 = OFF 1 = MAP1 2 = MAP2 |
00 at x = 1-F 01 at x = 00 |
OFF at x =1-F MAP1 at x = 0 * This parameter sets the Drum Map of the Part used as the Drum Part. VSC 3.0 can simultaneously (in different Parts) use up to two Drum Maps (MAP1, MAP2). With the initial settings, Part10 (MIDI CH = 10, x = 0) is set to MAP1 (1), and other Parts are set to normal instrumental Parts (OFF (0)). |
40 1x 16 | 00 00 01 | 28-58 | PITCH KEY SHIFT | -24 - +24 [semitones] | 40 | 0 [semitones] |
40 1x 19 | 00 00 01 | 00-7F | PART LEVEL (= CC# 7) |
0-127 | 64 | 100 |
40 1x 1A | 00 00 01 | 00-7F | VELOCITY SENSE DEPTH | 0-127 | 40 | 64 |
40 1x 1B | 00 00 01 | 00-7F | VELOCITY SENSE OFFSET | 0-127 | 40 | 64 |
40 1x 1C | 00 00 01 | 01-7F | PART PANPOT | -63 (LEFT) - +63 (RIGHT) | 40 | 0 (CENTER) |
40 1x 1D | 00 00 01 | 00-7F | KEY RANGE LOW | C-1 - G9 | 00 | C-1 |
40 1x 1E | 00 00 01 | 00-7F | KEY RANGE HIGH | C-1 - G9 | 7F | G 9 |
40 1x 1F | 00 00 01 | 00-5F | CC1 CONTROLLER NUMBER | 0-95 | 10 | 16 |
40 1x 20 | 00 00 01 | 00-5F | CC2 CONTROLLER NUMBER | 0-95 | 11 | 17 |
40 1x 21 | 00 00 01 | 00-7F | CHORUS SEND LEVEL (= CC# 93) |
0-127 | 00 | 0 |
40 1x 22 | 00 00 01 | 00-7F | REVERB SEND LEVEL (= CC# 91) |
0-127 | 28 | 40 |
40 1x 23 | 00 00 01 | 00-01 | Rx.BANK SELECT | OFF/ON | 01(00*) | ON (OFF*) * Rx. BANK SELECT is set to ON by power-on or by receiving "GS RESET," and will be set OFF when "Turn General MIDI System On" is received. |
40 1x 2A | 00 00 02 | 00 00-40 00-7F 7F | PITCH FINE TUNE (=RPN#1) |
-100 - 0 - +100[cent] | 0 | |
40 1x 2B# | ||||||
40 1x 2C | 00 00 01 | 00-7F | DELAY SEND LEVEL (= CC# 94) |
0-127 | 00 | 0 |
40 1x 30 | 00 00 01 | 00-7F | TONE MODIFY 1 Vibrato rate(= NRPN# 8) |
-64 - +63 | 40 | 0 |
40 1x 31 | 00 00 01 | 00-7F | TONE MODIFY 2 Vibrato depth(= NRPN# 9) |
-64 - +63 | 40 | 0 |
40 1x 32 | 00 00 01 | 00-7F | TONE MODIFY 3 TVF cutoff frequency (= NRPN# 32) |
-64 - +63 | 40 | 0 |
40 1x 34 | 00 00 01 | 00-7F | TONE MODIFY 5 TVF&TVA Env.attack(= NRPN# 99) |
-64 - +63 | 40 | 0 |
40 1x 35 | 00 00 01 | 00-7F | TONE MODIFY 6 TVF&TVA Env.decay(= NRPN# 100) |
-64 - +63 | 40 | 0 |
40 1x 36 | 00 00 01 | 00-7F | TONE MODIFY 7 TVF&TVA Env.release(= NRPN# 102) |
-64 - +63 | 40 | 0 |
40 1x 37 | 00 00 01 | 00-7F | TONE MODIFY 8 Vibrato delay(= NRPN# 10) |
-64 - +63 | 40 | 0 |
40 1x 40 | 00 00 0C | 00-7F | SCALE TUNING C | -64 - +63[cent] | 40 | 0[cent] |
40 1x 41# | 00-7F | SCALE TUNING C# | -64 - +63[cent] | 40 | 0[cent] | |
40 1x 42# | 00-7F | SCALE TUNING D | -64 - +63[cent] | 40 | 0[cent] | |
40 1x 43# | 00-7F | SCALE TUNING D# | -64 - +63[cent] | 40 | 0[cent] | |
40 1x 44# | 00-7F | SCALE TUNING E | -64 - +63[cent] | 40 | 0[cent] | |
40 1x 45# | 00-7F | SCALE TUNING F | -64 - +63[cent] | 40 | 0[cent] | |
40 1x 46# | 00-7F | SCALE TUNING F# | -64 - +63[cent] | 40 | 0[cent] | |
40 1x 47# | 00-7F | SCALE TUNING G | -64 - +63[cent] | 40 | 0[cent] | |
40 1x 48# | 00-7F | SCALE TUNING G# | -64 - +63[cent] | 40 | 0[cent] | |
40 1x 49# | 00-7F | SCALE TUNING A | -64 - +63[cent] | 40 | 0[cent] | |
40 1x 4A# | 00-7F | SCALE TUNING A# | -64 - +63[cent] | 40 | 0[cent] | |
40 1x 4B# | 00-7F | SCALE TUNING B | -64 - +63[cent] | 40 | 0[cent] | |
40 2x 00 | 00 00 01 | 28-58 | MOD PITCH CONTROL | -24 - +24[semitones] | 40 | 0[semitones] |
40 2x 01 | 00 00 01 | 00-7F | MOD TVF CUTOFF CONTROL | -9600 - +9600[cent] | 40 | 0[cent] |
40 2x 02 | 00 00 01 | 00-7F | MOD AMPLITUDE CONTROL | -100.0 - +100.0[%] | 40 | 0[%] |
40 2x 03 | 00 00 01 | 00-7F | MOD LFO RATE CONTROL | -10.0 - +10.0[Hz] | 40 | 0[Hz] |
40 2x 04 | 00 00 01 | 00-7F | MOD LFO PITCH DEPTH | 0-600[cent] | 0A | 47[cent] |
40 2x 05 | 00 00 01 | 00-7F | MOD LFO TVF DEPTH | 0-2400[cent] | 00 | 0[cent] |
40 2x 06 | 00 00 01 | 00-7F | MOD LFO TVA DEPTH | 0-100.0[%] | 00 | 0[%] |
40 2x 10 | 00 00 01 | 40-58 | BEND PITCH CONTROL | 0-24[semitones] | 42 | 2[semitones] |
40 2x 11 | 00 00 01 | 00-7F | BEND TVF CUTOFF CONTROL | -9600 - +9600[cent] | 40 | 0[cent] |
40 2x 12 | 00 00 01 | 00-7F | BEND AMPLITUDE CONTROL | -100.0 - +100.0[%] | 40 | 0[%] |
40 2x 13 | 00 00 01 | 00-7F | BEND LFO RATE CONTROL | -10.0 - +10.0[Hz] | 40 | 0[Hz] |
40 2x 14 | 00 00 01 | 00-7F | BEND LFO PITCH DEPTH | 0-600[cent] | 00 | 0[cent] |
40 2x 15 | 00 00 01 | 00-7F | BEND LFO TVF DEPTH | 0-2400[cent] | 00 | 0[cent] |
40 2x 16 | 00 00 01 | 00-7F | BEND LFO TVA DEPTH | 0-100.0[%] | 00 | 0[%] |
40 2x 20 | 00 00 01 | 28-58 | CAf PITCH CONTROL | -24 - +24[semitones] | 40 | 0[semitones] |
40 2x 21 | 00 00 01 | 00-7F | CAf TVF CUTOFF CONTROL | -9600 - +9600[cent] | 40 | 0[cent] |
40 2x 22 | 00 00 01 | 00-7F | CAf AMPLITUDE CONTROL | -100.0 - +100.0[%] | 40 | 0[%] |
40 2x 23 | 00 00 01 | 00-7F | CAf LFO RATE CONTROL | -10.0 - +10.0[Hz] | 40 | 0[Hz] |
40 2x 24 | 00 00 01 | 00-7F | CAf LFO PITCH DEPTH | 0-600[cent] | 00 | 0[cent] |
40 2x 25 | 00 00 01 | 00-7F | CAf LFO TVF DEPTH | 0-2400[cent] | 00 | 0[cent] |
40 2x 26 | 00 00 01 | 00-7F | CAf LFO TVA DEPTH | 0-100.0[%] | 00 | 0[%] |
40 2x 40 | 00 00 01 | 28-58 | CC1 PITCH CONTROL | -24 - +24[semitones] | 40 | 0[semitones] |
40 2x 41 | 00 00 01 | 00-7F | CC1 TVF CUTOFF CONTROL | -9600 - +9600[cent] | 40 | 0[cent] |
40 2x 42 | 00 00 01 | 00-7F | CC1 AMPLITUDE CONTROL | -100.0 - +100.0[%] | 40 | 0[%] |
40 2x 43 | 00 00 01 | 00-7F | CC1 LFO RATE CONTROL | -10.0 - +10.0[Hz] | 40 | 0[Hz] |
40 2x 44 | 00 00 01 | 00-7F | CC1 LFO PITCH DEPTH | 0-600[cent] | 00 | 0[cent] |
40 2x 45 | 00 00 01 | 00-7F | CC1 LFO TVF DEPTH | 0-2400[cent] | 00 | 0[cent] |
40 2x 46 | 00 00 01 | 00-7F | CC1 LFO TVA DEPTH | 0-100.0[%] | 00 | 0[%] |
40 2x 50 | 00 00 01 | 28-58 | CC2 PITCH CONTROL | -24 - +24[semitones] | 40 | 0[semitones] |
40 2x 51 | 00 00 01 | 00-7F | CC2 TVF CUTOFF CONTROL | -9600 - +9600[cent] | 40 | 0[cent] |
40 2x 52 | 00 00 01 | 00-7F | CC2 AMPLITUDE CONTROL | -100.0 - +100.0[%] | 40 | 0[%] |
40 2x 53 | 00 00 01 | 00-7F | CC2 LFO RATE CONTROL | -10.0 - +10.0[Hz] | 40 | 0[Hz] |
40 2x 54 | 00 00 01 | 00-7F | CC2 LFO PITCH DEPTH | 0-600[cent] | 00 | 0[cent] |
40 2x 55 | 00 00 01 | 00-7F | CC2 LFO TVF DEPTH | 0-2400[cent] | 00 | 0[cent] |
40 2x 56 | 00 00 01 | 00-7F | CC2 LFO TVA DEPTH | 0-100.0[%] | 00 | 0[%] |
<Drum Setup Parameters>
* m: Map number (0 = MAP1, 1 = MAP2)
* rr: drum part note number (00H-7FH)
Address (H) | Size (H) | Data (H) | Parameter | Description |
41 m1 rr | 00 00 01 | 00-7F | PLAY NOTE NUMBER | Pitch coarse |
41 m2 rr | 00 00 01 | 00-7F (= NRPN# 26) |
LEVEL | TVA level |
41 m3 rr | 00 00 01 | 00-7F | ASSIGN GROUP NUMBER | Non, 1-127 |
41 m4 rr | 00 00 01 | 01-7F (= NRPN# 28) |
PANPOT | -63 (LEFT) - +63 (RIGHT) |
41 m5 rr | 00 00 01 | 00-7F (= NRPN# 29)Multiplicand of the part reverb depth |
REVERB SEND LEVEL | 0.0-1.0 |
41 m6 rr | 00 00 01 | 00-7F (= NRPN# 30)Multiplicand of the part chorus depth |
CHORUS SEND LEVEL | 0.0-1.0 |
41 m7 rr | 00 00 01 | 00-01 | Rx. NOTE OFF | OFF/ON |
41 m8 rr | 00 00 01 | 00-01 | Rx. NOTE ON | OFF/ON |
41 m9 rr | 00 00 01 | 00-7F (= NRPN# 31)Multiplicand of the part chorus depth |
DELAY SEND LEVEL | 0.0-1.0 |
* When the Drum Set is changed, DRUM SETUP PARAMETER values will all be initialized.
Supplementary material
<Decimal and Hexadecimal table>
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.
<Examples of actual MIDI messages>
<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 in GS).
<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). (On GS sound sources 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
<About tuning>
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 TUNE (address 40 00 00H).
RPN #1 allows tuning to be specified in steps of approximately
0.012 cents (to be precise, 100/8192 cent), and System Exclusive
MASTER TUNE allows tuning in steps of 0.1 cent. One cent is
1/100th of a semitone.
The values of RPN #1 (Master Fine Tuning) and System Exclusive
MASTER 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 | Sys.Ex. 40 00 00 |
445.0 | +19.56 | 4C 43 (+1603) | 00 04 0C 04 (+196) |
444.0 | +15.67 | 4A 03 (+1283) | 00 04 09 0D (+157) |
443.0 | +11.76 | 47 44 (+964) | 00 04 07 06 (+118) |
442.0 | + 7.85 | 45 03 (+643) | 00 04 04 0F (+79) |
441.0 | + 3.93 | 42 42 (+322) | 00 04 02 07 (+39) |
440.0 | 0.00 | 40 00 (0) | 00 04 00 00 (0) |
439.0 | - 3.94 | 3D 3D (-323) | 00 03 0D 09 (-39) |
438.0 | - 7.89 | 3A 7A (-646) | 00 03 0B 01 (-79) |
<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 |
<The Scale Tune Feature (address: 40 1x 40)>
The scale Tune feature allows you to finely adjust the
individual pitch of the notes from C through B. Though the
settings are made while working with one octave, the fine
adjustments will affect all octaves. By making the appropriate
Scale Tune settings, you can obtain a complete variety of tuning
methods other than equal temperament. As examples, three possible
types of scale setting are explained below.
> Equal Temperament
This method of tuning divides the octave into 12 equal parts.
It is currently the most widely used form of tuning,
especially in occidental music. On VSC 3.0, the default settings
for the Scale Tune feature produce equal temperament.
> Just Temperament (Keytone C)
The three main chords resound much more beautifully than with equal temperament, but this benefit can only be obtained in one key. If transposed, the chords tend to become ambiguous. The example given involves settings for a key in which C is the keynote.
> Arabian Scale
By altering the setting for Scale Tune, you can obtain a variety of other tunings suited for ethnic music. For example, the settings introduced below will set the unit to use the Arabian Scal
Example Settings:
Note name | Equal Temperament | Just Temperament (Keytone C) | Arabian Scale |
C | 0 | 0 | -6 |
C# | 0 | -8 | +45 |
D | 0 | +4 | -2 |
D# | 0 | +16 | -12 |
E | 0 | -14 | -51 |
F | 0 | -2 | -8 |
F# | 0 | -10 | +43 |
G | 0 | +2 | -4 |
G# | 0 | +14 | +47 |
A | 0 | -16 | 0 |
A# | 0 | +14 | -10 |
B | 0 | -12 | -49 |
The values in the table are given in cents. Refer to the
explanation of Scale Tuning to convert these values to
hexadecimal, and transmit them as exclusive data.
For example, to set the tune (C-B) of the Part1 Arabian Scale,
send the data as follows:
F0 41 10 42 12 40 11 40 3A 6D 3E 34 0D 38 6B 3C 6F 40 36 0F 76 F7