Novation SL MKII checksum Roland errato

GBCKEYBOARD 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.
michelet 14-01-24 21.50
A pagina 35 del manuale di SLxxmkII si legge:
ROLAND: il messaggio Sysex contiene due byte variabili e un byte di checksum. Il formato del messaggio è fisso, in modo che che gli ultimi tre byte della stringa sono sempre MSB, poi LSB e poi checksum (escluso il byte F7).
Apparentemente dovrebbe funzionare, perché gli ultimi tre byte corrispondono all'ADDRESS del parametro, poi viene il valore del parametro stesso, infine il diabolico checksum.

Visto che il supporto Novation è sempre molto reattivo e risponde in tempi brevi, ti consiglierei di contattarli.
giannirsc 14-01-24 22.22
Non so come aiutarti però posso dirti che collegando una A500 ad integra7 riuscivo tramite sysex a pilotare i drawbar della sezione organ tramite gli slider…passato a novation mk2 non c’è stato modo di inviare i sysex ad integra7.
GBCKEYBOARD 14-01-24 22.34
@ michelet
A pagina 35 del manuale di SLxxmkII si legge:
ROLAND: il messaggio Sysex contiene due byte variabili e un byte di checksum. Il formato del messaggio è fisso, in modo che che gli ultimi tre byte della stringa sono sempre MSB, poi LSB e poi checksum (escluso il byte F7).
Apparentemente dovrebbe funzionare, perché gli ultimi tre byte corrispondono all'ADDRESS del parametro, poi viene il valore del parametro stesso, infine il diabolico checksum.

Visto che il supporto Novation è sempre molto reattivo e risponde in tempi brevi, ti consiglierei di contattarli.
Infatti dovrebbe; però include nel checksum anche un byte dell'ID e il DT1.

Mi chiedo perchè Roland non abbia messo nel System la possibilità di escludere il checksum così chi vuole sicurezza nel trasferimento dati lo lascierebbe attivo e a chi non gli importa niente lo disattiverebbe.
Semplice.

Contatterò sicuramente Novation però volevo sapere se qualcun altro ha riscontratrato e forse risolto tale anomalia.
michelet 14-01-24 22.37
@ giannirsc
Non so come aiutarti però posso dirti che collegando una A500 ad integra7 riuscivo tramite sysex a pilotare i drawbar della sezione organ tramite gli slider…passato a novation mk2 non c’è stato modo di inviare i sysex ad integra7.
Temo che la risposta di Gianni sia testimonianza della non compatibilità della SL mkII con Integra. Dovresti quindi passare ad una Roland A800 come tastiera di controllo.
GBCKEYBOARD 14-01-24 22.40
@ giannirsc
Non so come aiutarti però posso dirti che collegando una A500 ad integra7 riuscivo tramite sysex a pilotare i drawbar della sezione organ tramite gli slider…passato a novation mk2 non c’è stato modo di inviare i sysex ad integra7.
I drawbar sono alcuni dei parametri che infatti voglio controllare. Forse è lo stesso problema. Se hai ancora novation sl mkii riesci a fare una prova magari con il sysex che ho riportato sopra vedendo cosa rilascia dal midi/usb out?
SL MKii è una buona macchina ma così è zoppa.
GBCKEYBOARD 14-01-24 22.46
@ michelet
Temo che la risposta di Gianni sia testimonianza della non compatibilità della SL mkII con Integra. Dovresti quindi passare ad una Roland A800 come tastiera di controllo.
Incomincio a pensarlo anch'io.

Che tu sappia oltre a Roland ci sono altri controller con o senza tastiera che calcolano in continuo il checksum roland e abbiano anche le porte midi a 5 pin?
michelet 14-01-24 22.53
@ GBCKEYBOARD
Incomincio a pensarlo anch'io.

