Ejemplo de un mensaje Exclusive y del cálculo
del parámetro Checksum
Los mensajes Exclusive de Roland (RQ1, DT1) se transmiten con un valor Checksum al final
(antes de F7) para asegurarse de la correcta recepción del mensaje. El valor del parámetro
Checksum es determinado por la dirección y los datos (o tamaño) del mensaje Exclusive
transmitido.
•
Cómo calcular el parámetro Checksum
(Los números hexadecimales se indican mediante "H")
EL valor Checksum deriva de añadir la dirección, tamaño y el propio Checksum e invertir
los 7 bits inferiores.
Este es un ejemplo del cálculo del parámetro Checksum. Supongamos que la dirección del
mensaje Exclusive que estamos transmitiendo es aa bb cc ddH y los datos/tamaño es ee
ffH.
aa + bb + cc + dd + ee + ff = suma
suma ÷ 128 = cociente ... resto
128 - resto = checksum
<Ejemplo 1> Ajuste de CHORUS TYPE del PATCH a CHORUS 1 (DT1)
Según el "Mapa de Direcciones de Parámetros" (pág. 159), la dirección de inicio del Patch
Temporal es 10 00 00 00H, la dirección por defecto del PATCH CHORUS en PATCH es 04
00H, y la dirección del parámetro CHORUS TYPE es 00 00H. Entonces, la dirección del
parámetro CHORUS TYPE de PATCH CHORUS es;
10 00 00 00H
04 00H
+)
00 00H
10 00 04 00H
CHORUS 1 tiene el valor 01H.
Por lo tanto el mensaje System Exclusive que debería enviarse es;
F0
41
10
00 53
12
(1)
(2)
(3)
(4)
(5)
(1) Estado Exclusive
(2) ID (Roland)
(4) ID del Modelo (V-Synth) (5) ID de órdenes (DT1)
Luego se calcula el valor Checksum.
10H + 00H + 04H + 00H + 01H = 16 + 0 + 4 + 0 + 1 = 21 (suma)
21 (suma) ÷ 128 = 0 (cociente) ... 21 (resto)
Checksum = 128 - 21 (resto) = 107 = 6BH
Esto signifiica que F0 41 10 00 53 12 10 00 04 00 01 6B F7 es el mensaje que debe enviarse.
<Ejemplo 2> Obtención de datos (RQ1) del PATCH MFX en el PATCH:003
Según el"Mapa de Direcciones de Parámetros" (pág. 159), la dirección de inicio del
PATCH:003 es 20 02 00 00H, y la dirección por defecto del PATCH MFX es 00 02 00H.
Entonces, la Dirección de inicio del PATCH MFX en el PATCH:003 es;
20 02 00 00H
+)
00 02 00H
20 02 02 00H
Como el tamaño de PATCH MFX es 00 00 01 04H, el mensaje System Exclusive que debería
enviarse es;
F0
41
10
00 53
11
(1)
(2)
(3)
(4)
(5)
(1) Estado Exclusive
(2) ID (Roland)
(4) ID del Modelo (V-Synth) (5) ID de órdenes (DT1)
Luego se calcula el valor Checksum.
20H + 02H + 02H + 00H + 00H + 00H + 01H + 04H = 32 + 2 + 2 + 0 + 0 + 0 + 1 + 4
= 41 (suma)
117 (suma) ÷ 128 = 0 (cociente) ... 41 (resto)
Checksum = 128 - 41 (resto) = 87 = 57H
Esto significa que F0 41 10 00 53 11 20 02 02 00 00 00 01 04 57 F7 es el mensaje System
Exclusive que debería enviarse.
10 00 04 00
01
??
F7
dirección
datos
checksum
(6)
(3) ID del Dispositivo (17)
(6) Fin del mensaje Exclusive
20 02 02 00
00 00 01 04
??
dirección
datos
checksum
(3) ID del Dispositivo (17)
(6) Fin del mensaje Exclusive
<Ejemplo 3> Obtención de datos (RQ1) del Patch Temporal (Part 1)
cf.) Se trata de la misma operación que la función Transmisión de Datos (Data Transfer) en
el modo Utility con las opciones "PATCH: TEMP" (parámetro fuente).
Según el "Mapa de Direcciones de Parámetros" (pág. 159), la Dirección de inicio del Patch
Temporal (Part 1) se asigna del modo siguiente:
10 00 00 00
Patch Temporal (Parte 1)
La dirección por defecto del Patch también se asigna del modo siguiente:
00 00 00
Patches Comunes (Patch Common)
:
00 10 00
Patches del Oscilador (Zona 1)
:
00 20 00
Patches Envelope (Zona 1)
:
00 40 00
Patches LFO (Zona 1)
:
00 50 00
Patches COSM1 (Zona 1)
:
00 60 00
Patches COSM2 (Zona 1)
:
00 70 00
Patches de Arpegio (Nota 1)
:
00 7F 00
Patches de Arpegio (Nota 16)
Debido a que el tamaño de los datos de los Patches de Arpegio es 00 00 00 42H, la suma del
tamaño y de la dirección de inicio de los Patches Temporales de Arpeggio (Nota 16) será;
10 00 00 00H
00 00 7F 00H
+) 00 00 00 42H
10 00 7F 42H
El tamaño que debería obtenerse sería;
10 00 7F 42H
-) 10 00 00 00H
00 00 7F 42H
Entonces, el mensaje System Exclusive que debería enviarse es;
F0
41
10
00 53
(1)
(2)
(3)
(4)
(1) Estado Exclusive
(4) ID del Modelo (V-Synth) (5) ID de órdenes (DT1)
Mediante el cálculo del parámetro checksum como se muestra en el <Ejemplo 2>,
obtenemos un mensaje F0 41 10 00 53 11 10 00 00 00 00 00 7F 42 2F F7 para ser transmitido.
F7
(6)
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
11
10 00 00 00
00 00 7F 42
(5)
dirección
datos
(2) ID (Roland)
(3) ID del Dispositivo (17)
(6) Fin del mensaje Exclusive
??
F7
checksum
(6)
1 1 1 1 6 6 6 6 9 9 9 9