MIDI implementation
Bulk dump allows a large amount of data to be transferred in a single operation. For example, this can be used to store all settings of a device into a computer or sequencer.
On the
Address | Parameter | Packets |
00H, 00H, 00H, | Current memory | 27 |
*You must leave an interval of at least 40 ms between each exclusive message.
*In the case of ALL BULK, the contents of memories
*Please be aware that if you modify the data dumped from the
<Example1>
What is the decimal expression of 5AH?
From the preceding table, 5AH = 90.
<Example2>
What is the decimal expression of the
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
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
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
●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.
Dec. | Hex. | Dec. | Hex. | Dec. | Hex. | Dec. | Hex. |
|
|
|
|
|
|
|
|
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 |
*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
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
*In the case of data indicated as “use nibble data,” hexadecimal expression in 4- bit units is used. A
●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.
177