21-01-24 09.11
Grazie per le ultime risposte.
Ho trovato la spiegazione che potrebbe essere utile a coloro che usano Novation SL MKii e/o Roland Integra7.
Inizialmente non funzionava la trasmissione dati sysex tra SL MKII e Integra7 e questo era dovuto probabilmente a un mio errore; ciò mi ha portato ad approfondire trovando che:
1. Novation SL MKII calcola il cheksum Roland partendo sempre dal quinto byte.
Il checksum è quindi corretto solo per gli strumenti Roland che hanno un ID strumento composto solo da 1 byte (1 numero).
In questo caso infatti è dal quinto byte che inizia l'addess del parametro da modificare.
Ad esempio Roland JV1080 ha:
41(ID Roland) 17( canale) 6A (ID strumento) 12 (DT1) --> inizio calcolo ckechsum sia per roland che per SL MKII --> 00 00 ........(Address) CS (checksum).
Integra7 però ha un ID strumento composto da 3 byte:
41(ID Roland) 17( canale) 00 00 (ID1-2 strumento) --> inizio calcolo checksum per SL MKII --> 64 (ID3 strumento) 12 (DT1) --> inizio calcolo ckechsum per roland --> 00 00 ........(Address) CS (checksum).
Quindi SL MKII considera nel checksum anche i byte 64 e 12 che non centrano con l'addess calcolando così un checksum sbagliato.
Questo l'ho verificato anche con un mio vecchio sequencer Roland MV30 del 1990 che ha una funzione per calcolare il checksum e anche lui lo calcola dal quinto byte e dunque fornisce un checksum per l'Integra7 uguale a quello calcolato con la SL MKII (cioè sbagliato).
[CONCLUSIONE 1: SL MKII calcola in modo corretto il checksum roland solo per gli strumenti roland più vecchi (quelli che hanno un unico byte per ID strumento)
2. Allora Integra7 non dovrebbe rispondere a questi sysex con checksum errato.
E invece lo fa.
Ho accertato che nel mio strumento, aggiornato all'ultimo firmware 1.21, il parametro viene modificato qualunque valore assuma il byte che rappresenta il checksum del sysex quindi da 00 a 7F.
L'importante è che, dopo il byte che rappresenta il valore da modificare, ci sia sempre il dodicesimo byte che rappresenta il checksum, giusto o sbagliato che sia.
Ad esempio il sysex con checksum corretto per impostare il reverbero generale su Room2 è:
(F0) 41 17 00 00 64 12 18 00 06 00 02 60 (F7) (checksum corretto)
ma lo stesso risultato si ottiene con un qualunque sysex:
(F0) 41 17 00 00 64 12 18 00 06 00 02 XX (F7) ( con XX un qualsiasi valore tra 00 a 7F).
CONCLUSIONE 2: Integra7 risponde alla modifica di un singolo parametro tramite sysex anche senza calcolare il checksum; l'importante è che il messaggio sia composto di dodici byte.
Ora riesco a modificare qualunque parametro dell'Integra7 con la SLMKii tramite i sysex.