Roland Fantom Série Mode D'emploi page 374

Table des Matières

Publicité

Implémentation MIDI
■Conversion Decimal/Hexadecimal
(les valeurs hexadécimales sont suivies d'un
«H»)
Le MIDI utilise des données codées en hexadécimal sur 7 bits pour décrire les valeurs, les
adresses et la taille des messages. Le tableau ci-dessous fournit la correspondance entre
valeurs décimales et hexadécimales.
+——————+——————++——————+——————++——————+——————++——————+——————+
|
D
|
H
||
D
|
H
+——————+——————++——————+——————++——————+——————++——————+——————+
|
0 |
00H ||
32 |
20H ||
|
1 |
01H ||
33 |
21H ||
|
2 |
02H ||
34 |
22H ||
|
3 |
03H ||
35 |
23H ||
|
4 |
04H ||
36 |
24H ||
|
5 |
05H ||
37 |
25H ||
|
6 |
06H ||
38 |
26H ||
|
7 |
07H ||
39 |
27H ||
|
8 |
08H ||
40 |
28H ||
|
9 |
09H ||
41 |
29H ||
|
10 |
0AH ||
42 |
2AH ||
|
11 |
0BH ||
43 |
2BH ||
|
12 |
0CH ||
44 |
2CH ||
|
13 |
0DH ||
45 |
2DH ||
|
14 |
0EH ||
46 |
2EH ||
|
15 |
0FH ||
47 |
2FH ||
|
16 |
10H ||
48 |
30H ||
|
17 |
11H ||
49 |
31H ||
|
18 |
12H ||
50 |
32H ||
|
19 |
13H ||
51 |
33H ||
|
20 |
14H ||
52 |
34H ||
|
21 |
15H ||
53 |
35H ||
|
22 |
16H ||
54 |
36H ||
|
23 |
17H ||
55 |
37H ||
|
24 |
18H ||
56 |
38H ||
|
25 |
19H ||
57 |
39H ||
|
26 |
1AH ||
58 |
3AH ||
|
27 |
1BH ||
59 |
3BH ||
|
28 |
1CH ||
60 |
3CH ||
|
29 |
1DH ||
61 |
3DH ||
|
30 |
1EH ||
62 |
3EH ||
|
31 |
1FH ||
63 |
3FH ||
+——————+——————++——————+——————++——————+——————++——————+——————+
D: decimal
H: hexadecimal
* Les expressions décimales utilisées pour les canaux MIDI, la sélection de Bank et le
changement de programme seront inférieures d'une unité à la valeur du tableau ci-
dessus.
* Le MIDI possédant 7 bits de données significatives, chaque octet peut comporter un
maximum de 128 valeurs différentes. Quand une résolution supérieure est nécessaire, les
données sont codées sur deux octets ou plus. Par exemple, une valeur indiqué par un
double octet comme aa bbH par exemple, aura une valeur décimale de : aa x 128 + bb.
* Pour les valeurs algébriques (±) : 00H = -64, 40H = ±0, et 7FH = +63. L'équivalent décimal
sera donc inférieur de 64 à la valeur décimale du tableau ci-dessus. Pour une valeur
algébrique codée sur deux octets : 00 00H = -8192, 40 00H = ±0, et 7F 7FH = +8191.
L'expression décimale de : aa bbH par exemple, sera : aa bbH - 40 00H = (aa x 128 + bb -
64 x 128.)
* Une notation hexadécimale à deux mots de 4 bits (demi-octet ou «nibble») peut aussi être
utilisée. La valeur décimale de deux demi-octets 0a 0bH serait : a x 16 + b.
<Exemple 1> Quel est l'équivalent décimal de 5AH ?
Suivant le tableau ci-dessus, 5AH = 90.
<Exemple 2> Quel est l'équivalent décimal des valeurs hexadécimales à 7-bits
12 34H ?
Suivant le tableau ci-dessus, 12H = 18, 34H = 52
Donc, 18 x 128 + 52 = 2356
<Exemple 3> Quelle est l'équivalent décimal de l'expression à demi-octet 0A 03 09 0D ?
Suivant le tableau ci-dessus, comme 0AH = 10, 03H = 3, 09H = 9, 0DH = 13
((10 x 16+3) x 16+9) x 16+13 = 41885
<Exemple 4>Quel est l'équivalent à demi-octet hexadécimal de la valeur décimale
1258 ?
16 ) 1258
16 )
78 ...10
16 )
4 ...14
0 ... 4
Suivant le tableau ci-dessus : 0 = 00H, 4 = 04H, 14 = 0EH, 10 = 0AH, le résultat est donc :
00 04 0E 0AH.
96
||
D
|
H
||
D
|
H
64 |
40H ||
96 |
60H |
65 |
41H ||
97 |
61H |
66 |
42H ||
98 |
62H |
67 |
43H ||
99 |
63H |
68 |
44H ||
100 |
64H |
69 |
45H ||
101 |
65H |
70 |
46H ||
102 |
66H |
71 |
47H ||
103 |
67H |
72 |
48H ||
104 |
68H |
73 |
49H ||
105 |
69H |
74 |
4AH ||
106 |
6AH |
75 |
4BH ||
107 |
6BH |
76 |
4CH ||
108 |
6CH |
77 |
4DH ||
109 |
6DH |
78 |
4EH ||
110 |
6EH |
79 |
4FH ||
111 |
6FH |
80 |
50H ||
112 |
70H |
81 |
51H ||
113 |
71H |
82 |
52H ||
114 |
72H |
83 |
53H ||
115 |
73H |
84 |
54H ||
116 |
74H |
85 |
55H ||
117 |
75H |
86 |
56H ||
118 |
76H |
87 |
57H ||
119 |
77H |
88 |
58H ||
120 |
78H |
89 |
59H ||
121 |
79H |
90 |
5AH ||
122 |
7AH |
91 |
5BH ||
123 |
7BH |
92 |
5CH ||
124 |
7CH |
93 |
5DH ||
125 |
7DH |
94 |
5EH ||
126 |
7EH |
95 |
5FH ||
127 |
7FH |
■Exemples de messages MIDI courants
<Exemple 1> 92 3E 5F
9n est l'octet de statut «Note On» où «n» représente le numéro de canal MIDI . Comme 2H =
2, 3EH = 62 et 5FH = 95, ce message décrit une touche enfoncée, affectée au canal MIDI n°3
et de numéro de note 62 (soit ré 4 ou «D4») affectée d'une vélocité de 95.
<Exemple 2> CE 49
CnH est l'octet de statut «Program Change» où «n» représente le numéro de canal MIDI .
|
Comme EH = 14, et 49H = 73, ce message décrit un changement de programme sur le canal
MIDI n°15, appellant le son n°74 (Flute, dans le standard GS).
<Exemple 3> EA 00 28
EnH est l'octet de statut «Pitch Bend Change» où «n» représente le numéro de canal MIDI.
Le deuxième octet (00H = 0) est l'octet de poids faible (LSB), et le troisième (28H = 40) l'octet
de poids fort (MSB), mais comme la valeur de pitch-bend varie dans les sens positif et
négatif avec une valeur centrale à 40 00H (= 64 x 12+80 = 8192) cette valeur est :
28 00H - 40 00H = 40 x 12+80 - (64 x 12+80) = 5120 - 8192 = -3072
Si la sensibilité du pitch-bend est réglée sur 2 demi-tons -8192 (00 00H) déplacera la hauteur
du son de -200 cents, et dans notre cas : -200 x (-3072) ÷ (-8192) = -75 cents sur le canal 11.
<Exemple 4> B3 64 00 65 00 06 0C 26 00 64 7F 65 7F
BnH est l'octet de statut «Control Change» où «n» représente le numéro de canal MIDI.
Dans ces messages, le deuxième octet détermine le numéro de contrôle et le troisième son
amplitude. Quand plusieurs messages consécutifs ont le même statut, le standard MIDI
prévoit un mode «running Statut» qui permet de le sous-entendre et de ne ne pas le répéter.
Le message ci-dessus signifie donc :
B3 64 00
(B3) 65 00
(B3) 06 0C
(B3) 26 00
(B3) 64 7F
(B3) 65 7F
Ces messages définissent donc une valeur de 0C 00H pour le numéro de paramètre RPN 00
00H sur le canal MIDI 4, puis affectent le numéro de paramètre RPN à 7F 7FH.
Le paramètre RPN 00 00H est la sensibilité du Pitch Bend et le MSB de la valeur indique des
unités d'un demi-ton. Une valeur de 0CH = 12 règle donc l'amplitude sur +/-12 demi-tons
soit une octave. (Sur les générateurs de son GS, le LSB de la sensibilité du Pitch Bend est
ignoré, mais le LSB doit être transmis (avec une valeur de 0) afin que le fonctionnement soit
identique quel que soit l'appareil.
Dès qu'un message RPN est reçu, les messages Data Entry reçus sur le même canal MIDI
sont interprétés comme message de valeur RPN. Pour éviter toute source d'erreur, la
transmission d'un message RPN Null est donc recommandée après avoir effectué votre
changement de valeur. C'est la raison d'être de la fin du message : (B3) 64 7F (B3) 65 7F.
Il n'est pas souhaitable, pour des données de séquence (fichiers MIDI File, par exemple) de
gérer beaucoup de données en «running statut» à la manière de l'exemple 4. En effet, si la
lecture du morceau est interrompue, le séquenceur pourrait ensuite ne pas pouvoir
retransmettre le bon statut en repartant en milieu de morceau et le générateur de son ne
pourrait pas interpréter les données reçues.
* Il est aussi nécessaire que les numéros de paramètres RPN ou NRPN et leurs valeurs
soient émises dans le bon ordre. Dans certains séquenceurs, les évènements présents sur
la même division d'horloge peuvent être retransmis dans un ordre différent de celui
dans lequel ils ont été reçus. Il est, de ce fait, toujours meilleur de décaler légèrement
chaque évènement (1 tick pour un séquenceur ayant une définition de 96 tics par noire,
ou 5 ticks pour ceux qui auraient une définition de 480 ticks par noire).
MIDI ch.4, octet faible du numéro de paramètre RPN :
(MIDI ch.4) octet fort du numéro de paramètre RPN :
(MIDI ch.4) octet fort de la valeur du paramètre :
(MIDI ch.4) octet faible de la valeur du paramètre :
(MIDI ch.4) octet faible du numéro de paramètre RPN :
(MIDI ch.4) octet fort du numéro de paramètre RPN :
00H
00H
0CH
00H
7FH
7FH

Publicité

Chapitres

Table des Matières
loading

Table des Matières