<Exemple 4> B3 64 00 65 00 06 0C 26 00 64 7F 65 7F
BnH correspond au statut «Control Change», avec n = numéro de canal MIDI .
Dans les messages de contrôle, le 2e octet correspond au numéro du contrôle et le 3e octet à la
valeur du paramètre. le système MIDI autorise une transmission appelée «running statut» qui
permet d'omettre les octets de statut à partir du second message de même nature que le
premier. Dans le message ci-dessus ce procédé est utilisé et sa signification est donc :.
B3 64 00
MIDI CH = 4, bit de poids faible du n° de paramètre RPN : 00H
(B3) 65 00
MIDI CH = 4, bit de poids fort du n° de paramètre RPN: 00H
(B3) 06 0C
MIDI CH = 4, bit de poids faible de la valeur du paramètre : 0CH
(B3) 26 00
MIDI CH = 4, bit de poids fort de la valeur du paramètre : 00H
(B3) 64 7F
MIDI CH = 4, bit de poids faible du n° de paramètre RPN : 7FH
(B3) 65 7F
MIDI CH = 4, bit de poids fort du n° de paramètre RPN : 7FH
Ce message transmet donc une valeur de paramètre de 0C 00H au numéro de paramètre RPN
00 00H sur le canal MIDI 4, puis ajuste la valeur du paramètre RPN à 7F 7FH.
La fonction affectée au paramètre RPN numéro 00 00H est la sensibilité du Pitch Bend et la
valeur MSB du paramètre indique des pas en demi-tons. Comme cette valeur MSB est de 0CH
= 12, l'amplitude maximum du pitch bend est de +/-12 demi-tons (1 octave). (Cet instrument
ignore la valeur LSB de la sensibilité du pitch-bend mais il vaut mieux la transmettre avec une
valeur de 0 pour que le message puisse être compris quel que soit l'appareil).
Quand le numéro de paramètre a été réglé pour le RPN ou le NRPN, tous les messages Data
Entry qui suivent sur ce canal seront actifs. Il est donc recommandé, après avoir fait votre
changement, de remettre le numéro de paramètre à 7F 7FH (réglage nul ou non affecté). La
fin du message (B3) 64 7F (B3) 65 7F sert à cela.
Le running statut doit toutefois être évité au sein d'un morceau enregistré (par exemple un
MIDI File standard), car lors des avances rapides ou des rembobinages, le séquenceur pourrait
ne pas pouvoir retransmettre le début du statut et provoquer une mauvaise interprétation des
données.
Il est également important de transmettre les numéros de paramètres RPN et NRPN ainsi que
les valeurs de paramètres dans le bon ordre. Sur certains séquenceurs, les données reçues en
même temps peuvent se trouver retransmises dans un ordre différent et il est donc souvent
avisé d'espacer chaque évènement du suivant (1 tick pour TPQN = 96, et 5 tickspour TPQN =
480).
* TPQN: (ticks à la noire = résolution du séquenceur)
● Exemples de messages système exclusif et de calcul du
Checksum
Les messages exclusifs Roland (RQ1, DT1) sont transmis avec une totalisation finale
(checksum) à la fin du message (avant F7) qui permet de vérifier la bonne réception des
données. La valeur du checksum est déterminée par l'adresse et la taille du message système
exclusif.
❍ Comment calculer le checksum (les chiffres hexadécimaux sont repérés 'H')
Le checksum consiste en une valeur dont les 7 bits les plus faibles sont des zéros quand
l'adresse, la taille et le checksum lui même lui sont ajoutés. La formule ci-après indique
comment calculer le checksum quand le message système exclusif à transmettre a une adresse
«aa bb cc ddH», et une taille de «ee ffH».
aa + bb + cc + dd + ee + ff = total
total / 128 = quotient ... reste
128 - reste = checksum
<Exemple 1> Donner au paramètre Performance Common REVERB TYPE la valeur HALL 1
(DT1). La table d'adresse des paramètres indique que la «starting address» de la Performance
est 10 00 00 00H,que l'adresse d'offset de la «Performance Common» est 00 00H, et que
l'adresse de REVERB TYPE est 00 32H. Cette adresse est donc :
10 00 00 00H
00 00H
+)
00 32H
10 00 00 32H
Comme HALL 1 correspond au paramétrage 03H,
F0
41
10
00
1D
12
(1)
(2)
(3)
(4)
(5)
(6)
(1) Statut SysEx
(2) numéro ID (Roland)
(3) Device ID (17)
(4) Model ID#1 (VP-9000)
(5) Model ID#2 (VP-9000)
(6) Command ID (DT1)
Nous pouvons donc calculer le checksum :
10H + 00H + 00H + 32H + 03H = 16 + 0 + 0 + 50 + 3 = 69 (somme)
69 (total) / 128 = 0 (quotient) ... 69 (reste)
checksum = 128 - 69 (reste) = 59 = 3BH
Le message à transmettre est donc F0 41 10 00 1D 12 01 00 00 32 03 3B F7.
10 00 00 32
03
??
F7
adresse
taille
checksum
(7)
(7) EOX
<Exemple 2> Récupération (rappel) des données de la Performance Part 3 (RQ1)
La table d'adresse des paramètres indique que la «starting address» de la Performance Part est
11 00 00 00H, et que l'adresse d'offset de la Performance Part 3 est 20 00H. L'adresse est donc :
11 00 00 00H
+)
20 00H
11 00 20 00H
Comme la taille de la Performance Part est 00 00 00 71H,
F0
41
10
00
1D
11
(1)
(2)
(3)
(4)
(5)
(6)
(1) Statut SysEx
(2) numéro ID (Roland)
(3) Device ID (17)
(4) Model ID#1 (VP-9000)
(5) Model ID#2 (VP-9000)
(6) Command ID (RQ1)
Nous pouvons donc calculer le checksum :
11H + 00H + 20H + 00H + 00H + 00H + 00H + 71H =
17 + 0 + 32 + 0 + 0 + 0 + 0 + 113 = 162 (sum)
162 (total) / 128 = 1 (quotient) ... 34 (reste)
checksum = 128 - 34 (reste) = 94 = 5EH
Le message à transmettre est donc F0 41 10 00 1D 11 11 00 20 00 00 00 00 71 5E F7.
<Exemple 3> Rappel de toutes les données de la Performance (RQ1)
La table d'adresse des paramètres indique que la «starting address» des données de
Performance.
10 00 00 00H
Performance Common
11 00 00 00H
Performance Part 1
:
11 00 50 00H
Performance Part 6
12 00 00 00H
Performance Part 1 Phrase Map 1
:
12 05 0B 00H
Performance Part 6 Phrase Map 12
Comme la Phrase Map a une taille de 00 00 00 1CH, nous ajoutons cette taille à l'adresse de
départ de la Phrase Map 12 de la Part 6, et obtenons :
12 05 0B 00H
+) 00 00 00 1CH
12 05 0B 1CH
La taille des données récupérées est donc :
12 05 0B 1CH
-) 10 00 00 00H
02 05 0B 1CH
F0
41
10
00
1D
11
(1)
(2)
(3)
(4)
(5)
(6)
(1) Statut SysEx
(2) numéro ID (Roland)
(3) Device ID (17)
(4) Model ID#1 (VP-9000)
(5) Model ID#2 (VP-9000)
(6) Command ID (RQ1)
En calculant le checksum comme dans l' <Exemple 2>, nous obtenons le message à
transmettre : F0 41 10 00 1D 11 10 00 00 00 02 05 0B 1C 42 F7.
<Exemple 4> Rappel des données de performance avec toutes les données de Sample (RQ1)
La table d'adresse des paramètres indique que la «starting address» des données de
Performance, Sample et Wave sont :
10 00 00 00H
Performance
20 00 00 00H
Sample A001
:
27 7F 00 00H
Sample H128
30 00 00 00H
Wave A001
:
37 7F 00 00H
Wave H128
Comme la taille des données Wave est 00 00 00 1DH, nous ajoutons cette taille à l'adresse de
départ de la Wave H128.
37 7F 00 00H
+) 00 00 00 1DH
37 7F 00 1DH
La taille des données récupérées est donc :
37 7F 00 1DH
-) 10 00 00 00H
27 7F 00 1DH
F0
41
10
00
1D
11
(1)
(2)
(3)
(4)
(5)
(6)
(1) Statut SysEx
(2) ID number (Roland)
(3) Device ID (17)
(4) Model ID#1 (VP-9000)
(5) Model ID#2 (VP-9000)
(6) Command ID (RQ1)
En calculant le checksum comme dans l' <Exemple 2>, nous obtenons le message à
transmettre : F0 41 10 00 1D 11 10 00 00 00 27 7F 00 1D 2D F7.
Implémentation MIDI
11 00 20 00
00 00 00 71
??
adresse
données
checksum
(7) EOX
10 00 00 00
02 05 0B 1C
??
adresse
données
checksum
(7) EOX
10 00 00 00
27 7F 00 1D
?
adresse
données
checksum
(7) EOX
207
F7
(7)
F7
(7)
F7
(7)