Che tu sappia oltre a Roland ci sono altri controller con o senza tastiera che calcolano in continuo il checksum roland e abbiano anche le porte midi a 5 pin?
Al momento non me ne vengono in mente, proprio perché il checksum è una specifica caratteristica di Roland che, come tale, produce controller che lo calcolano. Per assurdo, ho dato un'occhiata veloce al manuale della SL mkIII e non si fa assolutamente menzione del sys-ex e tantomeno del checksum.
maxpiano69 15-01-24 00.44
@ giannirsc
Non so come aiutarti però posso dirti che collegando una A500 ad integra7 riuscivo tramite sysex a pilotare i drawbar della sezione organ tramite gli slider…passato a novation mk2 non c’è stato modo di inviare i sysex ad integra7.
Confermo (anni fa presi una A500Pro per pilotare i drawbars del FP7 via Sysex), ma se nel setup ci fosse un computer/tablet si potrebbe ovviare alla cosa con un po' di MIDI Scripting, altrimenti ci vuole una master Roland che sappia calcolare quel checksum proprietario.
michelet 15-01-24 09.40
@ maxpiano69
Confermo (anni fa presi una A500Pro per pilotare i drawbars del FP7 via Sysex), ma se nel setup ci fosse un computer/tablet si potrebbe ovviare alla cosa con un po' di MIDI Scripting, altrimenti ci vuole una master Roland che sappia calcolare quel checksum proprietario.
Ai vecchi tempi, quando utilizzavo MacOS 9.x esistevano delle piccole applicazioni che aiutavano a calcolare il checksum. Ricordo anche un fantastico software per la riproduzione dei file MIDI GM/GS che faceva anche da editor per SC-55/88 e che aveva una finestra apposita dove veniva visualizzata la stringa corrispondente al parametro editato. Erano altri tempi...
Successivamente mi ero costruito una macro con MS Excel per calcolare il checksum o utilizzavo una funzione speciale del sequencer MotU Digital Performer per ottenerlo.
Con l'andare del tempo, ho fatto sempre meno uso dei messaggi esclusivi di sistema, limitandomi ad una programmazione semplificata di JV-2080, Fantom XR e JD-990. Di recente con Fantom 7 ho abbandonato del tutto le velleità di programmatore, visto che l'offerta di timbriche variegate è così vasta da trascorrere più tempo a selezionarle che ad immaginare possibili modifiche.
GBCKEYBOARD 15-01-24 15.30
@ michelet
Ai vecchi tempi, quando utilizzavo MacOS 9.x esistevano delle piccole applicazioni che aiutavano a calcolare il checksum. Ricordo anche un fantastico software per la riproduzione dei file MIDI GM/GS che faceva anche da editor per SC-55/88 e che aveva una finestra apposita dove veniva visualizzata la stringa corrispondente al parametro editato. Erano altri tempi...
Successivamente mi ero costruito una macro con MS Excel per calcolare il checksum o utilizzavo una funzione speciale del sequencer MotU Digital Performer per ottenerlo.
Con l'andare del tempo, ho fatto sempre meno uso dei messaggi esclusivi di sistema, limitandomi ad una programmazione semplificata di JV-2080, Fantom XR e JD-990. Di recente con Fantom 7 ho abbandonato del tutto le velleità di programmatore, visto che l'offerta di timbriche variegate è così vasta da trascorrere più tempo a selezionarle che ad immaginare possibili modifiche.
Il problema non sono le singole stringhe di sysex il cui checksum si calcola facilmente, come dicevi tu, con un semplice foglio excel o monitorando ciò che invia l'editor di Integra bensì le variazioni di uno slider dove il checksum cambia continuamente. È vero pure che ci si può accontentare delle 6000 patch di Integra; però con qualche ritocco si scoprono sempre nuove sonorità e potenzialità dello strumento. Tra l'altro, se posso, preferisco modificare dalla tastiera piuttosto che dal pc. Provengo da altri tempi.....
Meglio preventivamente incomiciare ad informarmi anche sulla A800 pro; l'ultima master Roland che ho avuto era una A50 circa 25 anni fa. Nel complesso accettabile ma ricordo aftertouch polifonico da azionare con la pressa e un tasto con sensazione di schiacciare un pesce lesso.
Comunque vediamo se qualcun altro ha una soluzione per la Novation....


