For the checksum, refer to (p. 204), 204 midi implementation – Roland XP-30 User Manual

Page 204

Advertising
background image

204

MIDI Implementation

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

<Example 1> Setting the Performance Common REVERB TYPE to DELAY (DT1)

The “Parameter address map” indicates that the starting address of the Temporary
Performance is 01 00 00 00H, that the Performance Common offset address is 00 00H, and
that the REVERB TYPE address is 00 28H. Thus, the address is:

01 00 00 00H
00 00H
+) 00 28H
01 00 00 28H

Since DELAY is parameter value 06H,

F0

41

10

6A

12

01 00 00 28

06

??

F7

(1)

(2)

(3)

(4)

(5)

address

data

checksum

(6)

(1) Exclusive status

(2) ID number (Roland)

(3) Device ID (17)

(4) Model ID (XP-30)

(5) Command ID (DT1)

(6) EOX

Next we calculate the checksum.

01H + 00H + 00H + 28H + 06H = 1 + 0 + 0 + 40 + 6 = 47 (sum)
47 (total) / 128 = 0 (quotient) ... 47 (remainder)
checksum = 128 - 47 (quotient) = 81 = 51H

This means that the message transmitted will be F0 41 10 6A 12 01 00 00 28 06 51 F7.

<Example 2> Retrieving data for USER:03 Performance Part 3 (RQ1)

The “Parameter Address Map” indicates that the starting address of USER:03 is 10 02 00
00H, and that the offset address of Performance Part 3 is 12 00H. Thus, the address is:

10 02 00 00H
+) 12 00H
10 02 12 00H

Since the size of the Performance Part is 00 00 00 19H,

F0

41

10

6A

11

10 02 12 00

00 00 00 19

??

F7

(1)

(2)

(3)

(4)

(5)

address

size

checksum

(6)

(1) Exclusive status

(2) ID number (Roland)

(3) Device ID (17)

(4) Model ID (XP-30)

(5) Command ID (RQ1)

(6) EOX

Next we calculate the checksum.

10H + 02H + 12H + 00H + 00H + 00H + 00H + 19H =
16 + 2 + 18 + 0 + 0 + 0 + 0 + 25 = 61 (sum)

61 (total) / 128 = 0 (product) ... 61 (remainder)
checksum = 128 - 61 (remainder) = 67 = 43H

Thus, a message of F0 41 10 6A 11 10 02 12 00 00 00 00 19 43 F7 would be transmitted.

<Example 3> Retrieving data for Temporary Performance (RQ1)

*

When a data transfer is executed in Utility mode, data that is accessed will be the same
as that which is transmitted when the Type parameter is set to PERFORM and the Source
parameter is set to TEMP: -PATCH

The “Parameter Address Map” gives the following start addresses for Temporary
Performance data.

01 00 00 00H

Temporary Performance Common

01 00 10 00H

Temporary Performance Part 1

:
01 00 1F 00H

Temporary Performance Part 16

Since Performance Part has a size of 00 00 00 19H, we add that size to the start address of the
Temporary Performance Part 16, resulting in:

01 00 1F 00H
+) 00 00 00 19H
01 00 1F 19H

Thus, the Size for the retrieved data will be:

01 00 1F 19H
-) 01 00 00 00H
00 00 1F 19H

F0

41

10

6A

11

01 00 00 00

00 00 1F 19

??

F7

(1)

(2)

(3)

(4)

(5)

address

size

checksum

(6)

(1) Exclusive status

(2) ID number (Roland)

(3) Device ID (17)

(4) Model ID (XP-30)

(5) Command ID (RQ1)

(6) EOX

Calculating the checksum as shown in <Example 2>, we get a message of F0 41 10 6A 11 01
00 00 00 00 00 1F 19 47 F7 to be transmitted.

<Example 4> Retrieving the Temporary Performance data together with all Temporary

Part and Rhythm Set data (RQ1)

*

When a data transfer is executed in Utility mode, the data that is accessed will be the
same as that which is transmitted when the Type parameter is set to PERFORM and the
Source parameter is set to TEMP: +PATCH

The “Parameter Address Map” gives the following start addresses for Temporary
Performance, Performance Mode Temporary Patch and Performance Mode Temporary
Rhythm.

01 00 00 00H

Temporary Performance

02 00 00 00H

Performance Mode Temporary Patch(part 1)

:
02 08 00 00H

Performance Mode Temporary Patch(part 9)

02 09 00 00H

Temporary Rhythm Setup

02 0A 00 00H

Performance Mode Temporary Patch(part 11)

:
02 0F 00 00H

Performance Mode Temporary Patch(part 16)

The Patch offset addresses are as follows.

00 00H

Patch Common

10 00H

Patch Tone 1

:
16 00H

Patch Tone 4

Since Patch Tone has a size of 00 00 01 01H, we add this size to the start address of
Performance Mode Temporary Patch (Part 16) Tone 4, to get:

02 0F 00 00H
16 00H
+) 00 00 01 01H
02 0F 17 01H

Thus, the size of the retrieved data will be:

02 0F 17 01H
-) 01 00 00 00H
01 0F 17 01H

F0

41

10

6A

11

01 00 00 00

01 0F 17 01

??

F7

(1)

(2)

(3)

(4)

(5)

address

size

checksum

(6)

(1) Exclusive status

(2) ID number (Roland)

(3) Device ID (17)

(4) Model ID (XP-30)

(5) Command ID (RQ1)

(6) EOX

Calculating the checksum as shown in <Example 2>, we get a message of F0 41 10 6A 11 01
00 00 00 01 0F 17 01 57 F7 to be transmitted.

Advertising