Re: [LAD] A question for USB/MIDI experts

From: Philippe Wicker <pwicker@email-addr-hidden>
Date: Fri Apr 08 2016 - 23:13:27 EEST

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 <fons@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
Received on Sat Apr 9 00:15:01 2016

This archive was generated by hypermail 2.1.8 : Sat Apr 09 2016 - 00:15:01 EEST