giannirsc 15-01-24 16.02
questo è un video dove gestivo Integra 7 con i fader della a500.
In descrizione ci sono i parametri sysex che se non ricordo male però funzionavano solo sul canale Midi 1 ma non ne sono sicuro perché sono passati più di 10 anni.
Poi sono passato alla novation SL mk2 e non sono mai riuscito a riprodurre questa situazione
maxpiano69 15-01-24 16.52
@ GBCKEYBOARD
Il problema non sono le singole stringhe di sysex il cui checksum si calcola facilmente, come dicevi tu, con un semplice foglio excel o monitorando ciò che invia l'editor di Integra bensì le variazioni di uno slider dove il checksum cambia continuamente. È vero pure che ci si può accontentare delle 6000 patch di Integra; però con qualche ritocco si scoprono sempre nuove sonorità e potenzialità dello strumento. Tra l'altro, se posso, preferisco modificare dalla tastiera piuttosto che dal pc. Provengo da altri tempi.....
Meglio preventivamente incomiciare ad informarmi anche sulla A800 pro; l'ultima master Roland che ho avuto era una A50 circa 25 anni fa. Nel complesso accettabile ma ricordo aftertouch polifonico da azionare con la pressa e un tasto con sensazione di schiacciare un pesce lesso.
Comunque vediamo se qualcun altro ha una soluzione per la Novation....


Per la Novation, come ti ho scritto prima, l'unica soluzione è un processore MIDI esterno (che sia una app su computer o un box tipo Sipario o Bome MIDI Translator) in grado di ricalcolare il checksum in maniera parametrica
GBCKEYBOARD 15-01-24 17.30
@ giannirsc
questo è un video dove gestivo Integra 7 con i fader della a500.
In descrizione ci sono i parametri sysex che se non ricordo male però funzionavano solo sul canale Midi 1 ma non ne sono sicuro perché sono passati più di 10 anni.
Poi sono passato alla novation SL mk2 e non sono mai riuscito a riprodurre questa situazione
Ok grazie giannirsc
GBCKEYBOARD 15-01-24 17.40
@ maxpiano69
Per la Novation, come ti ho scritto prima, l'unica soluzione è un processore MIDI esterno (che sia una app su computer o un box tipo Sipario o Bome MIDI Translator) in grado di ricalcolare il checksum in maniera parametrica
Mi informo anche su questa soluzione. Potrebbe essere un'alternativa alla A800 Pro cercando di sfruttare ciò che ho già.
Grazie per il consiglio maxpiano69
GBCKEYBOARD 16-01-24 17.19
@ giannirsc
questo è un video dove gestivo Integra 7 con i fader della a500.
In descrizione ci sono i parametri sysex che se non ricordo male però funzionavano solo sul canale Midi 1 ma non ne sono sicuro perché sono passati più di 10 anni.
Poi sono passato alla novation SL mk2 e non sono mai riuscito a riprodurre questa situazione
Scusa giannirsc, hai ancora la novation SL mkii? Oggi, nonostante i checksum sbagliati in uscita, sono riuscito comunque a comandare i drawbar dell'Integra7 con gli slider della Novation tramite i sysex e volevo sapere se potevi cortesemente fare una prova anche tu sulla tua macchina se ce l'hai ancora. Ti posso condividere la patch della Novation.
Sembra che tutto funzioni ma vorrei una conferma perchè la cosa è strana: Novation invia un sysex con checksum sbagliato (lo vedo perchè ho interposto MIDI-OX tra la Novation e Integra), Integra lo riceve e comunque esegue il comando. Questo anche con altri parametri non solo per i drawbar.
Quello che ho cambiato rispetto a quanto scritto in precedenza è che nella Novation ho impostato il valore di DV da 0 a 127 e non da -63 a +63 come stavo provando l'altro ieri lavorando sulle frequenze del master EQ (che ora rispondono ai comandi sysex ma sempre con ckechsum sbagliato della stesso offset rispetto al valore corretto).
Dunque ho bisogno di sapere se sono un miracolato o Novation riesce a pilotare ugualmente integra con i sysex.
maxpiano69 16-01-24 17.54
Forse avevi sbagliato qualcos'altro, perchè i sysex sono sempre dati esadecimali senza segno (0-127 o -63+63 sono forse il modo di visualizzarli ma il dato nel messaggio sysex sarà sempre tra 00h e 7Fh).

