Gordon JC Pearce wrote:
On Sat, Aug 31, 2013 at 07:04:31PM +0200, Clemens
Ladisch wrote:
not to
send that too soon otherwise the CZ will misbehave in various
interesting ways. Once all the patch data is send - with breaks for
acks in between - the final 0xf7 is sent to terminate the sysex dump.
So the messages used by the CZ1000 in this protocol are not actually
MIDI messages.
In what way are they not MIDI messages?
All the messages in the CZ1000 protocol (header, acks, final F7)
together make up just a single MIDI message; the individual messages,
taken separately, are not valid MIDI messages.
According to the USB MIDI spec there is an event
packet to send just
single bytes.
There are devices that do not support this single-byte packet.
That would be most devices.
This
isn't implemented in the kernel,
It's used for real-time messages.
No, that's CIN 0x5 which only passes a single byte if its upper bit is set.
CIN 0x5 is used only for system common messages, not for system real-
time messages.
With a bit of testing, I've determined that at
least the USB
interfaces I have at hand do not support sysex. They will pass some
interestingly "interpreted" version of sysex, which is of course
corrupted and unreadable by the device.
In what way corrupted?
It doesn't send complete messages.
The USB MIDI spec does not work on the raw byte level (except when
using CIN 0xf) but on the level of complete MIDI messages. (Running
status isn't used either.)
This is an inherent flaw in the USB MIDI spec.
Apparently Roland, who wrote the spec, did not think that anybody would
do anything particularly weird.
Regards,
Clemens