I I I I m m m m p p p p l l l l e e e e m m m m e e e e n n n n t t t t a a a a c c c c i i i i ó ó ó ó n n n n M M M M I I I I D D D D I I I I
4.Material Suplementario
Tabla Decimal y Hexadecimal
(Se añade una "H" al final de los números de notación hexadecimal).
En documentación MIDI, los valores y direcciones/tamaños de datos de los mensajes
Exclusive, etc., se expresan como valores hexadecimales para cada 7 bits.
La siguiente tabla muestra la correspondencia con los números decimales.
+——————+——————++——————+——————++——————+——————++——————+——————+
|
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
* Los valores Decimales como el canal MIDI, el parámetro Bank Gelect, y Program Change
aparecen en la lista en una categoría superior a los valores dados en la tabla superior.
* Un byte de 7-bits puede expresar datos de 128 pasos. Para datos en que se requiere
mayor precisión, deberá usar dos o más bytes. Por ejemplo, dos números hexadecimales
aa bbH que expresan 2 bytes de 7 bits, indicarían un valor: aa x 128+bb.
* En el caso de valores con un signo +/-, 00H = -64, 40H = +/-0, y 7FH = +63, para que la
expresión decimal sea 64 menor que el valor dado en el recuadro superior. En el caso de
dos tipos, 00 00H = -8192, 40 00H = +/-0, y 7F 7FH = +8191. P.ej., Si aa bbH estuviera
expresado como decimal, este valor seria aa bbH - 40 00H = aa x 128+bb - 64 x 128.
* Los datos marcados "Use nibbled data" son expresados hexadecimalmente en unidades
de 4-bits. Un valor expresado como una porción de 2-bytes 0a 0bH tiene el valor de x
16+b.
<Ejemplo 1> Cual es la expresión decimal de 5AH?
De la tabla anterior, 5AH = 90
<Ejemplo 2> Cual es la expresión decimal del valor 12 34H dado como
hexadecimal para cada 7 bits?
De la tabla anterior, desde 12H = 18 y 34H = 52
18 x 128+52 = 2356
<Ejemplo 3> Cual es la expresión decimal del valor 0A 03 09 0D?
De la tabla anterior, desde 0AH = 10, 03H = 3, 09H = 9, 0DH = 13
((10 x 16+3) x 16+9) x 16+13 = 41885
<Ejemplo 4> Cual es la expresión de la porción del valor decimal 1258?
16 ) 1258
16 )
78 ...10
16 )
4 ...14
0 ... 4
Como la tabla anterior, 0 = 00H, 4 = 04H, 14 = 0EH, 10 = 0AH, el resultado es: 00 04 0E 0AH.
1 1 1 1 6 6 6 6 8 8 8 8
||
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 |
Ejemplos de los mensajes MIDI actuales
<Ejemplo 1> 92 3E 5F
"9n" es el estado Note-on, y "n" es el número de canal MIDI. Como 2H = 2, 3EH = 62, y
5FH = 95, se trata de un mensaje Note-on con MIDI CH = 3, número de nota 62 (el nombre
de nota es D4), y el parámetro Velocity 95.
<Ejemplo 2> CE 49
|
"CnH" es el estado de Cambio de Programa, y "n"es el número de canal MIDI. Teniendo en
cuenta que EH = 14 y 49H = 73, se trata de un mensaje de Cambio de Programa con MIDI
CH = 15, número de Programa 74.
<Ejemplo 3> EA 00 28
"EnH" es el estado de Cambio de Afinación (Pitch Bend), y "n" es el número de canal
MIDI. El 2º byte (00H = 0) es LSB y el 3er byte (28H = 40) es MSB, pero el valor de Cambio
de Afinación es un número marcado en que 40 00H (= 64 x 12+80 = 8192) es 0, por lo tanto
este valor de Cambio de Afinación es 28 00H - 40 00H = 40 x 12+80 - (64 x 12+80) = 5120 -
8192 = -3072
Si la sensibilidad del parámetro Pitch Bend está ajustada en 2 semitonos, -8192 (00 00H)
causará un Cambio de Afinación de -200 centésimas. En este caso -200 x (-3072) ÷ (-8192) = -
75 centésimas de Cambio de Afinación se aplicarán al canal MIDI 11.
<Ejemplo 4> B3 64 00 65 00 06 0C 26 00 64 7F 65 7F
"BnH" es el estado de Cambio de Control, y el número de canal MIDI. El 2º byte es el
número de control para los Cambios de Control y el 3er byte es el valor. En un caso en que
dos o más mensajes consecutivos tengan el mismo estado, MIDI mediante una orden
llamada "running state" ("estado en funcionamiento") es capaz de omitir el estado de bits
de los mensajes siguientes a partir del segundo mensaje. Por lo tanto, los mensajes de la
parte superior tienen el siguiente significado:
B3
64 00
(B3)
65 00
(B3)
06 0C
(B3)
26 00
(B3)
64 7F
(B3)
65 7F
En otras palabras, los mensajes superiores, especifican un valor de 0C 00H para el número
de parámetro RPN, 00 00H en el canal MIDI 4, y luego ajustan el número del parámetro
RPN en 7F 7FH.
El número de parámetro RPN 00 00H es "Pitch Bend Sensitivity", y el parámetro MSB del
valor indica unidades de semitono, por lo tanto un valor de 0CH = 12 ajusta el máximo
rango de Cambio de Afinación en +/-12 semitonos (1 octava). (En los generadores de
sonido GS, el parámetro LSB de la sensibilidad Pitch Bend es ignorado, pero LSB debe ser
transmitido igualmente (conun valor de 0) para que la operación pueda corregirse en cada
dispositivo).
Una vez especificado el número de parámetro para RPN o NRPN, todos los mensajes de
entrada de datos (Data Entry messages) transmitidos en este mismo canal, serán válidos,
por lo tanto después de la transmisión del valor deseado, es una buena idea ajustar el
número de parámetro en 7F 7FH para evitar accidentes. Esta es la razón de la situación de
(B3) 64 7F (B3) 65 7F al final.
No es aconsejable para los datos de interpretación (como datos de archivos MIDI estándar)
que contengan demasiados eventos en el "estado en funcionamiento" como se explica en el
<Ejemplo 4>. Esto se debe a que si la reproducción se interrumpe durante la canción y se
retrocede o se avanza, el secuenciador puede no ser capaz de transmitir el estado correcto
y el generador de sonido interpretaría los datos erróneamente. Es recomendable dar a cada
evento su propio estado.
También es necesario que el ajuste del número de parámetro RPN o NRPN y el ajuste del
valor se realizen en el orden correcto. En algunos secuenciadores, los eventos situados en la
misma posición del reloj (o consecutiva) pueden transmitirse en un orden diferente a su
recepción. Por esta razón es una buena idea alterar ligeramente el tiempo de cada evento
(aproximadamente 1 tick para TPQN = 96, y aproximadamente 5 ticks para TPQN = 480).
* TPQN: nº de ticks/1 negra
MIDI ch.4, Byte inferior del número de parámetro RPN:
(MIDI ch.4) Byte superior del número de parámetro RPN: 00H
(MIDI ch.4) Byte superior del valor del parámetro:
(MIDI ch.4) Byte inferior del valor del parámetro:
(MIDI ch.4) Byte inferior del número de parámetro RPN:
(MIDI ch.4) Byte superior del número de parámetro RPN: 7FH
00H
0CH
00H
7FH