Ho visto però il manuale della Novaton SL MKII a pag 35 nel paragrafo sui Sysex parla esplicitamente di data type + checksum Roland (quindi è supportato e forse allora non è poi un mistero che funzioni, probabilmente sbagliavi qualcosa prima?).
GBCKEYBOARD 16-01-24 18.14
@ maxpiano69
Forse avevi sbagliato qualcos'altro, perchè i sysex sono sempre dati esadecimali senza segno (0-127 o -63+63 sono forse il modo di visualizzarli ma il dato nel messaggio sysex sarà sempre tra 00h e 7Fh).

Ho visto però il manuale della Novaton SL MKII a pag 35 nel paragrafo sui Sysex parla esplicitamente di data type + checksum Roland (quindi è supportato e forse allora non è poi un mistero che funzioni, probabilmente sbagliavi qualcosa prima?).
Esatto, intendevo +/- 63 nell'impostazione di come varia il parametro visivamente sulla Novation e non sul valore effettivo del sysex che, come dici giustamente, varia solo da 0 a 127. È una comodità di Novation per vedere nel suo monitor un parametro che ad esempio può cambiare da -15 a + 15 (come lo vedresti nel display dell'integra) e non da 0 a 30 come invece richiede il comando sysex. In questo caso il sysex non funziona, non escludo un mio errore.
Ma il manuale lo conosco ormai a memoria; come hai detto tu, io imposto data+checksum roland ma come ho già scritto il checksum che esce da Novation è sbagliato sempre del medesimo offset rispetto a quello corretto, almeno vedendo quanto monitorato da MIDI-OX ed è quello che si ottiene calcolandolo dal 5 byte del sysex e non dal 7 byte come dovrebbe essere. Su questo non ho dubbi perchè l'ho verificato matematicamente.
Forse mi sfugge qualcosa. Comunque funziona.
maxpiano69 16-01-24 18.19
@ GBCKEYBOARD
Esatto, intendevo +/- 63 nell'impostazione di come varia il parametro visivamente sulla Novation e non sul valore effettivo del sysex che, come dici giustamente, varia solo da 0 a 127. È una comodità di Novation per vedere nel suo monitor un parametro che ad esempio può cambiare da -15 a + 15 (come lo vedresti nel display dell'integra) e non da 0 a 30 come invece richiede il comando sysex. In questo caso il sysex non funziona, non escludo un mio errore.
Ma il manuale lo conosco ormai a memoria; come hai detto tu, io imposto data+checksum roland ma come ho già scritto il checksum che esce da Novation è sbagliato sempre del medesimo offset rispetto a quello corretto, almeno vedendo quanto monitorato da MIDI-OX ed è quello che si ottiene calcolandolo dal 5 byte del sysex e non dal 7 byte come dovrebbe essere. Su questo non ho dubbi perchè l'ho verificato matematicamente.
Forse mi sfugge qualcosa. Comunque funziona.
OK, ma allora sei d'accordo anche tu che non può essere il cambiamento di quella visualizzazione ad aver cambiato il risultato, no?

Il sysex generato rimane lo stesso indipendentemente dalla visualizzazione, quindi devi aver cambiato anche qualcos'altro nel frattempo (se non sulla master, allora su Integra).

Alla fine comunque l'importante è che funzioni emo
GBCKEYBOARD 16-01-24 18.42
@ maxpiano69
OK, ma allora sei d'accordo anche tu che non può essere il cambiamento di quella visualizzazione ad aver cambiato il risultato, no?

Il sysex generato rimane lo stesso indipendentemente dalla visualizzazione, quindi devi aver cambiato anche qualcos'altro nel frattempo (se non sulla master, allora su Integra).

Alla fine comunque l'importante è che funzioni emo
Concordo sicuramente con l'ultima frase.
Grazie. emo