61 midi implementation 4. supplementary material, Decimal/hexadecimal table, Examples of actual midi messages – Инструкция по эксплуатации Roland vk-8m

Страница 61

Advertising
background image

61

MIDI Implementation

4. Supplementary material

Decimal/Hexadecimal Table

MIDI uses 7-bit hexadecimal values to indicate data values and the address and size of
exclusive messages. The following table shows the correspondence between decimal and
hexadecimal numbers.
*

Hexadecimal values are indicated by a following ‘H.’

+——————+——————++——————+——————++——————+——————++——————+——————+
| D | H || D | H || D | H || D | H |
+——————+——————++——————+——————++——————+——————++——————+——————+
| 0 | 00H || 32 | 20H || 64 | 40H || 96 | 60H |
| 1 | 01H || 33 | 21H || 65 | 41H || 97 | 61H |
| 2 | 02H || 34 | 22H || 66 | 42H || 98 | 62H |
| 3 | 03H || 35 | 23H || 67 | 43H || 99 | 63H |
| 4 | 04H || 36 | 24H || 68 | 44H || 100 | 64H |
| 5 | 05H || 37 | 25H || 69 | 45H || 101 | 65H |
| 6 | 06H || 38 | 26H || 70 | 46H || 102 | 66H |
| 7 | 07H || 39 | 27H || 71 | 47H || 103 | 67H |
| 8 | 08H || 40 | 28H || 72 | 48H || 104 | 68H |
| 9 | 09H || 41 | 29H || 73 | 49H || 105 | 69H |
| 10 | 0AH || 42 | 2AH || 74 | 4AH || 106 | 6AH |
| 11 | 0BH || 43 | 2BH || 75 | 4BH || 107 | 6BH |
| 12 | 0CH || 44 | 2CH || 76 | 4CH || 108 | 6CH |
| 13 | 0DH || 45 | 2DH || 77 | 4DH || 109 | 6DH |
| 14 | 0EH || 46 | 2EH || 78 | 4EH || 110 | 6EH |
| 15 | 0FH || 47 | 2FH || 79 | 4FH || 111 | 6FH |
| 16 | 10H || 48 | 30H || 80 | 50H || 112 | 70H |
| 17 | 11H || 49 | 31H || 81 | 51H || 113 | 71H |
| 18 | 12H || 50 | 32H || 82 | 52H || 114 | 72H |
| 19 | 13H || 51 | 33H || 83 | 53H || 115 | 73H |
| 20 | 14H || 52 | 34H || 84 | 54H || 116 | 74H |
| 21 | 15H || 53 | 35H || 85 | 55H || 117 | 75H |
| 22 | 16H || 54 | 36H || 86 | 56H || 118 | 76H |
| 23 | 17H || 55 | 37H || 87 | 57H || 119 | 77H |
| 24 | 18H || 56 | 38H || 88 | 58H || 120 | 78H |
| 25 | 19H || 57 | 39H || 89 | 59H || 121 | 79H |
| 26 | 1AH || 58 | 3AH || 90 | 5AH || 122 | 7AH |
| 27 | 1BH || 59 | 3BH || 91 | 5BH || 123 | 7BH |
| 28 | 1CH || 60 | 3CH || 92 | 5CH || 124 | 7CH |
| 29 | 1DH || 61 | 3DH || 93 | 5DH || 125 | 7DH |
| 30 | 1EH || 62 | 3EH || 94 | 5EH || 126 | 7EH |
| 31 | 1FH || 63 | 3FH || 95 | 5FH || 127 | 7FH |
+——————+——————++——————+——————++——————+——————++——————+——————+

D: decimal
H: hexadecimal
*

Decimal expressions such as used for MIDI channel, Bank Select, and Program Change
will be the value 1 greater than the decimal value given in the above table.

*

Since each MIDI byte carries 7 significant data bits, each byte can express a maximum of
128 different values. Data for which higher resolution is required must be transmitted
using two or more bytes. For example a value indicated as a two-byte value of aa bbH
would have a value of aa x 128 + bb.

*

For a signed number (±), 00H = -64, 40H = ±0, and 7FH = +63. I.e., the decimal equivalent
will be 64 less than the decimal value given in the above table. For a two-byte signed
number, 00 00H = -8192, 40 00H = ±0, and 7F 7FH = +8191. For example the decimal
expression of aa bbH would be aa bbH - 40 00H = aa x 128 + bb - 64 x 128.

<Example1> What is the decimal equivalent of 5AH?

From the above table, 5AH = 90.

<Example2> What is the decimal equivalent of the 7-bit hexadecimal

values 12 34H?

From the above table, 12H = 18 and 34H = 52
Thus, 18 x 128 + 52 = 2356

Examples of Actual MIDI Messages

<Example1> 92 3E 64

9n is the Note On status and `n’ is the MIDI channel number. Since 2H = 2, 3EH = 62, and
64H = 100, this is a Note On message of MIDI CH = 3, note number 62 (note name D4) and
velocity 100.

<Example2> C0 15

CnH is the Program Change status and ‘n’ is the MIDI channel number. Since 0H = 0, and
15H = 21, this is a Program Change message of MIDI CH = 1, Program number 22.

Examples of System 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

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

<Example1> Turn the Temporary Registration Organ percussion switch

ON (DT1).

The “Parameter address map (MODEL ID = 00 4DH)” (p. 59) indicates that the starting
address of the Temporary Registration is 10 00 00 00H, that the Registration Organ
Parameter offset address is 10 00H, and that the “PERCUSSION SWITCH” address is 00
14H. Thus, the address is:

10 00 00 00H
10 00H
+) 00 14H
---------------
10 00 10 14H

Since “ON” is parameter value 01H,
F0

41 1000 4D 1210 00 10 1401 ??

F7

(1)

(2) (3)(4)

(5)addressdata

checksum(6)

(1) Exclusive status
(2) ID number (Roland)
(3) device ID(17)
(4) model ID (VK-8, VK-8M)
(5) command ID (DT1)
(6) EOX

Next we calculate the checksum.
10H + 00H + 10H + 14H + 01H = 16 + 0 + 16 + 20 + 1 = 53 (sum)
53 (total) ч 128 = 0 (quotient)... 53 (remainder)
checksum = 128 - 53 (quotient) = 75 = 4BH

This means that the message transmitted will be F0 41 10 00 4D 12 10 00 10 14 01 4B F7.

<Example2> Obtain preset organ parameter data for User Registration: 02

(RQ1).

The “Parameter address map (MODEL ID = 00 4DH)” (p. 59) indicates that the starting
address of USER: 02 is 20 01 00 00H, and that the offset address of Organ Parameter is 10
00H. Thus, the address is:

20 01 00 00H
+) 10 00H
---------------
20 01 10 00H

Since the size of the Performance Part is 00 00 00 1AH,
F0

41 1000 4D 1120 01 10 0000 00 00 1A??F7

(1)

(2) (3)(4)

(5)addressdata

checksum(6)

(1) Exclusive status
(2) ID number (Roland)
(3) Device ID (17)
(4) Model ID (VK-8, VK-8M)
(5) Command ID (RQ1)
(6) EOX

Next we calculate the checksum.
20H + 01H + 10H + 00H + 00H + 00H + 00H + 1AH =
32 + 1 + 16 + 0 + 0 + 0 + 0 + 26 = 75 (sum)
75 (total) ч 128 = 0 (product)... 75 (remainder)
checksum = 128 - 75 (remainder) = 53 = 35H

Thus, a message of F0 41 10 00 4D 11 20 01 10 00 00 00 00 1A 35 F7 would be transmitted.

Advertising