Supplementary material, Decimal and hexadecimal table, Example of an actual midi message – Инструкция по эксплуатации Roland pcr-m1

Страница 113: Checksum calculation

Advertising
background image

115

MIDI приложение

4. Supplementary material

Decimal and Hexadecimal table

(An “H” is appended to the end of numbers in hexadecimal notation.)

In MIDI documentation, data values and addresses/sizes of Exclusive messages,
etc. are expressed as hexadecimal values for each 7 bits.
The following table shows how these correspond to decimal numbers.

fig.11-22e

* The decimal expression of the MIDI channel, program change, etc., is one

greater than the decimal value shown in the table above.

* The hexadecimal expression for each 7 bits allows a maximum of 128 steps (0--

127) to be expressed by one byte of data. Multiple bytes are used if the data
requires greater resolution than this. For example, a value expressed by two 7-
bit bytes “aa” and “bbH” would be aa x 128 + bb.

* In the case of signed (+/-) data, 00H = -64, 40H = +/-0, and 7FH = +63; i.e., a value

64 less than the decimal value shown in the above table is used. In the case of a
two-byte value, 00 00H = -8192, 40 00 = +/-0, and 7F 7F = +8191. For example, a
value of “aa” and “bbH” would have a decimal expression of aa bbH - 40 00H =
aa x 128 + bb - 64 x 128.

* In the case of data indicated as “use nibble data,” hexadecimal expression in 4-

bit units is used. A nibble-expressed value of the two bytes 0a and 0bH would
have a value of a x 16 + b.

<Example1>

What is the decimal expression of 5AH?
From the preceding table, 5AH = 90.

<Example2>

What is the decimal expression of the 7-bit hexadecimal value 12 34H?
From the preceding table, 12H = 18, and 34H = 52.
Thus, this is

18 x 128 + 52 = 2356

<Example3>

What is the decimal expression of the nibble-expressed value 0A 03 09 0D?
From the preceding table, 0AH = 10, 03H = 3, 09H = 9, and 0DH = 13.
Thus, this is

((10 x 16 + 3) x 16 + 9) x 16 + 13 = 41885

<Example4> What is the nibble-expressed value of decimal 1258?

1258 ч 16 = 78 (quotient) ... 10 (remainder)
78 ч 16 = 4 (quotient) ... 14 (remainder)
4 ч 16 = 0 (quotient) ... 4 (remainder)
From the preceding table, 0 = 00H, 4 = 04H, 14 = 0EH, 10 = 0HA.
Thus, the nibble-expressed value is

00 04 0E 0AH

Example of an actual MIDI message

<Example1> CE 04

CnH is the Program Change status. “n” is the MIDI channel number. EH = 14, and
04H = 04. Thus, this is a program change message on MIDI channel 15, for program
number 05.

Checksum calculation

In order to verify that the message was received correctly, Roland exclusive
messages (RQ1, DT1) add a checksum following the end of the data (before the F7).
The checksum value is determined by the address and data (or size) of the
exclusive message that is transmitted.

Calculating the checksum

(“H” has been added following hexadecimal values)
The checksum is a value that results in a lower 7 bits of 0 when the address, size,
and checksum itself are added together.
Specifically, the calculation will be as follows when the exclusive message you
want to transmit has an address of aa bb ccH and data or size of dd ee ffH.

aa + bb + cc + dd + ee + ff = total
total ч 128 = quotient ... remainder
128 - remainder = checksum

*

However, as an exception, the checksum for a remainder of 0 is not 80H but
rather 00H.

Advertising