[LAD] A question for USB/MIDI experts

From: Fons Adriaensen <fons@email-addr-hidden>
Date: Fri Apr 08 2016 - 23:05:57 EEST

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@email-addr-hidden
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