Implémentation MIDI
4. Infos supplémentaires
Tableau de conversion Décimal/Hexadécimal
Dans la norme MIDI, les valeurs et adresses/tailles des messages exclusifs etc. sont
exprimés en valeurs hexadécimales pour chacun des 7 bits. Le tableau ci-dessous
indique à quoi elles correspondent en nombres décimaux.
Tableau Décimal/Hexadécimal (Un "H" est ajouté à la fin des nombres en notation
hexadécimale.)
Dec.
Hex.
Dec.
0
00H
32
1
01H
33
2
02H
34
3
03H
35
4
04H
36
5
05H
37
6
06H
38
7
07H
39
8
08H
40
9
09H
41
10
0AH
42
11
0BH
43
12
0CH
44
13
0DH
45
14
0EH
46
15
0FH
47
16
10H
48
17
11H
49
18
12H
50
19
13H
51
20
14H
52
21
15H
53
22
16H
54
23
17H
55
24
18H
56
25
19H
57
26
1AH
58
27
1BH
59
28
1CH
60
29
1DH
61
30
1EH
62
31
1FH
63
* Les valeurs décimales telles que canaux MIDI, Bank Select et Program Change
sont exprimées avec une unité de plus que les valeurs indiquées ce tableau.
* Un octet de 7 bits peut exprimer des données sur 128 pas. Pour les données
nécesitant une précision plus grande, il faut utiliser deux octets ou plus.
Par exemple, deux nombres hexadécimaux aa bbH exprimant deux octets de 7
bits pourront indiquer une valeur de aa x 128 + bb.
Dans le cas de valeurs avec un signe ±, 00H = -64, 40H = ±0 et 7FH = +63, afin que
l'expression décimale soit 64 moins la valeur donnée dans le tableau ci-dessus.
Dans le cas de deux types 00 00H = -8192, 40 00H = ±0, et 7F 7FH = +8191. Par
exemple si aa bbH était exprimé en notation décimale, on aurait aa bbH - 40 00H
= aa x 128 + bb - 64 x 128.
<Exemple 1> Que signifie 5AH en système décimal ?
5AH = 90 selon le tableau ci-dessus
<Exemple 2> Dans le système décimal à quoi correspond 1234H en hexadécimal sur
7 bits ?
12H = 18, 34H = 52 selon le tableau ci-dessus.
Soit 18 x 128 + 52 = 2356
88
Hex.
Dec.
Hex.
Dec.
20H
64
40H
96
21H
65
41H
97
22H
66
42H
98
23H
67
43H
99
24H
68
44H
100
25H
69
45H
101
26H
70
46H
102
27H
71
47H
103
28H
72
48H
104
29H
73
49H
105
2AH
74
4AH
106
2BH
75
4BH
107
2CH
76
4CH
108
2DH
77
4DH
109
2EH
78
4EH
110
2FH
79
4FH
111
30H
80
50H
112
31H
81
51H
113
32H
82
52H
114
33H
83
53H
115
34H
84
54H
116
35H
85
55H
117
36H
86
56H
118
37H
87
57H
119
38H
88
58H
120
39H
89
59H
121
3AH
90
5AH
122
3BH
91
5BH
123
3CH
92
5CH
124
3DH
93
5DH
125
3EH
94
5EH
126
3FH
95
5FH
127
Exemples de messages MIDI
<Exemple 1> E1 00 28
EnH est le statut Pitch Bend Change et n est le n° de canal MIDI. Le 2nd octet (00H =
0) est le LSB et le 3e octet (28H = 40) est le MSB, mais la valeur de Pitch Bend est un
nombre avec signe dans lequel 40 00H (= 64 x 12 + 80 = 8192) est égal à 0, donc cette
valeur de Pitch Bend est
28 00H - 40 00H = 40 x 12 + 80 - (64 x 12 + 80) = 5120 - 8192 = -3072
Hex.
Si la sensibilité du Pitch Bend est réglée sur 2 demi-tons, -8192 (00 00H) la hauteur
60H
changera de -200 cents, donc, dans ce cas -200 x (-3072) / (–8192) = -75 cents de Pitch
61H
Bend est appliqué au canal MIDI 2.
62H
63H
<Exemple 2> B1 64 00 65 00 06 0C 26 00 64 7F 65 7F
64H
65H
BnHest le statut Control Change et n est le n° de canal MIDI. Pour les Control
66H
Changes, le 2nd octet est le n° de Contrôleur et le 3e octet est la valeur. Dans le cas de
67H
deux messages consécutifs ou plus, ayant le même statut, le MIDI ajoute un "running
68H
status" permettant à l'octet de statut du second message et des suivants d'être omis.
Dans ce cas, les messages ci-dessus ont la signification suivante.
69H
6AH
B1
64 00
6BH
(B1)
65 00
6CH
(B1)
06 0C
6DH
(B1)
26 00
6EH
(B1)
64 7F
6FH
(B1)
65 7F
70H
71H
En d'autres termes, les messages ci-dessus indiquent une valeur de 0C 00H pour le
paramètre RPN numéro 00 00H sur le canal MIDI 2, puis règlent le numéro de
72H
paramètre RPN sur 7F 7FH.
73H
74H
Le paramètre RPN numéro 00 00H est Pitch Bend Sensitivity, et le MSB de la valeur
75H
indique des demi-tons comme unité, aussi la valeur 0CH = 12 règle la fourchette de
76H
Pitch Bend maximum sur ±12 demi-tons (1 octave). (Sur l'UA-100 le LSB du
77H
paramètre Pitch Bend Sensitivity est ignoré, mais le LSB doit être transmis de toute
78H
façon (avec une valeur de 0) afin que cette opération soit correcte sur tout appareil.)
79H
7AH
Une fois que le numéro de paramètre a été spécifié pour le RPN ou le NRPN, tous les
messages Data Entry transmis sur le même canal seront valables, donc après la
7BH
transmission de la valeur, il vaut mieux régler le numéro de paramètre sur 7F 7FH
7CH
pour éviter tout accident. C'est la raison pour laquelle (B3) 64 7F (B3) 65 7F se trouve
7DH
à la find.
7EH
7FH
Il n'est pas souhaitable que les données musicales (telles que les fichiers Standard
MIDI File) contiennent de nombreux événements avec "running status" comme dans
l'<Exemple 2>. Parce que si la lecture est arrêtée en cours de morceau, puis qu'il y a
des rembobinages avant ou arrière, le séquenceur ne pourra plus transmettre le
statut correct et la source sonore interprétera les données de travers. Il faut que
chaque événement ait son propre statut.
Il est également nécessaire que le réglage du numéro de paramètre RPN ou NRPN et
le réglage de la valeur soit effectués dans le bon ordre. SUr certains séquenceurs, des
événements se produisant au même moment (ou consécutifs) peuvent être transmis
dans un ordre différent de celui dans lequel ils ont été reçus. Il vaut donc mieux
décaler légèrement l'heure de chaque événement (d'environ 1 tic si TPQN = 96, et
d'environ 5 tics si TPQN = 480).
* TPQN: Ticks Per Quarter Note (Tics à la noire)
Cnl MIDI 2, octet inf. du n° de paramètre RPN :
(Cnl MIDI 2) octet sup. du n° de paramètre RPN :
(Cnl MIDI 2) octet sup. de la valeur du paramètre :
(Cnl MIDI2) octet inf. de la valeur du paramètre :
(Cnl MIDI 4) octet inf. du n° de paramètre RPN:
(Cnl MIDI 4) octet sup. du n° de paramètre RPN:
00H
00H
0CH
00H
7FH
7FH