About the tuning – Roland VIMA JM-5 User Manual

Page 15

Advertising
background image

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

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

Advertising