14-01-24 19.03
Ciao a tutti,
devo impostare una Novation 49SL MKii e una Novation Zero SL MKii (entrambe aggiornate all'ultimo firmware disponibile versione 1.3.14) e che sono praticamente uguali per la programmazione, per controllare l'expander Roland Integra7 tramite messaggi sysex perchè alcuni parametri dell'expander si raggiungono solo in questo modo.
Ora il protocollo Roland per il calcolo del checksum richiede, per una striga "tipo", come ad esempio la seguente, che il calcolo venga fatto sugli ultimi 5 byte ( 4 di address e 1 di dati) cioè:
n.byte 1 2 3 4 5 6 7 8 9 10 11 12
(F0) 41 10 00 00 64 12 01 00 00 00 01 7E (F7)
-----> |_____________| |__| |___________||__| |__| <----------Protocollo Roland
-------> ID strumento DT1 address -- data checksum
----------------------------------> |_____________|
--------------------> valori per il calcolo del checksum
Entrambi i controller Novation invece, inserendo i valori della stringa sysex, eseguono il checksum automatico in uscita non sugli ultimi 5 byte ( 4 di address e 1 di dati) della stringa ma sugli ultimi 7 byte comprendendo 2 byte che non riguardano l'address ovvero, sempre riferendosi alla stringa di prima:
n. byte 1 2 3 4 5 6 7 8 9 10 11 12
-----------------------------------------------------------------DV CS
byte (F0) 41 10 00 00 64 12 01 00 00 00 01 08(F7)
------------> |______________| |__| |__________||__| |__| <---------- "ROLAND" sull'opzione Novation
-----------------> ID strumento DT1 address data checksum (errato)
--------------------------------> |_____________________|
----> valori per il calcolo del checksum con le Novation
Il segnale in uscita dalle Novation è stato controllato e verificato con MIDI-OX.
Integra7 ignora ovviamente il comando ricevuto con checksum sbagliato.
Ho rilevato che il calcolo del checksum che fa Novation parte sempre dal quinto byte (escludendo F0 e F7) ma non dovrebbe essere così perchè essendo le stringhe che Novation può gestire composte da solo 1 byte variabile di dati (DV) è ovvio che sono sempre e solo gli ultimi 5 byte a determinare il checksum ( 4 di address e 1 di dati)
Dato che tutti i modelli Roland calcolano il checksum partendo dal primo byte dell'address e non considerano parte dell' ID strumento o il DT1 (come è ovvio che sia) ritengo che ci sia un problema sulle Novation ma che presentandosi in entrambe possa essere una programmazione errata del firmware.
Inoltre ciò accade anche immettendo i dati direttamente dallo strumento e non tramite l'editor per le SL MKII che, come si sa, non supporta l'opzione "ROLAND" sulle strighe del sysex.
Finora non ho rilevato il problema perchè gli ID di altri strumenti Roland usati (tipo Jv1080 ecc) sono composti di 2 byte e non 4 come l'Integra7 e quindi (con la stringa di 10 byte e non 12) il checksum che fa Novation parte dal punto giusto ovvero dopo 4 byte cioè dove inizia l'address.
C'è qualcuno che ha o ha avuto lo stesso problema?
C'è qualcuno che può provare con una terza Novation SL MKii?
Sto sbagliando io qualcosa ?
Grazie per la collaborazione.