107
MIDI Implementation
Appendices
6. Supplementary material
■
Examples of 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> C9 49
CnH is the Program Change status and ‘n’ is the MIDI channel number. Since 9H = 9, and
49H = 73, this is a Program Change message of MIDI CH = 10, 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 = 7.
<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 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.
B3 64 00
MIDI CH = 4, RPN parameter number LSB: 00H
(B3) 65 00
MIDI CH = 4, RPN parameter number MSB: 00H
(B3) 06 0C
MIDI CH = 4, parameter value MSB: 0CH
(B3) 26 00
MIDI CH = 4, parameter value LSB: 00H
(B3) 64 7F
MIDI CH = 4, RPN parameter number LSB: 7FH
(B3) 65 7F
MIDI CH = 4, RPN parameter number MSB: 7FH
■
Examples of system 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
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 REVERB TYPE to HALL2 (DT1)
Referring to “3. Parameter address map,” the starting address for Part Information is 01 00
00 00H, and offset address of Part Information Common is 00 00H, and the REVERB TYPE
address is 00 28H. Therefore, the address will be
01 00 00 00H
00 00H
+) 00 28H
01 00 00 28H
Since HALL2 is parameter value 05H,
F0
41
10
00H
0BH
12
01 00 00 28
05
??
F7
(1)
(2)
(3)
(4)
(5)
(6)
address
data
checksum
(7)
(1) Exclusive status
(2) ID number (Roland)
(3) device ID (17)
(4), (5) model ID (D2)
(6)command ID (DT1)
(7) EOX
Next we calculate the checksum.
01H + 00H + 00H + 28H + 05H = 1 + 0 + 0 + 40 + 5 = 46(sum)
46 (total) ÷ 128 = 0 (quotient)...46 (remainder)
checksum = 128 - 46 (quotient) = 82 = 52H
This means that the message transmitted will be F0 41 10 00 0B 12 01 00 00 28 05 52 F7.
<Example 2> Obtaining part information data (RQ1)
Referring to “3. Parameter address map,” the starting addresses for Part Information are
assigned as follows.
01 00 00 00H
Part Info Common
01 00 10 00H
Part Info Part 1
01 00 11 00H
Part Info Part 2
01 00 16 00H
Part Info Part 7
01 00 19 00H
Part Info Part R
Since the size of Part Information Part is 00 00 00 1AH, this size is added to the starting
address of Part Information Part R, to obtain
01 00 19 00H
+) 00 00 00 1AH
01 00 19 1AH
Therefore, the size of the data to be obtained is
01 00 19 1AH
-) 01 00 00 00H
00 00 19 1AH
F0
41
10
00
0B
11
01 00 00 00
00 00 19 1A
??
F7
(1)
(2)
(3)
(4)
(5)
(6)
address data
checksum (7)
(1) Exclusive status
(2) ID number (Roland)
(3) Device ID (17)
(4), (5) Model ID (D2D2)
(6) Command ID (RQ1)
(7) EOX
When the checksum is calculated in the same way as in <Example 2>, we have the following
message to be transmitted: F0 41 10 00 0B 11 01 00 00 00 00 00 19 1A 4C F7.
●
Scale Tune function (Model ID : 42H (GS), address: 40
1x 40H)
Scale Tune is a function that makes fine adjustments to the pitch of each note C-B. Settings
are made for one octave, and applied to the notes of all octaves. By making Scale Tune
settings you can use tunings and temperaments other than the standard Equal
Temperament. Here we give three types of settings as examples.
❍
Equal temperament
This temperament divides the octave into 12 equal steps, and is the temperament most
frequently used today, especially in western music. Initially, the Scale Tune function of this
instrument is set to Equal Temperament.
❍
Just intonation (tonic of C)
The primary triads sound more beautiful in just intonation than in equal temperament.
However, this applies only in one key, and chords will be discordant if you play in a
different key. The settings here are for a tonic of C.
❍
Arabian-type scale
The Scale Tune function allow you to use various tunings of ethnic music. Here is one of the
Arabian scales.
Setting examples
Note
Equal Temp.
Just (in C)
Arabian-type scale
C
0
0
-6
C#
0
-8
+45
D
0
+4
-2
Eb
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
Bb
0
+14
-10
B
0
-12
-49
The values in the above table are in units of 1 cent. Convert these values to hexadecimal,
and transmit them as exclusive data. For example to set the Scale Tune of Part 1 to an
Arabian-type scale, transmit the following data.
F0 41 10 42 12 40 11 40 3A 6D 3E 34 0D 38 6B 3C 6F 40 36 0F 76 F7
Содержание Groovebox D2
Страница 113: ...MEMO ...
Страница 114: ...MEMO ...