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. (in the case of hexadecimal values for each 7 bits, or positive
hexadecimal values for each 4 bits.)
+------+------++------+------++------+------++------+------+
| 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 values such as MIDI channel, bank select, and program change are listed as one greater than the values given in the above table.
* A 7-bit byte in hexadecimals can express data in the range of 128 steps. For data where greater precision is required, we must use two
or more bytes. For example, two hexadecimal numbers aa bbH expressing two 7-bit bytes would indicate a value of aa x 128+bb.
* In the case of data to which multiple addresses are assigned, a hexadecimal value is used for each four bits. A value 0a 0bH expressed
as two-byte nibbles will be a×16+b.
* For values with a ± sign, 00H=-64, 40H=±0, and 7FH=+63. When expressing these values as decimal expressions, we use values that are 64
less than the values in the decimal table above. In the case of a two-byte value, 00 00H=-8192, 40 00H=±0, and 7F 7FH=+8191. For example,
aa bbH expressed in decimal would be aa bbH - 40 00H=aa×128+bb-64×128.
<Example 1>What is the decimal expression of 5AH?
From the preceding table, 5AH = 90
<Example 2>What is the decimal expression of the value 12 34H given as hexadecimal for each 7 bits?
From the preceding table, since they are 12H = 18 and 34H = 52,
18 x 128 + 52 = 2356
■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 with MIDI CH =
3, note number 62 (note name is D4), and velocity 95.
<Example 2> C9 20
CnH is the Program Change status, and n is the MIDI channel number. Since 9H = 9 and 20H = 32, this is a Program Change message with MIDI
CH = 10, program number 33.
<Example 3> B9 04 5A 99 2C 7F B9 04 2D
9n is the Note-on status, and n is the MIDI channel number. BnH is the Control Change status, and n is the MIDI channel number. Thus, the
above messages have the following meaning.
B9 04 5A MIDI ch. 10, foot controller: 5AH
99 2C 7F MIDI ch. 10, Note On message
B9 04 2D MIDI ch. 10, foot controller: 2DH
In other words, with these messages a Note On message with a note number of 44 (G#2) and velocity of 127 is transmitted on MIDI Channel
10, and then the foot controller value is set from 90 to 45.
According to the settings made at the factory, the drum part is assigned to MIDI Channel 10, Note Number 44 is assigned to the pedal
hi-hat, and the foot controller is set to Pedal CC; in this case, the TD-27 plays a foot splash when the message is received.
■Examples of Exclusive Messages and Checksum Calculation
When transmitting Roland exclusive messages (DT1), a checksum is added following the data (before F7) so that the receiving device can
check whether the message was received correctly.
The checksum value is determined by the address and data of the exclusive message that is transmitted.
●How to calculate the checksum
(An “H” is appended to the end of numbers in hexadecimal notation.)
The checksum is a value derived by adding the address, data 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 cc ddH and the data is ee ff gg hhH.
aa + bb + cc + dd + ee + ff + gg + hh = sum
sum / 128 = quotient ... remainder