MIDI implementation

3. Bulk dump

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 PCR-30/50/80, a bulk dump will be transmitted when you execute the Bulk mode operation BULK TX. The bulk dump is transmitted as several exclusive messages.

Address

Parameter

Packets

00H, 00H, 00H, 00H--00H, 00H, 1A, 7F

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 1--F will be transmitted as the current memory, consecutively from memory 1 through memory F. After transmitting one set of bulk dump data, you must leave an interval of at least 500 ms.

*Please be aware that if you modify the data dumped from the PCR-30/50/80 by changing the order in which the exclusive messages are transmitted, by inserting other messages between the system exclusive messages, or by speeding up the timing of the transmission, the data may not be set correctly when the PCR-30/50/80 receives it.

<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

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.

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 (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.

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