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)
status2nd byte3rd byte
BnH41HvvH
n = MIDI channel number: 0H–FH (ch.1–ch.16)
vv = Control value: 00H–7FH (0–127), 0–63 = OFF, 64–127 = ON
* This will change the Portamento Sw parameter setting of the sample assigned to the part
that receives this.
* Not received on the Control channel.
❍ Hold 2 (Controller number 69)
status2nd byte3rd byte
BnH45HvvH
n = MIDI channel number: 0H–FH (ch.1–ch.16)
vv = Control value: 00H–7FH (0–127), 0–63 = OFF, 64–127 = ON
● Control Change
* Not received when the Receive switch (SYSTEM/MIDI/RX SW) is OFF.
* If this is received on the control channel (SYSTEM/MIDI/GENERAL), the effect will apply
to all parts, unless otherwise noted for each item.
n = MIDI channel number: 0H–FH (ch.1–ch.16)
kk = Source note number: 00H–7FH (0–127)
*A Note On message received immediately after a Portamento control will be sounded with
the pitch changing smoothly from the source note number. If a voice is already sounding at
the same note number as the source note number, that voice will change pitch to the pitch
of the newly received Note On, and continue sounding (i.e., will be played legato).
* The speed of pitch change produced by portamento control will depend on the setting of
the Portamento Time parameter of the sample assigned to the part that receives this.
* Not received on the Control channel.
❍ Effect 1 (Reverb Send Level) (Controller number 91)
(Controller number 91)
status2nd byte3rd byte
BnH5BHvvH
* The Chorus Send Level parameter will change.
* Not received on the Control channel.
169
Page 2
MIDI Implementation
❍ RPN MSB/LSB (Controller number 100, 101)
status2nd byte3rd byte
BnH65HmmH
BnH64HllH
n = MIDI channel number: 0H–FH (ch.1–ch.16)
mm = MSB of the parameter number specified by RPN
ll = LSB of the parameter number specified by RPN
* Not received on the Control channel.
<<< RPN >>>
Control Changes include RPN (Registered Parameter Numbers), which are extended
parameters whose function is defined in the MIDI specification.
When using RPNs, first the RPN (Controller numbers 100 and 101; they can be sent in any
order) is transmitted to specify the parameter you wish to control. Then, Data Entry messages
(Controller numbers 6 and 38) are used to set 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. In order to prevent accidents, when the desired setting
has been made for the parameter, it is recommended that RPN be set to Null.
This device receives the following RPNs.
RPNData entry
MSB LSB
00H 00HmmH 11HPitch Bend Sensitivity
00H 01HmmH llHChannel Fine Tuning
00H 02HmmH 11HChannel Coarse Tuning
7FH 7FHmmH 11HRPN null
MSB LSBNotes
mm: 00H–0CH (0–12 semitones)
ll: ignored (processed as 00H)
Up to 1 octave can be specified in semitone steps.
* The Bend Range Up/Down parameters will also change.
mm, ll: 20 00H–40 00H–60 00H
(-4096 *100 / 8192–0– +4096 *100 / 8192 cent)
* The Fine Tune parameter (PERFORM/PART/SOUND/
FINE) will change.
mm: 34H–40H–4CH (-12–0– +12 semitones)
ll: ignored (processed as 00H)
* The Coarse Tune parameter will change.
RPN and NRPN will be set as "unspecified." Once this setting
has been made, subsequent Data Entry messages will be
ignored.
(It is not necessary to transmit Data Entry for RPN Null
settings.)
Settings already made will not change.
mm, ll: ignored
● Program Change
status2nd byte
CnHppH
n = MIDI channel number: 0H–FH (ch.1–ch.16)
pp=Program number:00H–7FH (prog.1–prog.128)
* If this is received on the control channel, the effect will apply to all parts.
● Pitch Bend Change
status2nd byte3rd byte
EnHllHmmH
n = MIDI channel number: 0H–FH (ch.1–ch.16)
mm, ll = Pitch Bend value: 00 00H–40 00H–7F 7FH (-8192–0– +8191)
* If this is received on the control channel, the effect will apply to all parts.
■ Channel Mode Messages
● All Sound Off (Controller number 120)
status2nd byte3rd byte
BnH78H00H
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.
* If this is received on the control channel, all currently sounding notes of all parts will be
silenced.
● Reset All Controllers (Controller number 121)
status2nd byte3rd byte
BnH79H00H
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.
* If this is received on the control channel, the controllers of all parts will be set to their reset
values.
Controller
Pitch Bend Change+/- 0 (center)
Polyphonic Key Pressure0 (off)
Channel Pressure0 (off)
Modulation0 (off)
Expression127 (maximum)
Hold 10 (off)
Hold 20 (off)
Panpot64 (center)
RPNUnset. Previously set data will not change.
NRPNUnset. Previously set data will not change.
C164 (center)
C264 (center)
C364 (center)
VC64 (center)
● All Notes Off (Controller number 123)
status2nd byte3rd byte
BnH7BH00H
n = MIDI channel number: 0H–FH (ch.1–ch.16)
* When All Notes Off is received, all currently sounding notes on the corresponding channel
will be turned off. However, if Hold 1 is on, or if Hold 2 is on, the note will not stop
sounding until these turn off.
* If the sample of a note that is "on" has a Trigger Mode (SAMPLE/MODE) setting of
TRIGGER or DRUM, that note will not turn off.
* If this is received on the control channel, the effect will apply to the notes of all parts.
● Omni Off (Controller number 124)
status2nd byte3rd byte
BnH7CH00H
n = MIDI channel number: 0H–FH (ch.1–ch.16)
* All notes currently "on" for the part that receives this will be turned off. However, if the
sample corresponding to one of these notes has a Trigger Mode setting of DRUM, that note
will not turn off.
* Not received on the Control channel.
● Omni On (Controller number 125)
status2nd byte3rd byte
BnH7DH00H
n = MIDI channel number: 0H–FH (ch.1–ch.16)
* All notes currently "on" for the part that receives this will be turned off. However, if the
sample corresponding to one of these notes has a Trigger Mode setting of DRUM, that note
will not turn off.
* The VariOS cannot be switched to OMNI ON.
* Not received on the Control channel.
Reset value
170
Page 3
MIDI Implementation
● Mono (Controller number 126)
status2nd byte3rd byte
BnH7EHmmH
n = MIDI channel number: 0H–FH (ch.1–ch.16)
mm = Mono number: 00H–10H (0–16)
* The sample assigned to that part will be switched to a Key Assign setting of SOLO.
* All notes currently "on" for the part that receives this will be turned off. However, if the
sample corresponding to one of these notes has a Trigger Mode setting of DRUM, that note
will not turn off.
* Not received on the Control channel.
● Poly (Controller number 127)
status2nd byte3rd byte
BnH7FH00H
n = MIDI channel number: 0H–FH (ch.1–ch.16)
* The sample assigned to that part will be switched to a Key Assign (SAMPLE/MODE)
setting of POLY.
* All notes currently "on" for the part that receives this will be turned off. However, if the
sample corresponding to one of these notes has a Trigger Mode (SAMPLE/DRUM) setting
of DRUM, that note will not turn off.
* Not received on the Control channel.
■ System Realtime Messages
● Timing Clock
status
F8H
* This message will be received if the Clock Source parameter is MIDI.
● Active Sensing
status
FEH
* When an Active Sensing message is received, the unit will begin monitoring the interval at
which MIDI messages are received. During monitoring, if more than 420 ms passes
without a message being received, the same processing will be done as when All Sound
Off, All Notes Off, and Reset All Controllers messages are received. Then monitoring will
be halted.
■ System Exclusive Messages
statusdata bytestatus
F0HiiH, ddH, ......, eeH F7H
● Data Transmission
The VariOS can transmit and receive the various parameters using System Exclusive
messages.
The model ID of the exclusive messages used by this instrument is 00 1DH.
❍ Data Request 1 (RQ1)
This message requests the other device to transmit data. The address and size indicate the
type and amount of data that is requested.
When a Data Request message is received, if the device is in a state in which it is able to
transmit data, and if the address and size are appropriate, the requested data is transmitted as
a Data Set 1 (DT1) message. If the conditions are not met, nothing is transmitted.
F0H: System Exclusive message status
ii = ID number: This is the ID number (manufacturer ID) that specifies the manufacturer
whose exclusive message this is. Roland's manufacturer ID is 41H. ID
numbers 7EH and 7FH are defined in an expansion of the MIDI
standard as Universal Non-realtime messages (7EH) and Universal
Realtime Messages (7FH).
dd,..., ee = data: 00H–7FH (0–127)
F7H: EOX (End Of Exclusive)
Of the System Exclusive messages received by this device, the Universal Non-realtime
messages, the Data Request (RQ1) messages and the Data Set (DT1) messages will be set
automatically.
● Universal Non-realtime System Exclusive Messages
❍ Identity Request Message
When this message is received, Identity Reply message (p. 172) will be transmitted.
statusdata bytestatus
F0H7EH, dev, 06H, 01HF7H
ByteExplanation
F0HExclusive status
7EHID number(Universal Non-realtime message)
devdevice ID(dev: 10H)
06Hsub ID#1(General Information)
01Hsub ID#2(Identity Request)
F7HEOX(End of Exclusive)
* The "dev" is own device number or 7FH (Broadcast).
ByteExplanation
F0HExclusive status
41HID number(Roland)
devdevice ID(dev: 10H)
00HModel ID#1(VariOS)
1DHModel ID#2(VariOS)
12Hcommand ID(DT1)
aaHaddress MSB
bbHaddress
ccHaddress
ddHaddress LSB
eeHdata: The actual data to be transmitted. Multi-byte data is transmitted in
the address order.
: :
ffHdata
sumchecksum
F7HEOX(End of Exclusive)
* The amount of data that is transmitted at one time is fixed for the type of data, and only
data of the fixed starting address and size will be transmitted. Refer to the Address and
Size listed in Section 3 (p. 173).
* Data whose size is greater than 128 bytes should be divided into packets of 128 bytes or
less and transmitted. Successive "Data Set 1" messages should have at least 20 ms of time
interval between them.
* For the checksum, refer to (p. 176).
171
Page 4
MIDI Implementation
2.Transmit Data
■ Channel Voice Messages
● Control Change
* This is not transmitted if C1 Output Mode, C2 Output Mode, or C3 Output Mode is set to
INT.
* This is transmitted on the control channel if Knob Control is set to MULTI PART.
❍ Bank Select (Controller number 0, 32)
status2nd byte3rd byte
BnH 00H mmH
BnH20HllH
n = MIDI channel number: 0H–FH (ch.1–ch.16)
mm, ll = Bank number: 00 00H–7F 7FH (bank.1–bank.16384)
● Program Change
status2nd byte
CnHppH
n = MIDI channel number: 0H–FH (ch.1–ch.16)
pp = Program number: 00H–7FH (prog.1–prog.128)
■ System Realtime Messages
● Active Sensing
status
FEH
* Transmitted at intervals of approximately 250 ms.
■ System Exclusive Messages
There is a kind of the Universal Non-realtime messages and the Data Set (DT1) messages in
the System Exclusive messages transmitted by this device.
ByteExplanation
F0HExclusive status
41HID number(Roland)
devdevice ID(dev: 10H–1FH)
00HModel ID#1(VariOS)
1DHModel ID#2(VariOS)
12Hcommand ID(DT1)
aaHaddress MSB
bbHaddress
ccHaddress
ddHaddress LSB
eeHdata: The actual data to be transmitted. Multi-byte data is transmitted in the
address order.
::
ffHdata
sumchecksum
F7HEOX(End of Exclusive)
* The amount of data transmitted at one time is fixed for the type of data, and the data will
be transmitted with the fixed starting address and size. Refer to the Address and Size listed
in Section 3 (p. 173).
* Large amounts of data must be divided into packets of 128 bytes or less, and transmitted at
intervals of approximately 20 ms.
* For the checksum, refer to (p. 176).
● Universal Non-realtime System Exclusive Messages
❍ Identity Reply Message
When Identity Request message (p. 171) is received, this message will be transmitted.
statusdata bytestatus
F0H
ByteExplanation
F0HExclusive status
7EHID number(Universal Non-realtime message)
devdevice ID(dev: 10H)
06Hsub ID#1(General Information)
02Hsub ID#2(Identity Reply)
41HID number(Roland)
1DH 01HDevice family code
00H 01HDevice family number code
aaH bbH ccH ddH Software revision level
F7HEOX(End of Exclusive)
● Decimal/Hexadecimal Table
(hexadecimal values are indicated by a following "H")
MIDI uses 7-bit hexadecimal values to indicate data values and the address and size of
exclusive messages. The following table shows the correspondence between decimal and
hexadecimal numbers.
* 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.
* For a signed number (+/-), 00H = -64, 40H = +/-0, and 7FH = +63. I.e., the decimal
equivalent will be 64 less than the decimal value given in the above table. For a two-byte
signed number, 00 00H = -8192, 40 00H = +/-0, and 7F 7FH = +8191. For example the
decimal expression of aa bbH would be aa bbH - 40 00H = (aa x 128 + bb - 64 x 128.
* Hexadecimal notation in two 4-bit units is used for data indicated as "nibbled." The nibbled
two-byte value of 0a 0b H would be a x 16 + b.
<Example 1> What is the decimal equivalent of 5AH?
From the above table, 5AH = 90.
<Example 2> What is the decimal equivalent of the 7-bit hexadecimal values 12 34H?
From the above table, 12H = 18 and 34H = 52.
Thus, 18 x 128 + 52 = 2356.
175
Page 8
MIDI Implementation
● 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 of MIDI CH = 3, note number
62 (note name 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.
<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 of the Pitch Bend value, and the 3rd byte (28H=40) is the
MSB. However since the Pitch Bend is a signed number with 0 at 40 00H (= 64 x 128 + 0 =
8192), the Pitch Bend value in this case is 28 00H - 40 00H = 40 x 128 + 0 - (64 x 128 + 0) = 5120 8192 = -3072.
If we assume that the Pitch Bend Sensitivity is set to two semitones, the pitch will change only
-200 cents for a Pitch Bend value of -8192 (00 00H). Thus, this message is specifying a Pitch
Bend of -200 x (-3072) / (-8192) = -75 cents on MIDI CH = 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.
In Control Change messages, the 2nd byte is the controller number, and the 3rd byte is the
parameter value. MIDI allows what is known as "running status," when if messages of the
same status follow each other, it is permitted to omit the second and following status bytes. In
the message above, running status is being used, meaning that the message has the following
content.
Thus, this message transmits a parameter value of 0C 00H to RPN parameter number 00 00H
on MIDI CH = 4, and then sets the RPN parameter number to 7F 7FH.
The function assigned to RPN parameter number 00 00H is Pitch Bend Sensitivity, and the
MSB of the parameter value indicates semitone steps. Since the MSB of this parameter value is
0CH = 12, the maximum width of pitch bend is being set to +/-12 semitones (1 octave). (This
instrument ignores the LSB of Pitch Bend Sensitivity, but it is best to transmit the LSB
(parameter value 0) as well, so that the message can be correctly received by any device.)
Once the parameter number has been set for RPN or NRPN, all subsequent Data Entry
messages on that channel will be effective. Thus, it is recommended that after you have made
the change you want, you set the parameter number to 7F 7FH (an "unset" or "null" setting).
The final (B3) 64 7F (B3) 65 7F is for this purpose.
It is not a good idea to store many events within the data of a song (e.g., a Standard MIDI File
song) using running status as shown in <Example 4>. When the song is paused, fastforwarded or rewound, the sequencer may not be able to transmit the proper status, causing
the sound source to misinterpret the data. It is best to attach the proper status byte to all
events.
It is also important to transmit RPN or NRPN parameter number settings and parameter
values in the correct 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 (i.e., the time resolution of the sequencer)
● Examples of Exclusive Messages and Calculating the
Checksum
Roland exclusive messages (RQ1, DT1) are transmitted with a checksum at the end of the data
(before F7) to check that the data was received correctly. The value of the checksum is
determined by the address and data (or size) of the exclusive message.
❍
How to calculate the checksum (hexadecimal numbers are indicated by ‘H’)
The checksum consists of a value whose lower 7 bits are 0 when the address, size and
checksum itself are added. The following formula shows how to calculate the checksum when
the exclusive message to be transmitted has an address of aa bb cc ddH, and data or size of ee
ffH.
aa + bb + cc + dd + ee + ff = total
total / 128 = quotient ... remainder
128 - remainder = checksum
<Example 1> Setting the Performance Common REVERB TYPE to HALL 1 (DT1)
The "Parameter address map" indicates that the starting address of the Performance is 10 00 00
00H, that the Performance Common offset address is 00 00H, and that the REVERB TYPE
address is 00 32H. Thus, the address is:
10 00 00 00H
00 00H
+) 00 32H
10 00 00 32H
Since HALL 1 is parameter value 03H,
F0
4110001D1210 00 00 32 03??F7
(1)(2)(3)(4)(5)(6)address sizechecksum(7)
(1) Exclusive status(2) ID number (Roland)
(3) Device ID (17)(4) Model ID#1 (VariOS)
(5) Model ID#2 (VariOS)(6) Command ID (DT1)(7) EOX