Table des Matières

Publicité

Infos supplémentaires
3.
● Tableau de conversion Décimal/Hexadécimal
(Un 'H' est ajouté à la fin des nombres en notation hexadécimale.)
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.
+------+------++------+------++------+------++------+------+
|
D
|
H
||
D
|
H
+------+------++------+------++------+------++------+------+
|
0 |
00H ||
32 |
20H ||
|
|
0 H ||
33 |
2 H ||
|
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 ||
4
|
29H ||
|
0 |
0AH ||
42 |
2AH ||
|
|
0BH ||
43 |
2BH ||
|
2 |
0CH ||
44 |
2CH ||
|
3 |
0DH ||
45 |
2DH ||
|
4 |
0EH ||
46 |
2EH ||
|
5 |
0FH ||
47 |
2FH ||
|
6 |
0H ||
48 |
30H ||
|
7 |
H ||
49 |
3 H ||
|
8 |
2H ||
50 |
32H ||
|
9 |
3H ||
5
|
33H ||
|
20 |
4H ||
52 |
34H ||
|
2
|
5H ||
53 |
35H ||
|
22 |
6H ||
54 |
36H ||
|
23 |
7H ||
55 |
37H ||
|
24 |
8H ||
56 |
38H ||
|
25 |
9H ||
57 |
39H ||
|
26 |
AH ||
58 |
3AH ||
|
27 |
BH ||
59 |
3BH ||
|
28 |
CH ||
60 |
3CH ||
|
29 |
DH ||
6
|
3DH ||
|
30 |
EH ||
62 |
3EH ||
|
3
|
FH ||
63 |
3FH ||
+------+------++------+------++------+------++------+------+
D: décimal
H: hexadécimal
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 dans la colonne décimale.
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.
Les données intitulées "nibbled" sont exprimées en
hexadécimal en unités de 4 bits. Un valeur représentée par un
nibble de 2 octets 0a 0bH aura une valeur de a x 16 + b.
<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.
<Exemple 3> Dans le système décimal à quoi correspond
0A 03 09 0D en système nibble ?
0AH = 10, 03H = 3, 09H = 9, 0DH = 13 selon le tableau ci-
dessus.
Soit ((10 x 16 + 3) x 16 + 9) x 16 + 13 = 41885.
192
||
D
|
H
||
D
|
H
64 |
40H ||
96 |
60H |
65 |
4 H ||
97 |
6 H |
66 |
42H ||
98 |
62H |
67 |
43H ||
99 |
63H |
68 |
44H ||
00 |
64H |
69 |
45H ||
0
|
65H |
70 |
46H ||
02 |
66H |
7
|
47H ||
03 |
67H |
72 |
48H ||
04 |
68H |
73 |
49H ||
05 |
69H |
74 |
4AH ||
06 |
6AH |
75 |
4BH ||
07 |
6BH |
76 |
4CH ||
08 |
6CH |
77 |
4DH ||
09 |
6DH |
78 |
4EH ||
0 |
6EH |
79 |
4FH ||
|
6FH |
80 |
50H ||
2 |
70H |
8
|
5 H ||
3 |
7 H |
82 |
52H ||
4 |
72H |
83 |
53H ||
5 |
73H |
84 |
54H ||
6 |
74H |
85 |
55H ||
7 |
75H |
86 |
56H ||
8 |
76H |
87 |
57H ||
9 |
77H |
88 |
58H ||
20 |
78H |
89 |
59H ||
2
|
79H |
90 |
5AH ||
22 |
7AH |
9
|
5BH ||
23 |
7BH |
92 |
5CH ||
24 |
7CH |
93 |
5DH ||
25 |
7DH |
94 |
5EH ||
26 |
7EH |
95 |
5FH ||
27 |
7FH |
<Exemple 4> Dans le système nibble à quoi correspond 1258
16) 1258
16)
78 ... 10
16)
4 ... 14
0 ... 4
0 = 00H, 4 = 04H, 14 = 0EH, 10 = 0AH selon le tableau ci-
dessus. Soit 00 04 0E 0AH.
Exemples de messages MIDI
|
<Example 2> CE 49
CnH est le statut Program Change et n est le n° de canal MIDI.
Comme EH = 14 et 49H = 73, il s'agit d'un message de Program
Change sur le canal MIDI = 15, n° de Program 74 (la Flûte en
GS).
Exemple d'un message exclusif et calcul de Checksum
Les messages exclusifs Roland (RQ1, DT1) sont transmis avec
une checksum à la fin (avant F7) afin d'être sûr que le message
a été correctement reçu. Cette valeur de checksum est détermi-
née par l'adresse et les données (ou la taille) du message
exclusif transmis.
Comment calculer la checksum (les nombres hexadécimaux
sont indiqués par un 'H')
La checksum est une valeur obtenue en ajoutant l'adresse, la
taille et le checksum lui-même puis en inversant les 7 bits
inférieurs.
Voici un exemple montrant comment la checksum est calculée.
nous supposons que dans le message exclusif transmis,
l'adresse est aa bb ccH et les données ou la taille dd ee ffH.
aa + bb + cc + dd + ee + ff = somme
somme / 128 = quotient ... reste
128 - reste = checksum
Checksum = 0 si les reste = 0.
<Exemple> Demande de transfert de paramètre
Voir la Table des Adresses des Paramètres : 00 00 00 00H
taille : 30 00 00 00H
F0 4
( ) (2) (3) (4)
(1) Statut exclusif
(2) n° ID (Roland)
(3) Device ID (17)
(4) Model ID (JS-5)
(5) Command ID RQ1)
(6) End of Exclusive
Puis nous calculons la checksum.
00H + 00H + 00H + 00H + 30H + 00H +00H + 00H = 0 + 0 + 0 +
0 + 48 + 0 + 0 + 0 = 48 (somme)
48 (total) 128 (quotient) = 0 (quotient) ... 48 (reste)
checksum = 128 - 48 (quotient) =80 = 50H
Le message transmis sera donc :
F0 41 11 00 13 11 00 00 00 00 30 00 00 00 50 F7
en système decimal ?
00 3
00 00 00 00 30 00 00 00 ?? F7
(5) adresse
taille checksum (6)

Publicité

Table des Matières
loading

Table des Matières