Implementación MIDI
Ejemplo de un mensaje Exclusive y el cálculo de una
suma de comprobación
Los mensajes Exclusive de Roland (RQ1, DT1) se transmiten con una suma de
comprobación al final (antes de F7) para asegurar que el mensaje se ha transmitido. El valor
de la suma de comprobación está determinado por la dirección y los datos (o tamaño) del
mensaje Exclusive transmitido.
Cómo calcular la suma de comprobación
(los números hexadecimales se indican con una 'H')
La suma de comprobación es un valor derivado de añadir la dirección, el tamaño y la suma
de comprobación en sí, y luego invertir los 7 bits más bajos.
Aquí tiene un ejemplo de cómo calcular una suma de comprobación. Supongamos que en el
mensaje Exclusive que estamos transmitiendo, la dirección es aa bb ccH y los datos o
tamaño es dd ee ffH.
aa + bb + cc + dd + ee + ff = suma
suma / 128 = cociente ... resta
128 - resta = suma de comprobación
<Ejemplo 1> Ajustar REVERB TYPE de PERFORMANCE COMMON a ROOM 3 (DT1)
Según el "Parameter Address Map" (p. 165),la dirección inicial de Temporary Performance
es 01 00 00 00H, la dirección offset de PERFORMANCE COMMON es 00 00H, y la dirección
de REVERB TYPE es 00 14H. Por lo tanto la dirección de CHORUS TYPE de
PERFORMANCE COMMON es;
01 00 00 00H
00 00H
+)
00 14H
01 00 00 14H
ROOM 3 tiene un valor de 02H.
De forma que el mensaje System exclusive que se debe enviar es;
F0
41
10
00 3C
12
(1)
(2)
(3)
(4)
(5)
(1) Exclusive Status
(2) ID (Roland)
(4) Model ID (RS-5/9)
(5) Command ID (DT1)
Después calcule la suma de comprobación.
01H + 00H + 00H + 14H + 02H = 1 + 0 + 0 + 20 + 2 = 23 (suma)
23 (suma) / 128 = 0 (cociente) ... 23 (resta)
suma de comprobación = 128 - 23 (resta) = 105 = 69H
Esto significa que F0 41 10 00 3C 12 01 00 00 14 02 69 F7 es el mensaje que se debe enviar.
<Ejemplo 2> Obtener los datos (RQ1) de la Parte de Interpretación 3 en USER:03
Según el "Parameter Address Map" (p. 165), la dirección inicial de USER:03 es 04 02 00 00H,
y la dirección offset de la Parte de Interpretación 3 es 12 00H.
Por lo tanto la dirección de la Parte de Interpretación 3 en USER:03 es;
04 02 00 00H
+)
12 00H
04 02 12 00H
Como el tamaño de la Parte de Interpretación es 00 00 00 21H, el mensaje System exclusive que
se debe enviar es;
F0
41
10
00 3C
11
(1)
(2)
(3)
(4)
(5)
(1) Exclusive Status
(2) ID (Roland)
(4) Model ID (RS-5/9)
(5) Command ID (RQ1)
Después calcule la suma de comprobación.
04H + 02H + 12H + 00H + 00H + 00H + 00H + 21H = 4 + 2 + 18 + 0 + 0 + 0 + 0 + 33 = 57 (suma)
57 (suma) / 128 = 0 (cociente) ... 57 (resta)
suma de comprobación = 128 - 57 (resta) = 71 = 47H
Esto significa que F0 41 10 00 3C 11 04 02 12 00 00 00 00 21 47 F7 es el mensaje que se debe
enviar.
<Ejemplo 3> Obtener información Temporary Performance (RQ1)
Según el "Parameter Address Map" (p. 165), la dirección inicial de Temporary Performance
está asignada de la siguiente manera:
170
01 00 00 14
02
??
address
data
checksum
(3) Device ID (17)
(6) End of Exclusive
04 02 12 00
00 00 00 21
??
address
data
checksum
(3) Device ID (17)
(6) End of Exclusive
01 00 00 00H
01 00 10 00H
01 00 1F 00H
Como el tamaño de los datos de la Parte de Interpretación es 00 00 00 21H, la suma del
tamaño y la dirección inicial de la Parte 16 en Temporary Performance será;
01 00 1F 00H
+) 00 00 00 21H
01 00 1F 21H
Y el tamaño que se debería obtener es;
01 00 1F 21H
-) 01 00 00 00H
00 00 1F 21H
De forma que el mensaje System exclusive que se debe enviar es;
F0
41
10
(1)
(2)
(3)
(1) Exclusive Status
(4) Model ID (RS-5/9)
Después calcule la suma de comprobación.
01H + 00H + 00H + 00H + 00H + 00H + 1FH + 21H = 1 + 0 + 0 + 0 + 0 + 0 + 31 + 33 = 65 (suma)
65 (suma) / 128 = 0 (cociente) ... 65 (resta)
suma de comprobación = 128 - 65 (resta) = 63 = 3FH
Esto significa que F0 41 10 00 3C 11 01 00 00 00 00 00 1F 21 3F F7 es el mensaje que se debe
enviar.
F7
<Ejemplo 4> Producir información Temporary Performance combinada y Temporary Tone
(6)
completo e información Drum Set (RQ1)
* La información producida es la misma que al transmitir Bulk Dump:Temporary en
modo Utility.
Según el "Parameter Address Map" (p. 165), la dirección inicial de los parámetros anteriores
se asigna de la forma siguiente:
01 00 00 00H
02 00 00 00H
02 01 00 00H
:
02 0F 00 00H
03 00 00 00H
03 01 00 00H
Como el tamaño de los datos de Drum Set es 00 00 05 00H, la suma del tamaño y de la
dirección de inicio de Temporary DrumSet 2 será;
03 01 00 00H
+) 00 00 05 00H
03 01 05 00H
Y el tamaño que se debería obtener es;
F7
03 01 05 00H
-) 01 00 00 00H
(6)
02 01 05 00H
De forma que el mensaje System exclusive que se debe enviar es;
F0
41
10
(1)
(2)
(3)
(1) Exclusive Status
(4) Model ID (RS-5/9)
Después calcule la suma de comprobación.
01H + 00H + 00H + 00H + 02H + 01H + 05H + 00H = 1 + 0 + 0 + 0 + 2 + 1 + 5 + 0 = 9 (suma)
9 (suma) / 128 = 0 (cociente) ... 9 (resta)
suma de comprobación = 128 - 9 (resta) = 119 = 77H
Esto significa que F0 41 10 00 3C 11 01 00 00 00 02 01 05 00 77 F7 es el mensaje que se debe
enviar.
Temporary Performance Common
Temporary Performance Part 1
Temporary Performance Part 16
00 3C
11
01 00 00 00
00 00 1F 21
(4)
(5)
address
(2) ID (Roland)
(3) Device ID (17)
(5) Command ID (RQ1)
(6) End of Exclusive
Temporary Performance Common
Temporary Tone (Parte 1)
Temporary Tone (Parte 2)
:
Temporary Tone (Parte 16)
Temporary DrumSet 1
Temporary DrumSet 2
00 3C
11
01 00 00 00
02 01 05 00
(4)
(5)
address
(2) ID (Roland)
(3) Device ID (17)
(5) Command ID (RQ1)
(6) End of Exclusive
??
F7
data
checksum
(6)
??
F7
data
checksum
(6)