■ Tableau des codes ASCII
+——————+——————++—————++——————+——————++——————+——————+——————+——————+
| D
| H
| Char || D
| H
+——————+——————++—————++——————+——————++——————+——————+——————+——————+
|
32 | 20H | SP ||
64 | 40H ||
|
33 | 21H |
! ||
65 | 41H ||
|
34 | 22H |
" ||
66 | 42H ||
|
35 | 23H |
# ||
67 | 43H ||
|
36 | 24H |
$ ||
68 | 44H ||
|
37 | 25H |
% ||
69 | 45H ||
|
38 | 26H |
& ||
70 | 46H ||
|
39 | 27H |
' ||
71 | 47H ||
|
40 | 28H |
( ||
72 | 48H ||
|
41 | 29H |
) ||
73 | 49H ||
|
42 | 2AH |
* ||
74 | 4AH ||
|
43 | 2BH |
+ ||
75 | 4BH ||
|
44 | 2CH |
, ||
76 | 4CH ||
|
45 | 2DH |
- ||
77 | 4DH ||
|
46 | 2EH |
. ||
78 | 4EH ||
|
47 | 2FH |
/ ||
79 | 4FH ||
|
48 | 30H |
0 ||
80 | 50H ||
|
49 | 31H |
1 ||
81 | 51H ||
|
50 | 32H |
2 ||
82 | 52H ||
|
51 | 33H |
3 ||
83 | 53H ||
|
52 | 34H |
4 ||
84 | 54H ||
|
53 | 35H |
5 ||
85 | 55H ||
|
54 | 36H |
6 ||
86 | 56H ||
|
55 | 37H |
7 ||
87 | 57H ||
|
56 | 38H |
8 ||
88 | 58H ||
|
57 | 39H |
9 ||
89 | 59H ||
|
58 | 3AH |
: ||
90 | 5AH ||
|
59 | 3BH |
; ||
91 | 5BH ||
|
60 | 3CH |
< ||
92 | 5CH ||
|
61 | 3DH |
= ||
93 | 5DH ||
|
62 | 3EH |
> ||
94 | 5EH ||
|
63 | 3FH |
? ||
95 | 5FH ||
+——————+——————++—————++——————+——————++——————+
D: décimale
H: hexadécimale
Note: SP signifie "espace".
■ Exemples de réels messages MIDI
Exemple 1> 92 3E 5F
<
9n est le statut Note On, et n est le numéro de canal MIDI. Comme 2H = 2,
3EH = 62, et 5FH = 95, c'est un message Note-on sur le canal MIDI 3, de
numéro de note 62 (le nom de note est ré4), et la dynamique de 95.
<Exemple 2> CE 49
CnH est le statut de changement de programme, et n est le numéro de canal
MIDI. Comme EH = 14 et 49H = 73, c'est un message de changement de
programme sur le canal MIDI 15, pour le programme 74 (Flûte en GS).
<Exemple 3> EA 00 28
EnH est le staut de changement de Pitch Bend, et n est le numéro de canal
MIDI. Le deuxième octet (00H=0) est le LSB et le 3ème (28H=40) le MSB, mais
la valeur de Pitch Bend est une valeur avec signe (±) pour laquelle 40 00H ( =
64 x 128 + 0 = 8192) vaut 0, aussi cette valeur de Pitch Bend est-elle
28 00H - 40 00H = 40 x 128 + 0 - (64 x 128 + 0) = 5120 - 8192 = -3072
Si la sensibilité au Pitch Bend est réglée à 2 demi-tons, -8192 (00 00H) donne
un changement de hauteur de -200 centièmes, aussi dans ce cas -200 x (-3072)
÷ (-8192) = -75 centièmes de Pitch Bend s'applique au canal MIDI 11.
<Exemple 4> B3 64 00 65 00 06 0C 26 00 64 7F 65 7F
BnH est le statut de changement de commande, et n est le numéro de canal
MIDI. Le deuxième octet est le numéro de commande, et le troisième la
valeur. Dans le cas ou deux messages consécutifs (ou plus) ont le même
statut, le MIDI a prévu une simplification nommée "running status" (statut en
cours) qui évite la répétition de l'octet de statut pour les messages suivants.
Par conséquent, les messages ci-dessus ont la signification suivante.
B3
64 00
Canal MIDI 4, octet faible de RPN
(B3) 65 00
Canal MIDI 4, octet fort de RPN
(B3) 06 0C
Canal MIDI 4, octet fort de la valeur
(B3) 26 00
Canal MIDI 4, octet faible de la valeur
(B3) 64 7F
Canal MIDI 4, octet faible de RPN
(B3) 65 7F
Canal MIDI 4, octet fort de RPN
En d'autres termes, les messages ci-dessus fixent une valeur de 0C 00H pour
le RPN 00 00H sur le canal 4, puis ramènent le RPN à 7F 7FH.
Le RPN 00 00H est la sensibilité au Pitch Bend, et le MSB donne la valeur en
demi-tons, aussi une valeur 0CH = 12 fixe-t-elle la variation de hauteur
maximale à ± 12 demi-tons (1 octave). (Sur les sources sonores GS, le LSB de
sensibilité au Pitch Bend est ignorée, mais doit cependant être transmis (avec
une valeur de 0) pour que cette procédure soit correcte avec tout appareil.
|| Char | D
| H
| Char |
@ |
96 | 60H |
` |
A |
97 | 61H |
a |
B |
98 | 62H |
b |
C |
99 | 63H |
c |
D | 100 | 64H |
d |
E | 101 | 65H |
e |
F | 102 | 66H |
f |
G | 103 | 67H |
g |
H | 104 | 68H |
h |
I | 105 | 69H |
i |
J | 106 | 6AH |
j |
K | 107 | 6BH |
k |
L | 108 | 6CH |
l |
M | 109 | 6DH |
m |
N | 110 | 6EH |
n |
O | 111 | 6FH |
o |
P | 112 | 70H |
p |
Q | 113 | 71H |
q |
R | 114 | 72H |
r |
S | 115 | 73H |
s |
T | 116 | 74H |
t |
U | 117 | 75H |
u |
V | 118 | 76H |
v |
W | 119 | 77H |
w |
X | 120 | 78H |
x |
Y | 121 | 79H |
y |
Z | 122 | 7AH |
z |
[ | 123 | 7BH |
{ |
\ | 124 | 7CH |
| |
] | 125 | 7DH |
} |
^ |——————+——————+——————+
_ |
: 00H
: 00H
: 0CH
: 00H
: 7FH
: 7FH
Une fois le numéro de RPN ou NRPN spécifié, tous les messages d'entrée de donnée
sur le même canal MIDI seront pris en compte, aussi est-il préférable après
transmission de la valeur voulue d'envoyer un message 7F 7FH d'annulation de
choix de RPN. Cela explique la présence de (B3) 64 7F (B3) 65 7F à la fin.
Il n'est pas souhaitable que des séquences (telles que les données Standard
MIDI File) contiennent de nombreuses données avec statut omis comme dans
<Exemple 4>. En effet, si la reproduction est interrompue en cours et suivie
d'une avance ou d'un retour rapide, le séquenceur peut ne pas être capable
de transmettre le statut correct, et la source sonore interprètera mal les
données. Veillez à donner un statut à chaque élément.
Il est aussi nécessaire que le réglage de RPN ou NRPN et celui de valeur
soient faits dans le bon ordre. Sur certains séquenceurs, les événements
placés sur le même coup d'horloge ou «clic» (voire sur deux clics consécutifs)
peuvent être émis dans un ordre différent de celui de leur réception. Pour
cette raison, il est préférable de légèrement espacer les événements
(d'environ 1 clic pour TPQN=96, et 5 clics pour TPQN=480).
* TPQN : Ticks Per Quarter Note ou «clics par noire»
■ Examples of system exclusive messages and calculating the checksum
Les messages exclusifs Roland (RQ1, DT1) sont transmis avec un octet de
vérification (checksum) à la fin (avant F7) pour vérifier que le message a été
correctement reçu. La valeur de checksum est déterminée par l'adresse et les
données (ou la taille) du message exclusif transmis.
● Comment calculer le checksum
Le checksum est une valeur dérivée de l'addition de l'adresse et des données
puis de l'inversion des 7 bits faibles.
Voici un exemple de calcul de checksum. Nous considèrerons que dans le
message exclusif que nous transmettons, l'adresse est aa bb ccH et les
données ou la taille dd ee ffH.
aa + bb + cc + dd + ee + ff = total
total ÷ 128 = quotient ... reste
128 - reste = checksum
<Exemple 1> Réglage du paramètre commun de Performance REVERB
TYPE surDELAY (DT1).
Le tableau d'adressage des paramètres indique que l'adresse de départ de la
performance temporaire est 01 00 00 00H, que l'adresse offset des paramètres
communs de performance est 00 00H, et que l'adresse de REVERB TYPE est
00 28H. Donc, l'adresse est :
01 00 00 00H
00 00H
+)
00 28H
01 00 00 28H
Comme DELAYest la valeur 06H du paramètre,
F0
41
10
6A
12
01 00 00 28
(1)
(2)
(3)
(4)
(5)
addresse
(1) Statut exclusif
(2) Fabricant (Roland)
(4) Modèle (JV-2080)
(5) Commande (DT1)
Ensuite, nous calculons le checksum.
01H + 00H + 00H + 28H + 06H = 1 + 0 + 0 + 40 + 6 = 47 (somme)
47 (total) ÷ 128 = 0 (quotient) ... 47 (reste)
checksum = 128 - 47 (quotient) = 81 = 51H
Cela signifie que le message transmis sera F0 41 10 6A 12 01 00 00 28 06 51 F7.
<Exemple 2> Demande de données de la partie 3 de la performance
USER:03 (RQ1)
Le tableau d'adressage des paramètres indique que l'adresse de départ de
USER:03 est 10 02 00 00H, que l'adresse offset de la partie 3 de Performance
est 12 00H. Donc, l'adresse est :
10 02 00 00H
+)
12 00H
10 02 12 00H
Comme la taille d'une partie de performance est 00 00 00 19H,
F0
41
10
6A
11
10 02 12 00
(1)
(2)
(3)
(4)
(5)
addresse
(1) Statut exclusif
(2) Fabricant (Roland)
(4) Modèle (JV-2080)
(5) Commande (RQ1)
Ensuite, nous calculons le checksum.
10H + 02H + 12H + 00H + 00H + 00H + 00H + 19H =
16 + 2 + 18 + 0 + 0 + 0 + 0 + 25 = 61 (somme)
61 (total) ÷ 128 = 0 (product) ... 61 (reste)
checksum = 128 - 61 (reste) = 67 = 43H
06
??
F7
donnée checksum
(6)
(3) Unité (17)
(6) EOX
00 00 00 19
??
F7
taille
checksum
(6)
(3) Unité (17)
(6) EOX
193