6. Apéndices
● Tabla decimal y hexadecimal
(Los números hexadecimales se indican con una H.)
En la documentación MIDI, los valores de la información y las direcciones/tamaños de los
mensajes system exclusive, etc.
se expresan en valores hexadecimales por cada 7 bits.
La siguiente tabla indica cómo éstos corresponden a números decimales.
+——————+——————++——————+——————++——————+——————++——————+——————+
| dec
| hex
|| dec
|
hex || dec
+——————+——————++——————+——————++——————+——————++——————+——————+
|
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 ||
+——————+——————++——————+——————++——————+——————++——————+——————+
(*) Los valores decimales como el canal MIDI, la selección de bando y el cambio de
programa se indican en uno (1) más que los valores dados en la tabla anterior.
(*) Un byte de 7 bits puede expresar información en un intervalo de 128 pasos. La
información en la que se requiere más precisión, debemos utilizar dos o más bytes. Por
ejemplo, dos números hexadecimales aa bbH expresando dos bytes de 7 bits indican un
valor de aa x 128 + bb.
(*) En el caso de valores que tienen un signo +/-, 40H=-64, 00H=0, 3FH=+63, de forma que
la expresión decimal debería ser de 64 menos que el valor proporcionado en la tabla
anterior.
En el caso de dos tipos, 40 00H = -8192, 00 00H = 0, 3F 7FH = +8191.
(*) Los datos marcados como "" (incompleto) se expresan en hexadecimal en unidades de 4-
bits.
Un valor expresado como un 20-byte incompleto 0a 0bH tiene un valor de x 16 + b.
<Ej.1> ¿Qué es 5AH en un sistema decimal?
5AH = 90 según la tabla anterior.
<Ej.2> ¿A cuantos hexadecimales por cada 7 bits equivale 12034H en sistema decimal?
12H = 18, 34H = 52 según la tabla anterior. Es decir, 18 x 128 + 52 = 2356.
<Ej.3> ¿Cuánto es en sistema no enteros lo que en sistema decimal es 0A 03 09 0D?
0AH = 10, 03H = 3, 09H = 9, 0DH = 13 según la tabla anterior.
Es decir, ((10 x 16 + 3) x 16 + 9) x 16 +3 = 41885.
<Ex.4> ¿Cuanto es en sistema decimal lo que en sistema de no enteros es 1258?
____
16)1258
16)
78 ... 10
16)
4 ... 14
0 ...
4
0 = 00H, 4 = 04H, 14 = 0EH, 10 = 0AH según la tabla anterior. De forma que es 00 04 0E
0AH.
● Ejemplo de mensajes system exclusive y
cálculo de la suma de comprobación
En el mensaje Roland system exclusive (DT1), la suma de comprobación se añade al final de
la información transmitida (frente a F7) para comprobar que el mensaje se ha recibido
correctamente.
El valor de la suma de comprobación se define mediante la dirección y la información (o
tamaño) del mensaje exclusivo del sistema que se debe transmitir.
❍Modo de calcular la suma de comprobación (el número hexadecimal se
indica con una H.)
La suma de comprobación es un valor inferior a 7 bits de la suma de la dirección, tamaño y
la suma de comprobación será 0.
Si la dirección del mensaje exclusivo del sistema que hay que transmitir es aa bb ccH y la
información o el tamaño dd ee ffH,
aa + bb + cc + dd + ee + ff = suma
sum / 128 = cociente y resto
Cuando el resto es 0, 0 = suma de comprobación
Cuando el resto es distinto a 0, 128 – resto = suma de comprobación.
| hex
|| dec
| hex
|
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 |
■ Comando de Control de equipo MIDI (MMC),
referencia de campos de información/respuesta
● Comandos reconocidos
Command
Action
-----------------
-------
01H STOP
STOP
02H PLAY
PLAY
03H DEFERRED PLAY
PLAY
04H FAST FORWARD
FF
05H REWIND
REW
06H RECORD STROBE
REC / PUNCH IN
07H RECORD EXIT
PUNCH OUT
0DH MMC RESET
RESET
40H WRITE
write to Information fields
41H MASKED WRITE
Set Track Status Information Fields
44H 00H LOCATE I/F
LOCATE (Read Locator)
44H 01H LOCATE TARGET
LOCATE (Designated Time)
4CH MOVE
Move between Information
● Comandos transmitidos
Command
Action
-----------------
------
01H STOP
STOP
03H DEFERRED PLAY
PLAY
06H RECORD STROBE
REC / PUNCH IN
07H RECORD EXIT
PUNCH OUT
0DH MMC RESET
RESET
44H 01H LOCATE TARGET
LOCATE
● Campos de información válidos/respuesta
Command
Action
----------------------
-----------
01H SELECTED TIME CODE
Current Time
08H GP0 / LOCATE POINT
Locator 1
09H GP1
Locator 2
0AH GP2
Locator 3
0BH GP3
Locator 4
0CH GP4
Locator 5
0DH GP5
Locator 6
0EH GP6
Locator 7
0FH GP7
Locator 8
4FH TRACK RECORD READY
Track Status
Valid Commands
--------------------------
MOVE(FROM)
MOVE(FROM), MOVE(TO), WRITE
MOVE(FROM), MOVE(TO), WRITE
MOVE(FROM), MOVE(TO), WRITE
MOVE(FROM), MOVE(TO), WRITE
MOVE(FROM), MOVE(TO), WRITE
MOVE(FROM), MOVE(TO), WRITE
MOVE(FROM), MOVE(TO), WRITE
MOVE(FROM), MOVE(TO), WRITE
MASKED WRITE, WRITE
99