ASCII Code Table
+——————+——————+——————++——————+——————++——————+——————+——————+——————+
|
D
|
H
| Char ||
D
+——————+——————+——————++——————+——————++——————+——————+——————+——————+
|
32
|
20H |
SP
||
64
|
33
|
21H |
!
||
65
|
34
|
22H |
"
||
66
|
35
|
23H |
#
||
67
|
36
|
24H |
$
||
68
|
37
|
25H |
%
||
69
|
38
|
26H |
&
||
70
|
39
|
27H |
'
||
71
|
40
|
28H |
(
||
72
|
41
|
29H |
)
||
73
|
42
|
2AH |
*
||
74
|
43
|
2BH |
+
||
75
|
44
|
2CH |
,
||
76
|
45
|
2DH |
-
||
77
|
46
|
2EH |
.
||
78
|
47
|
2FH |
/
||
79
|
48
|
30H |
0
||
80
|
49
|
31H |
1
||
81
|
50
|
32H |
2
||
82
|
51
|
33H |
3
||
83
|
52
|
34H |
4
||
84
|
53
|
35H |
5
||
85
|
54
|
36H |
6
||
86
|
55
|
37H |
7
||
87
|
56
|
38H |
8
||
88
|
57
|
39H |
9
||
89
|
58
|
3AH |
:
||
90
|
59
|
3BH |
;
||
91
|
60
|
3CH |
<
||
92
|
61
|
3DH |
=
||
93
|
62
|
3EH |
>
||
94
|
63
|
3FH |
?
||
95
+——————+——————+——————++——————+——————++——————+
D: decimal
H: hexadecimal
Note: SP indicates "space."
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.
<Examples 2> C0 25
CnH is the Program Change status and 'n' is the MIDI channel number. Since 0H = 0, and 25H = 37,
this is a Program Change message of MIDI CH = 1, Program number 38.
Examples of System Exclusive Messages and
Calculating the Checksum
Roland exclusive messages (RQ1, DT1) are transmitted with 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 the 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
The checksum is zero on condition that the remainder is zero.
108
|
H
|| Char |
D
|
H
|
40H ||
@
|
96
|
60H |
|
41H ||
A
|
97
|
61H |
|
42H ||
B
|
98
|
62H |
|
43H ||
C
|
99
|
63H |
|
44H ||
D
| 100
|
64H |
|
45H ||
E
| 101
|
65H |
|
46H ||
F
| 102
|
66H |
|
47H ||
G
| 103
|
67H |
|
48H ||
H
| 104
|
68H |
|
49H ||
I
| 105
|
69H |
|
4AH ||
J
| 106
|
6AH |
|
4BH ||
K
| 107
|
6BH |
|
4CH ||
L
| 108
|
6CH |
|
4DH ||
M
| 109
|
6DH |
|
4EH ||
N
| 110
|
6EH |
|
4FH ||
O
| 111
|
6FH |
|
50H ||
P
| 112
|
70H |
|
51H ||
Q
| 113
|
71H |
|
52H ||
R
| 114
|
72H |
|
53H ||
S
| 115
|
73H |
|
54H ||
T
| 116
|
74H |
|
55H ||
U
| 117
|
75H |
|
56H ||
V
| 118
|
76H |
|
57H ||
W
| 119
|
77H |
|
58H ||
X
| 120
|
78H |
|
59H ||
Y
| 121
|
79H |
|
5AH ||
Z
| 122
|
7AH |
|
5BH ||
[
| 123
|
7BH |
|
5CH ||
\
| 124
|
7CH |
|
5DH ||
]
| 125
|
7DH |
|
5EH ||
^
|——————+——————+——————+
|
5FH ||
_
|
<Example 1> Setting the Temporary Registration "Amp & Speaker" type
to "Stack I" (DT1)
| Char |
The "Parameter address map" indicates that the starting address of the Temporary is 01 00 00 00H, that
the offset address of the Organ effect parameter is 50 00H, and that the "Amp & Speaker" type address
`
|
is 00 05H. Thus, the address is:
a
|
01
00
00
b
|
50
c
|
+)
00
d
|
---------------------------
e
|
01
00
50
f
|
g
|
Since "Stack I" is parameter value 02H,
h
|
i
|
F0
41
10
j
|
(1)
(2)
(3)
k
|
(1) Exclusive status
l
|
(3) Device ID (17)
m
|
(5) Command ID (DT1)
n
|
o
|
Next we calculate the checksum.
p
|
q
|
01H + 00H + 50H + 05H + 03H = 1 + 0 + 80 + 5 + 3 = 89 (sum)
r
|
89 (total) ÷ 128 = 0 (quotient) ... 89 (remainder)
s
|
checksum = 128 - 89 (remainder) = 39 = 27H
t
|
This means that the message transmitted will be F0 41 10 00 1A 12 02 00 50 05 03 27 F7.
u
|
v
|
w
|
<Example 2> Retrieving data for REGISTRATION: A12 Organ Basic
x
|
Parameter
y
|
The "Parameter address map" indicates that the starting address of the REGISTRATION: A12 is 10 01
z
|
00 00H, that the offset address of the Organ basic parameter is 40 00H. Thus, the address is:
{
|
|
|
10
01
00
}
|
+)
40
---------------------------
10
01
40
Since the size of the Performance of parts is 00 00 00 3EH,
F0
41
10
(1)
(2)
(3)
(1) Exclusive status
(3) Device ID (17)
(5) Command ID (RQ1)
Next we calculate the checksum.
10H + 01H + 40H + 00H + 00H + 00H + 00H + 3EH =
16 + 1 + 64 + 0 + 0 + 0 + 0 + 62 = 143 (sum)
143 (total) ÷ 128 = 1 (quotient) ... 15 (remainder)
checksum = 128 - 15 (remainder) = 113 = 71H
Thus, a message of F0 41 10 00 1A 11 10 01 40 00 00 00 00 3E 71 F7 would be transmitted.
00H
00H
05H
05H
00 1A
12
01 00 50 05
03
(4)
(5)
address
data
(2) ID number (Roland)
(4) Model ID (VK-77)
(6) EOX
00H
00H
00H
00 1A
11
10 01 40 00
00 00 00 3E
(4)
(5)
address
data
(2) ID number (Roland)
(4) Model ID (VK-77)
(6) EOX
??
F7
checksum
(6)
??
F7
checksum (6)