@ michelet
Quando si parla di sys-ex, mi viene l'acquolina in bocca.
Se non vado errato la questione 7 bit 4 bit dovrebbe essere relativa proprio alla struttura dei messaggisi sys-ex Roland che hanno 3 bytes per l'address ed uno per il checksum.
Però credo che non servano per il VoiceWorks Plus.
Temo che si debba analizzare il messaggio del VoiceWorksPlus e capire di quanti bytes è composto, qual è l'address del parametro ed il suo valore.
I bytes dell'address e del checksum non c'entrano nulla col SysEx in sé. Provo a dare una spiegazione anche se forse non risolverà il problema di pask976.
Il MIDI lavora a 8 bit, ogni messaggio inizia con un byte chiamato STATUS, il quale si divide in due nibble da 4 bit, nei 4 MSB c'è scritto il tipo di evento e nei 4 LSB c'è scritto il canale MIDI. Se il valore del nibble MSB è superiore a 8, non si tratta più di eventi ma di messaggi di realtime, infatti il SysEx inizia con F0 e finisce con F7, in questo caso F = 15 che è maggiore di 8. Per questa ragione, tutto quello che ci dev'essere fra F0 e F7 non può essere superiore a 127, quindi vengono usati solo 7 bit.
Detto questo, come faccio se io voglio trasmettere via SysEx un valore superiore a 127? Mettiamo che voglio trasmettere il valore 200, un trucchetto potrebbe essere dividerlo in due nibble da 4 bit, quindi se 200 = C8 manderò C e 8 separatamente in questo modo:
F0 0C 08 F7
E' ovvio che l'apparato ricevente deve sapere cosa aspettarsi, quindi in questo caso prenderà quei due byte e li assemblerà nuovamente in un unico byte col valore C8.
Dunque ogni produttore s'è inventato il modo suo per trasmettere dati via SysEx a seconda delle esigenze, ma la regola resta che fra F0 e F7 il valore massimo che si può inviare è 7F = 127.