background image

 

11

MIDI Implementation

 

 

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.

 

+——————+——————++——————+——————++——————+——————++——————+——————+
|  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 and program change are listed as one greater than

the values given in the above table.

* A 7-bit byte 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 values which have a ± sign, 00H = -64, 40H = ±0, and 7FH = +63, so that the

decimal expression would be 64 less than the value given in the above chart. In the case
of two types, 00 00H = -8192, 40 00H = ±0, and 7F 7FH = +8191. For example, if aa bbH
were expressed as decimal, this would be aa bbH - 40 00H = aa x 128+bb - 64 x 128.

* Data marked “Use nibbled data” is expressed in hexadecimal in 4-bit units. A value

expressed as a 2-byte nibble 0a 0bH has the value of a x 16+b.

 

<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 12H = 18 and 34H = 52
18 x 128+52 = 2356

 

<Example 3>

What is the decimal expression of the nibbled value 0A 03 09 0D?

 

From the preceding table, since 0AH = 10, 03H = 3, 09H = 9, 0DH = 13
((10 x 16+3) x 16+9) x 16+13 = 41885

 

<Example 4>

What is the nibbled expression of the decimal value 1258?

 

16 ) 1258

16 )   78 ...10

16 )    4 ...14

        0 ... 4

 

Since from the preceding table, 0 = 00H, 4 = 04H, 14 = 0EH, 10 = 0AH, the result is: 00 04 0E
0AH.

 

 

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> CE 49

 

CnH is the Program Change status, and n is the MIDI channel number. Since EH = 14 and
49H = 73, this is a Program Change message with MIDI CH = 15, program number 74 (Flute
in GS).

 

<Example 3> EA 00 28

 

EnH is the Pitch Bend Change status, and n is the MIDI channel number. The 2nd byte (00H
= 0) is the LSB and the 3rd byte (28H = 40) is the MSB, but Pitch Bend Value is a signed
number in which 40 00H (= 64 x 12+80 = 8192) is 0, so this Pitch Bend Value is
28 00H - 40 00H = 40 x 12+80 - (64 x 12+80) = 5120 - 8192 = -3072
If the Pitch Bend Sensitivity is set to 2 semitones, -8192 (00 00H) will cause the pitch to
change -200 cents, so in this case -200 x (-3072) ÷ (-8192) = -75 cents of Pitch Bend is being
applied to MIDI channel 11.

 

<Example 4> B3 64 00 65 00 06 0C 26 00 64 7F 65 7F

 

BnH is the Control Change status, and n is the MIDI channel number. For Control Changes,
the 2nd byte is the control number, and the 3rd byte is the value. In a case in which two or
more messages consecutive messages have the same status, MIDI has a provision called
“running status” which allows the status byte of the second and following messages to be
omitted. Thus, the above messages have the following meaning.

 B3

64 00

MIDI ch.4, lower byte of RPN parameter number:

00H

(B3) 65 00

(MIDI ch.4) upper byte of RPN parameter number:

00H

(B3) 06 0C

(MIDI ch.4) upper byte of parameter value:

0CH

(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

In other words, the above messages specify a value of 0C 00H for RPN parameter number
00 00H on MIDI channel 4, and then set the RPN parameter number 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 number 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 halted
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 misinterpret 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 occurring 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

V-Piano_Grand_Imple_e01.book 11 ページ 2011年6月22日 水曜日 午前11時3分

Summary of Contents for V-Piano Grand GP-7

Page 1: ...Entry Controller number 6 38 Status 2nd byte 3rd byte BnH 06H mmH BnH 26H llH n MIDI channel number 0H FH ch 1 16 mm ll the value of the parameter specified by RPN NRPN mm MSB ll LSB Volume Controller...

Page 2: ...to Time value Effect 1 Reverb Send Level Controller number 91 Status 2nd byte 3rd byte BnH 5BH vvH n MIDI channel number 0H FH ch 1 16 vv Reverb Send Level 00H 7FH 0 127 Effect 3 Chorus Send Level Con...

Page 3: ...stem Realtime Message Active Sensing Status FEH When Active Sensing is received the unit will begin monitoring the intervals of all further messages While monitoring if the interval between messages e...

Page 4: ...aster Coarse Tuning LSB mmH Master Coarse Tuning MSB F7H EOX End Of Exclusive ll ignored processed as 00H mm 28H 40H 58H 24 0 24 semitones Global Parameter Control Reverb Parameters Status Data byte S...

Page 5: ...H 64 cents 40H 0 cents equal temperament 7FH 63 cents F7H EOX End Of Exclusive Key based Instrument Controllers Status Data byte Status F0H 7FH 7FH 0AH 01H 0nH kkH nnH vvH F7H Byte Explanation F0H Exc...

Page 6: ...sent at an interval of about 20 ms Regarding the checksum please refer to p 12 2 Data Transmission Channel Voice Messages Note off Status 2nd byte 3rd byte 8nH kkH vvH n MIDI channel number 0H FH ch 1...

Page 7: ...the parameters after the V Piano Grand is turned off execute SETUP Write Start Address Description 03 00 00 00 Tone Temporary 20 00 00 00 System 30 00 00 00 Setup Temporary Tone Offset Address Descrip...

Page 8: ...92 100 0 100 07 60 0aaa aaaa 0bbb bbbb Hammer Hardness 8092 8192 8292 100 0 100 07 62 0aaa aaaa 0bbb bbbb Hammer Hardness Velocity Follow 8092 8192 8292 100 0 100 07 64 0aaa aaaa 0bbb bbbb Hammer Hard...

Page 9: ...00 3C 0000 0aaa System Equalizer High Mid Q 0 4 0 5 1 0 2 0 4 0 8 0 00 3D 0000 000a System Equalizer High Type 0 1 Shelving Peaking 00 3E 000a aaaa System Equalizer High Frequency 0 30 16 20 25 31 40...

Page 10: ...h Mid Frequency 0 30 16 20 25 31 40 50 63 80 100 125 160 200 250 315 400 500 630 800 1000 1250 1600 2000 2500 3150 4000 5000 6300 8000 10000 12500 16000 Hz 01 43 0aaa aaaa Setup Equalizer High Mid Gai...

Page 11: ...m Change status and n is the MIDI channel number Since EH 14 and 49H 73 this is a Program Change message with MIDI CH 15 program number 74 Flute in GS Example 3 EA 00 28 EnH is the Pitch Bend Change s...

Page 12: ...00 04 02 F7 1 2 3 4 5 address data checksum 6 1 Exclusive Status 2 ID Roland 3 Device ID 17 4 Model ID V Piano Grand GP 7 5 Command ID DT1 6 End of Exclusive Then calculate the checksum 20H 00H 00H 0...

Page 13: ...ontroller 4 Hold 1 Portamento Sostenuto Soft Legato foot switch Hold 2 Sound variation Resonance Release time Attack Time Cuttoff Decay time Vibrato rate Vibrato depth Vibrato delay General purpose co...

Page 14: ...3 V1 Concert 004 V1 Session 005 V1 Mellow 006 V1 Bright 007 V1 Honky Tonk 008 Vintage Piano 2 009 V2 Studio 010 V2 Concert 011 V2 Session 012 V2 Clear 013 V2 Upright 014 Fortepiano 015 All Silver 1 01...

Reviews: