Roland JM-5 User Manual

Page of 20
JM-5 MIDI Implementation
15
In other words, the above messages specify a value of 0C 00H for RPN param-
eter number 00 00H on MIDI channel 4, and then set the RPN parameter num-
ber to 7F 7FH.
RPN parameter number 00 00H is Pitch Bend Sensitivity, and the MSB of the 
value indicates semitone units, so a value of 0CH = 12 sets the maximum pitch 
bend range to ±12 semitones (1 octave). (On GS sound generators the LSB of 
Pitch Bend Sensitivity is ignored, but the LSB should be transmitted anyway 
(with a value of 0) so that operation will be correct on any device.)
Once the parameter number has been specified for RPN or NRPN, all Data 
Entry messages transmitted on that same channel will be valid, so after the 
desired value has been transmitted, it is a good idea to set the parameter num-
ber to 7F 7FH to prevent accidents.
This is the reason for the (B3) 64 7F (B3) 65 7F at the end. It is not desirable 
for performance data (such as Standard MIDI File data) to contain many events 
with running status as given in [Example 4]. This is because if playback is halt-
ed during the song and then rewound or fast-forwarded, the sequencer may not 
be able to transmit the correct status, and the sound generator will then misin-
terpret the data. Take care to give each event its own status.
It is also necessary that the RPN or NRPN parameter number setting and the 
value setting be done in the proper order. On some sequencers, events occur-
ring in the same (or consecutive) clock may be transmitted in an order different 
than the order in which they were received. For this reason it is a good idea to 
slightly skew the time of each event (about 1 tick for TPQN = 96, and about 5 
ticks for TPQN = 480).
* TPQN: Ticks Per Quarter Note
● 
Example of an Exclusive message checksum calculation
Roland Exclusive messages (RQ1, DT1) are transmitted with a checksum at 
the end (before F7) to make sure that the message was correctly received. The 
value of the checksum is determined by the address and data (or size) of the 
transmitted Exclusive message.
❍ 
How to calculate the checksum (hexadecimal numbers are indicated by “H”)
The checksum is a value derived by adding the address, size, 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 (SysEx) message we are transmitting, the address is aa bb ccH 
and the data or size is “dd ee ffH”.
[Example 1] Setting REVERB MACRO to “ROOM 3”
According to the “Patch parameters” on page 11, the REVERB MACRO 
Address is “40 01 30H”, and ROOM 3 corresponds to “02H”. Thus…
Next, we calculate the checksum.
This means that F0 41 10 42 12 40 01 30 02 0D F7 is the message we need to 
transmit.
[Example 2] Setting REVERB LEVEL to “12”
According to the “Patch parameters” on page 11, the REVERB LEVEL Address 
is “40 01 33H”, and the parameter value is “0CH”. Thus,
Next we calculate the checksum.
In this case, however, the checksum value should be 00H, not 80H. You should 
use 00H if the remainder is 0. This means that F0 41 10 42 12 40 01 33 0C 00 
F7 is the message we transmit.
● 
About the Tuning
In MIDI, individual Parts are tuned by sending RPN #1 (Master Fine Tuning) to 
the appropriate MIDI channel.
In MIDI, an entire device is tuned by either sending RPN #1 to all MIDI channels 
being used, or by sending a System Exclusive MASTER TUNE (address 40 00 
00H).
RPN #1 allows tuning to be specified in steps of approximately 0.012 cents (to 
be precise, 100/8192 cent), and System Exclusive MASTER TUNE allows tun-
ing in steps of 0.1 cent. One cent is 1/100th of a semitone.
The values of RPN #1 (Master Fine Tuning) and System Exclusive MASTER 
TUNE are added together to determine the actual pitch sounded by each Part.
Frequently used tuning values are given in the following table for your refer-
ence. Values are in hexadecimal (decimal in parentheses).
[Example] Setting the tuning of MIDI channel 3 to A4 = 442.0 Hz
Send RPN#1 to MIDI channel 3. From the above table, the value is 45 03H.
(B3) 26 00
(MIDI ch.4) lower byte of parameter value:
00H
(B3) 64 7F
(MIDI ch.4) lower byte of RPN parameter number:
7FH
(B3) 65 7F
(MIDI ch.4) upper byte of RPN parameter number:
7FH
aa+bb+cc+dd+ee+ff = sum
sum ÷ 128 = quotient ... remainder
128 – remainder = checksum
F0
41 10 42 12 40 
01 
30 
02  ?? 
F7
(1) (2) (3) (4) (5) address 
data  checksum (6)
(1) Exclusive Status
(2) ID (Roland)
(3) Device ID (17)
(4) Model ID (GS)
(5) Command ID (DT1) (6) End of Exclusive
40H+01H+30H+02H = 64+1+48+2 = 115 (sum)
115 (sum) ÷ 128 = 0 (quotient) ... 115 (remainder)
checksum = 128 - 115 (remainder) = 13 = 0DH
F0 41 10 42 12 40 
01 
33 
0C  ?? 
F7
(1) (2) (3) (4) (5) address 
data  checksum (6)
(1) Exclusive Status
(2) ID (Roland)
(3) Device ID (17)
(4) Model ID (GS)
(5) Command ID (DT1) (6) EOX
40H + 01H + 33H + 0CH=64 + 1 + 51 + 12=128 (sum)
128 (sum) ÷ 128 = 0 (quotient) ... 0 (remainder)
checksum = 128 - 0 (remainder) = 128 = 80H
Hz at A4
cents
RPN #1
Sys.Ex. 40 00 00
445.0 
 +19.56   4C 43
(+1603)  00 04 0C 04
(+196)
444.0 
 +15.67   4A 03
(+1283)  00 04 09 0D
(+157)
443.0 
 +11.76   47 44
(+ 964)  00 04 07 06
(+118)
442.0 
 + 7.85 
 45 03
(+ 643)  00 04 04 0F
(+79)
441.0 
 + 3.93 
 42 42
(+ 322)  00 04 02 07
(+39)
440.0 
 40 00
(0)  00 04 00 00
(0)
439.0 
 - 3.94
 3D 3D
(- 323)  00 03 0D 09
(–39)
438.0 
 - 7.89
 3A 7A
(- 646)  00 03 0B 01
(–79)
B2  64 00 
MIDI ch.3, lower byte of RPN parameter number: 
00H
(B2)  65 01 
(MIDI ch.3) upper byte of RPN parameter number: 
01H
(B2)  06 45 
(MIDI ch.3) upper byte of parameter value: 
45H
(B2)  26 03 
(MIDI ch.3) lower byte of parameter value: 
03H
(B2)  64 7F 
(MIDI ch.3) lower byte of RPN parameter number: 
7FH
(B2)  65 7F 
(MIDI ch.3) upper byte of RPN parameter number: 
7FH