6.Supplementary material
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.
+——————+——————++——————+——————++——————+——————++——————+——————+
|
D
|
H
||
D
|
H
||
+——————+——————++——————+——————++——————+——————++——————+——————+
|
0 |
00H ||
32 |
20H ||
|
1 |
01H ||
33 |
21H ||
|
2 |
02H ||
34 |
22H ||
|
3 |
03H ||
35 |
23H ||
|
4 |
04H ||
36 |
24H ||
|
5 |
05H ||
37 |
25H ||
|
6 |
06H ||
38 |
26H ||
|
7 |
07H ||
39 |
27H ||
|
8 |
08H ||
40 |
28H ||
|
9 |
09H ||
41 |
29H ||
|
10 |
0AH ||
42 |
2AH ||
|
11 |
0BH ||
43 |
2BH ||
|
12 |
0CH ||
44 |
2CH ||
|
13 |
0DH ||
45 |
2DH ||
|
14 |
0EH ||
46 |
2EH ||
|
15 |
0FH ||
47 |
2FH ||
|
16 |
10H ||
48 |
30H ||
|
17 |
11H ||
49 |
31H ||
|
18 |
12H ||
50 |
32H ||
|
19 |
13H ||
51 |
33H ||
|
20 |
14H ||
52 |
34H ||
|
21 |
15H ||
53 |
35H ||
|
22 |
16H ||
54 |
36H ||
|
23 |
17H ||
55 |
37H ||
|
24 |
18H ||
56 |
38H ||
|
25 |
19H ||
57 |
39H ||
|
26 |
1AH ||
58 |
3AH ||
|
27 |
1BH ||
59 |
3BH ||
|
28 |
1CH ||
60 |
3CH ||
|
29 |
1DH ||
61 |
3DH ||
|
30 |
1EH ||
62 |
3EH ||
|
31 |
1FH ||
63 |
3FH ||
+——————+——————++——————+——————++——————+——————++——————+——————+
D: decimal
H: hexadecimal
* Decimal expressions such as used for MIDI channel, Bank Select, and Program Change
will be the value 1 greater than the decimal value given in the above table.
* Since each MIDI byte carries 7 significant data bits, each byte can express a maximum of
128 different values. Data for which higher resolution is required must be transmitted
using two or more bytes. For example a value indicated as a two-byte value of aa bbH
would have a value of aa x 128 + bb.
* For a signed number (+/-), 00H = -64, 40H = +/-0, and 7FH = +63. I.e., the decimal equi-
valent will be 64 less than the decimal value given in the above table. For a two-byte sig-
ned number, 00 00H = -8192, 40 00H = +/-0, and 7F 7FH = +8191. For example the deci-
mal 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 nib-
bled 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
<Example 3>
What is the decimal equivalent of the nibbled expression 0A 03 09 0DH?
From the above table, 0AH = 10, 03H = 3, 09H = 9, 0DH = 13
Thus, the result is ((10 x 16 + 3) x 16 + 9) x 16 + 13 = 41885
<Example 4>
What is the nibbled equivalent of the decimal number 1258?
16 ) 1258
16 )
78 ...10
16 )
4 ...14
0 ... 4
From the above table, 0=00H, 4=04H, 14=0EH, 10=0AH
Thus the result is 00 04 0E 0AH
D
|
H
||
D
|
H
|
64 |
40H ||
96 |
60H |
65 |
41H ||
97 |
61H |
66 |
42H ||
98 |
62H |
67 |
43H ||
99 |
63H |
68 |
44H ||
100 |
64H |
69 |
45H ||
101 |
65H |
70 |
46H ||
102 |
66H |
71 |
47H ||
103 |
67H |
72 |
48H ||
104 |
68H |
73 |
49H ||
105 |
69H |
74 |
4AH ||
106 |
6AH |
75 |
4BH ||
107 |
6BH |
76 |
4CH ||
108 |
6CH |
77 |
4DH ||
109 |
6DH |
78 |
4EH ||
110 |
6EH |
79 |
4FH ||
111 |
6FH |
80 |
50H ||
112 |
70H |
81 |
51H ||
113 |
71H |
82 |
52H ||
114 |
72H |
83 |
53H ||
115 |
73H |
84 |
54H ||
116 |
74H |
85 |
55H ||
117 |
75H |
86 |
56H ||
118 |
76H |
87 |
57H ||
119 |
77H |
88 |
58H ||
120 |
78H |
89 |
59H ||
121 |
79H |
90 |
5AH ||
122 |
7AH |
91 |
5BH ||
123 |
7BH |
92 |
5CH ||
124 |
7CH |
93 |
5DH ||
125 |
7DH |
94 |
5EH ||
126 |
7EH |
95 |
5FH ||
127 |
7FH |
Examples of actual MIDI messages
<Example 2> CE 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 (in the
GS sound map, Flute).
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 values are indicated by a '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
Checksum is 0 if the remainder is 0.
<Example> Request to transfer the kit parameter
See the "Parameter Address Map"
address :
00 00 00 00H
size :
30 00 00 00H
F0
41
11
00 13
11
00 00 00 00
(1)
(2)
(3)
(4)
(5)
(1) Exclusive status
(2) ID number (Roland)
(4) model ID (DR-202)
(5) command ID RQ1)
Next we calculate the checksum.
00H + 00H + 00H + 00H + 30H + 00H +00H + 00H = 0 + 0 + 0 + 0 + 48 + 0 + 0 + 0 = 48 (sum)
48 (total) ÷ 128 (quotient) = 0 (quotient) ... 48 (remainder)
checksum = 128 - 48 (quotient) =80 = 50H
This means that the message transmitted will be F0 41 11 00 13 11 00 00 00 00 30 00 00 00 50
F7 .
ASCII code table
On the DR-202, the following ASCII code set is used for processing data such as the Pattern
Name , Song Name, etc.
+----+-----++----+-----++----+-----++----+-----+
|Char| Hex.||Char| Hex.||Char| Hex.||Char| Hex.|
+----+-----++----+-----++----+-----++----+-----+
| SP | 20H ||
|
||
|
|
A | 41H ||
a | 61H ||
0 | 30H ||
|
B | 42H ||
b | 62H ||
1 | 31H ||
|
C | 43H ||
c | 63H ||
2 | 32H ||
|
D | 44H ||
d | 64H ||
3 | 33H ||
|
E | 45H ||
e | 65H ||
4 | 34H ||
|
F | 46H ||
f | 66H ||
5 | 35H ||
|
G | 47H ||
g | 67H ||
6 | 36H ||
|
H | 48H ||
h | 68H ||
7 | 37H ||
|
I | 49H ||
i | 69H ||
8 | 38H ||
|
J | 4AH ||
j | 6AH ||
9 | 39H ||
|
K | 4BH ||
k | 6BH ||
! | 21H ||
|
L | 4CH ||
l | 6CH ||
" | 22H ||
|
M | 4DH ||
m | 6DH ||
# | 23H ||
|
N | 4EH ||
n | 6EH ||
$ | 24H ||
|
O | 4FH ||
o | 6FH ||
% | 25H ||
|
P | 50H ||
p | 70H ||
& | 26H ||
|
Q | 51H ||
q | 71H ||
' | 27H ||
|
R | 52H ||
r | 72H ||
( | 28H ||
|
S | 53H ||
s | 73H ||
) | 29H ||
|
T | 54H ||
t | 74H ||
* | 2AH ||
|
U | 55H ||
u | 75H ||
+ | 2BH ||
|
V | 56H ||
v | 76H ||
, | 2CH ||
|
W | 57H ||
w | 77H ||
- | 2DH ||
|
X | 58H ||
x | 78H ||
. | 2EH ||
|
Y | 59H ||
y | 79H ||
/ | 2FH ||
|
Z | 5AH ||
z | 7AH ||
|
+----+-----++----+-----++----+-----++----+-----+
Note: SP indicates "space".
MIDI Implementado
30 00 00 00
??
address
size
checksum
(3) device ID(17)
(6) End of Exclusive
||
|
|
: | 3AH |
; | 3BH |
< | 3CH |
> | 3DH |
= | 3EH |
? | 3FH |
@ | 40H |
[ | 5BH |
\ | 5CH |
] | 5DH |
^ | 5EH |
_ | 5FH |
` | 60H |
{ | 7BH |
| | 7CH |
} | 7DH |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
F7
(6)
87