Éléments Supplémentaires - Roland VK-8 Mode D'emploi

Table des Matières

Publicité

Implémentation MIDI
4. Éléments supplémentaires
■Conversion Decimal/Hexadecimal
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 système exclusif. Le tableau ci-dessous fournit la
correspondance entre valeurs décimales et hexadécimales.
* Les valeurs hexadécimales sont suivies d'un «H»
+——————+——————++——————+——————++——————+——————++——————+——————+
|
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 ?
Suivantn le tableau ci-dessus, 12H = 18, 34H = 52
Donc, 18 x 128 + 52 = 2356
■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> C0 25
CnH est l'octet de statut «Program Change» où «n» représente le numéro de canal MIDI .
Comme 0H = 0, et 25H = 37, ce message décrit un changement de programme sur le canal
MIDI n°1, appellant le son n°38.
76
||
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 Système exclusif et
calcul du Checksum
Les messages Système exclusif Roland (RQ1, DT1) sont transmis avec un checksum (total) à
la fin de l'envoi des données (avant F7) pour vérifier leur bonne transmission. La valeur du
checksum est déterminée par l'adresse et les données (ou la taille) du message système
exclusif.
●Comment calculer le checksum
|
Le checksum est une valeur dont les 7 bits les plus faibles sont des 0 quand l'adresse, la
taille et le checksum lui-même lui sont ajoutés. La formule suivante montre comment
calculer le checksum quand le message exclusif à transmettre a une adresse : aa bb cc ddH et
une taille de données : ee ffH.
aa + bb + cc + dd + ee + ff = total
total ÷ 128 = quotient ... reste
128 - reste = checksum
Le checksum est zéro à condition que le reste soit zéro.
<Exemple1> activation de la percussion du Temporary Preset (DT1).
La «table des paramètres» indique que l'adresse de départ des Temporary Preset est 10 00
00 00H, que l'adresse d'offset du paramètre Preset Organ est 10 00H, et que l'adresse du
"PERCUSSION SWITCH" est 00 14H. Le message est donc :
10 00 00 00H
10 00H
+)
00 14H
---------------
10 00 10 14H
comme "ON"correspond à la valeur 01H,
F0
41
10
00 4D
(1)
(2)
(3)
(4)
(1) Début de Sysex
(4) model ID (VK-8)
Il reste à calculer le checksum.
10H + 00H + 10H + 14H + 01H = 16 + 0 + 16 + 20 + 1 = 53 (sum)
53 (total) ÷ 128 = 0 (quotient)... 53 (reste)
checksum = 128 - 53 (reste) = 75 = 4BH
Le message à transmettre sera donc F0 41 10 00 4D 12 10 00 10 14 01 4B F7.
<Exemple2> récupération des données du Preset USER : 02 (RQ1).
La table d'adresse des paramètres indique que l'adresse de départ du USER: 02 est 20 01 00
00H, et que l'adresse d'offset du paramètre Organ Parameter est 10 00H. Le message est
donc :
20 01 00 00H
+)
10 00H
---------------
20 01 10 00H
Coomme la taille de la Performance Part est 00 00 00 1AH,
F0
41
10
00 4D
(1)
(2)
(3)
(4)
(1) Début de Sysex
(4) model ID (VK-8)
Il reste à calculer le checksum.
20H + 01H + 10H + 00H + 00H + 00H + 00H + 1AH =
32 + 1 + 16 + 0 + 0 + 0 + 0 + 26 = 75 (sum)
75 (total) ÷ 128 = 0 (produit)... 75 (reste)
checksum = 128 - 75 (reste) = 53 = 35H
Le message à transmettre sera donc F0 41 10 00 4D 11 20 01 10 00 00 00 00 1A 35 F7.
12
10 00 10 14
01
??
(5)
address
data
checksum
(2) ID number (Roland)
(3) device ID(17)
(5) command ID (DT1)
(6) EOX
11
20 01 10 00
00 00 00 1A
??
(5)
address
data
checksum
(2) ID number (Roland)
(3) device ID(17)
(5) command ID (RQ1)
(6) EOX
F7
(6)
F7
(6)

Publicité

Table des Matières
loading

Table des Matières