Sean M. Pappalardo - D.J. Pegasus wrote:
On 05/30/2012 06:51 AM, Clemens Ladisch wrote:
Sean M. Pappalardo - D.J. Pegasus wrote:
four-byte platter messages that start with 0xF9 and the remaining three can range from 0x00 to 0xFF.
This is not MIDI. Into what MIDI messages should the driver convert this?
It shouldn't convert it at all. Just deliver it as-is in a single four-byte message, if possible.
The problem is the communication between the driver and userspace; _that_ must be valid MIDI.
0xF9 is a valid, if undefined, MIDI status.
Undefined means invalid. Furthermore, data bytes must not have the eighth bit set.
I will also need the ability to use the HSS1394 SendUserControl function to set the device's timers, and that is definitely not MIDI at all. I wonder if it would be a good idea to define a special SYSEX message that the SCS1x driver would interpret and convert to a call to that function?
As it happens, the actual SysEx commands use the wrong manufacturer ID ("00 01 02" is Crystal Semiconductor); I could just use the real ID (Stanton is "00 01 60") to escape non-MIDI HSS1394 messages. Let's add "HSS" to identify this, and to allow the full byte range, each HSS1394 byte is split into two nibbles. So:
00 F9 xx yy zz -> F0 00 01 60 48 53 53 00 00 0F 09 0x 0x 0y 0y 0z 0z F7 13 xx yy zz <- F0 00 01 60 48 53 53 01 03 0x 0x 0y 0y 0z 0z F7 14 xx yy zz <- F0 00 01 60 48 53 53 01 04 0x 0x 0y 0y 0z 0z F7 (0x13 = 0x10 + 3 = kUserTagBase + uUserTag)
Regards, Clemens