Hello, What you see seems to be the MIDI encoding used by a USB device. Every “simple” MIDI event (that is less that 3 bytes) are encoded as a 4 bytes word. The 1st byte (MSB) is - if I remember correctly - the concatenation of the MIDI port and a USB specific code for the event. The 3 remaining bytes contains the MIDI event as it is encoded on a standard serial MIDI line.
HTH Phil > On 08 Apr 2016, at 22:05, Fons Adriaensen <f...@linuxaudio.org> wrote: > > Hello all, > > Sadly I won't be able to make it to the miniLAC as work keeps > me in München during the weekend :-( > For those who'll be there, have a good time ! > > Meanwhile I'm trying to understand the following: > > I'm using a Novation LaunchControl (8 pads and 16 rotary controllers). > > When I use it via ALSA sequencer, I get the expected MIDI events: > note on/off, controller, and sysex. > > When I access it directly as a USB device using libusb, I see > the expected MIDI data, but with some extra bytes, e.g. (all > values in hex): > > [09] 90 09 7f (note on) > [08] 80 09 00 (note off) > [0b] b0 15 23 (controller) > [04] f0 00 20 [04] 29 02 0A [07] 77 00 ff (sysex) > > where the bytes in [] are the ones that are *not* part of > the MIDI message. > > Now since things work perfectly with ALSA sequencer without > required a specific driver, either > > * ALSA knowns about the details of this particular device, > * or these extra bytes are part of some standard. > > Given that there seems to be one extra byte for every three > expected ones, could it be that this is some format that > encodes 24 bits in 32 ? > > lsusb output for this device is: > > Bus 003 Device 004: ID 1235:0034 Focusrite-Novation > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 1.10 > bDeviceClass 0 > bDeviceSubClass 0 > bDeviceProtocol 0 > bMaxPacketSize0 64 > idVendor 0x1235 Focusrite-Novation > idProduct 0x0034 > bcdDevice 0.00 > iManufacturer 1 Focusrite A.E. Ltd > iProduct 2 Launch Control > iSerial 0 > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 82 > bNumInterfaces 2 > bConfigurationValue 1 > iConfiguration 0 > bmAttributes 0x80 > (Bus Powered) > MaxPower 60mA > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 0 > bInterfaceClass 1 Audio > bInterfaceSubClass 1 Control Device > bInterfaceProtocol 0 > iInterface 3 Launch Control > AudioControl Interface Descriptor: > bLength 9 > bDescriptorType 36 > bDescriptorSubtype 1 (HEADER) > bcdADC 1.00 > wTotalLength 9 > bInCollection 1 > baInterfaceNr( 0) 1 > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 1 > bAlternateSetting 0 > bNumEndpoints 2 > bInterfaceClass 1 Audio > bInterfaceSubClass 3 MIDI Streaming > bInterfaceProtocol 0 > iInterface 3 Launch Control > MIDIStreaming Interface Descriptor: > bLength 7 > bDescriptorType 36 > bDescriptorSubtype 1 (HEADER) > bcdADC 1.00 > wTotalLength 46 > MIDIStreaming Interface Descriptor: > bLength 6 > bDescriptorType 36 > bDescriptorSubtype 2 (MIDI_IN_JACK) > bJackType 1 Embedded > bJackID 1 > iJack 0 > MIDIStreaming Interface Descriptor: > bLength 9 > bDescriptorType 36 > bDescriptorSubtype 3 (MIDI_OUT_JACK) > bJackType 1 Embedded > bJackID 2 > bNrInputPins 1 > baSourceID( 0) 1 > BaSourcePin( 0) 1 > iJack 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x81 EP 1 IN > bmAttributes 3 > Transfer Type Interrupt > Synch Type None > Usage Type Data > wMaxPacketSize 0x0040 1x 64 bytes > bInterval 1 > MIDIStreaming Endpoint Descriptor: > bLength 5 > bDescriptorType 37 > bDescriptorSubtype 1 (GENERAL) > bNumEmbMIDIJack 1 > baAssocJackID( 0) 2 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x02 EP 2 OUT > bmAttributes 3 > Transfer Type Interrupt > Synch Type None > Usage Type Data > wMaxPacketSize 0x0040 1x 64 bytes > bInterval 1 > MIDIStreaming Endpoint Descriptor: > bLength 5 > bDescriptorType 37 > bDescriptorSubtype 1 (GENERAL) > bNumEmbMIDIJack 1 > baAssocJackID( 0) 1 > > > Any info much appreciated !! > > Ciao, > > -- > FA > > A world of exhaustive, reliable metadata would be an utopia. > It's also a pipe-dream, founded on self-delusion, nerd hubris > and hysterically inflated market opportunities. (Cory Doctorow) > > _______________________________________________ > Linux-audio-dev mailing list > Linux-audio-dev@lists.linuxaudio.org > http://lists.linuxaudio.org/listinfo/linux-audio-dev _______________________________________________ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev