MIDI Implementation
18
7Example of an Exclusive Message and Calculating a
Checksum
Roland Exclusive messages are transmitted with a checksum at the end (before F7)
to make sure that the message was correctly received. The value of the checksum is
determined by the address and data (or size) of the transmitted exclusive message.
6 How to Calculate the Checksum (Hexadecimal
Numbers are Indicated by ‘H’)
The checksum is a value derived by adding the address, size and checksum itself
and inverting the lower 7 bits.
Here’s an example of how the checksum is calculated. We will assume that in the
exclusive message we are transmitting, the address is aa bb ccH and the data or size
is dd ee H.
aa + bb + cc + dd + ee + = sum
sum / 128 = quotient ... remainder
128 - remainder = checksum
(However, the checksum will be 0 if the remainder is 0.)
<Example> Setting REVERB MACRO to ROOM 3
According to the “Parameter Address Map,” the REVERB MACRO Address is 40 01
30H, and ROOM
3 is a value of 02H. Thus,
F0 41 10 42 12 40 01 30 02 ?? F7
(1) (2) (3) (4) (5) Address data Checksum (6)
(1) Exclusive Status, (2) ID (Roland), (3) Device ID (17),
(4) Model ID (GS), (5) Command ID (DT1), (6) End of Exclusive
Next we calculate the checksum.
40H + 01H + 30H + 02H = 64 + 1 + 48 + 2 = 115 (sum)
115 (sum) / 128 = 0 (quotient) ... 115 (remainder)
checksum = 128 - 115 (remainder) = 13 = 0DH
This means that F0 41 10 42 12 40 01 30 02 0D F7 is the message we transmit.
7About Tuning
In MIDI, individual Parts are tuned by sending RPN #1 (Master Fine Tuning) to the
appropriate MIDI channel.
In MIDI, an entire device is tuned by either sending RPN #1 to all MIDI channels
being used, or by sending a System Exclusive MASTER TUNE (address 40 00 00H).
RPN #1 allows tuning to be specied in steps of approximately 0.012 cents (to be
precise, 100/8192 cent), and System Exclusive MASTER TUNE allows tuning in steps
of 0.1 cent. One cent is 1/100th of a semitone.
The values of RPN #1 (Master Fine Tuning) and System Exclusive MASTER TUNE are
added together to determine the actual pitch sounded by each Part.
Frequently used tuning values are given in the following table for your reference.
Values are in hexadecimal (decimal in parentheses).
+----------+--------+---------------+--------------------+
| Hz in A4 | cent | RPN #1 | Sys.Ex. 40 00 00 |
+----------+--------+---------------+--------------------+
| 445.0 | +19.56 | 4C 43 (+1603) | 00 04 0C 04 (+196) |
| 444.0 | +15.67 | 4A 03 (+1283) | 00 04 09 0D (+157) |
| 443.0 | +11.76 | 47 44 (+ 964) | 00 04 07 06 (+118) |
| 442.0 | +7.85 | 45 03 (+ 643) | 00 04 04 0F (+ 79) |
| 441.0 | +3.93 | 42 42 (+ 322) | 00 04 02 07 (+ 39) |
| 440.0 | 0.00 | 40 00 ( 0) | 00 04 00 00 ( 0) |
| 439.0 | -3.94 | 3D 3D (- 323) | 00 03 0D 09 (- 39) |
| 438.0 | -7.89 | 3A 7A (- 646) | 00 03 0B 01 (- 79) |
+----------+--------+---------------+--------------------+
<Example> Set the tuning of MIDI channel 3 to A4 = 442.0 Hz
Send RPN#1 to MIDI channel 3. From the above table, the value is 45 03H.
B2 64 01 MIDI ch.3, lower byte of RPN parameter number: 01H
(B2) 65 00 (MIDI ch.3) upper byte of RPN parameter number: 00H
(B2) 06 45 (MIDI ch.3) upper byte of parameter value: 45H
(B2) 26 03 (MIDI ch.3) lower byte of parameter value: 03H
(B2) 64 7F (MIDI ch.3) lower byte of RPN parameter number: 7FH
(B2) 65 7F (MIDI ch.3) upper byte of RPN parameter number: 7FH