Roland Groovebox MC-307 Reference Manual page 206

Hide thumbs Also See for Groovebox MC-307:
Table of Contents

Advertisement

MIDI Implementation
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.
<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
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).
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"
206
H
| Char ||
D
|
H
| Char |
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 |
_
|
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, fast-
forwarded 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
a
|
b
|
events.
c
|
d
|
e
|
It is also important to transmit RPN or NRPN parameter number settings and parameter
f
|
values in the correct order. In some sequencers, data events recorded in the same clock (or a
g
|
h
|
nearby clock) can sometimes be transmitted in an order other than the order in which they
i
|
were recorded. It is best to record such events at an appropriate interval (1 tick at TPQN=96,
j
|
k
|
or 5 ticks at TPQN=480).
l
|
m
|
n
|
* TPQN : Ticks Per Quarter Note (i.e., the time resolution of the sequencer)
o
|
p
|
q
|
Examples of system exclusive messages and
r
|
s
|
calculating the checksum
t
|
u
|
Roland exclusive messages (RQ1, DT1) are transmitted with a checksum at the end of the
v
|
w
|
data (before F7) to check that the data was received correctly. The value of the checksum is
x
|
determined by the address and data (or size) of the exclusive message.
y
|
z
|
{
|
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
(1)
(2)
(3)
(4)
(1) Exclusive status (2) ID number (Roland)(3) device ID (17)
(4), (5) model ID (MC-307)(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 28
05
(5)
(6)
address
data
??
F7
checksum
(7)

Advertisement

Table of Contents
loading

Table of Contents