RE: Question for USB MIDI Support on OSX
RE: Question for USB MIDI Support on OSX
- Subject: RE: Question for USB MIDI Support on OSX
- From: Philip Lukidis <email@hidden>
- Date: Wed, 7 Jun 2017 15:27:30 +0000
- Thread-topic: Question for USB MIDI Support on OSX
Hi Brian,
Thank you for your reply. I will post the MIDI section of our descriptors below.
Thanks for any help and/or insights.
Philip Lukidis
MIDI subset of our descriptors (dumped from Windows):
Interface Association Descriptor:
------------------------------
0x08 bLength
0x0B bDescriptorType
0x03 bFirstInterface
0x02 bInterfaceCount
0x01 bFunctionClass (Audio Device Class)
0x00 bFunctionSubClass
0x00 bFunctionProtocol
0x02 iFunction "FunctionName"
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x03 bInterfaceNumber
0x00 bAlternateSetting
0x00 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x01 bInterfaceSubClass (Audio Control Interface)
0x00 bInterfaceProtocol
0x30 iInterface "MIDI Control"
AC Interface Header Descriptor:
------------------------------
0x09 bLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x0100 bcdADC
0x0009 wTotalLength
0x01 bInCollection
0x04 baInterfaceNr(1)
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x04 bInterfaceNumber
0x00 bAlternateSetting
0x04 bNumEndPoints
0x01 bInterfaceClass (Audio Device Class)
0x03 bInterfaceSubClass (MIDI Streaming Interface)
0x00 bInterfaceProtocol
0x31 iInterface "MIDI Streaming"
MS Interface Header Descriptor:
------------------------------
0x07 bLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x0100 bcdMSC
0x007B wTotalLength
MS MIDI IN Jack Descriptor:
------------------------------
0x06 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x01 bJackType
0x01 bJackID
0x02 iJack "Port 1"
MS MIDI IN Jack Descriptor:
------------------------------
0x06 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x02 bJackType
0x02 bJackID
0x02 iJack "Port 1"
MS MIDI IN Jack Descriptor:
------------------------------
0x06 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x01 bJackType
0x03 bJackID
0x34 iJack "Port 2"
MS MIDI IN Jack Descriptor:
------------------------------
0x06 bLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x02 bJackType
0x04 bJackID
0x34 iJack "Port 2"
MS MIDI OUT Jack Descriptor:
------------------------------
0x09 bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x01 bJackType
0x05 bJackID
0x01 bNrInputPins
0x02 baSourceID(1)
0x01 baSourcePin(1)
0x02 iJack "Port 1"
MS MIDI OUT Jack Descriptor:
------------------------------
0x09 bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x02 bJackType
0x06 bJackID
0x01 bNrInputPins
0x01 baSourceID(1)
0x01 baSourcePin(1)
0x02 iJack "Port 1"
MS MIDI OUT Jack Descriptor:
------------------------------
0x09 bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x01 bJackType
0x07 bJackID
0x01 bNrInputPins
0x04 baSourceID(1)
0x01 baSourcePin(1)
0x34 iJack "Port 2"
MS MIDI OUT Jack Descriptor:
------------------------------
0x09 bLength
0x24 bDescriptorType
0x03 bDescriptorSubtype
0x02 bJackType
0x08 bJackID
0x01 bNrInputPins
0x03 baSourceID(1)
0x01 baSourcePin(1)
0x34 iJack "Port 2"
Endpoint Descriptor (Audio/MIDI):
------------------------------
0x09 bLength
0x05 bDescriptorType
0x02 bEndpointAddress (OUT Endpoint)
0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)
0x0200 wMaxPacketSize (512 Bytes)
0x00 bInterval
0x00 bRefresh
0x00 bSynchAddress
MS Bulk Data Endpoint Descriptor:
------------------------------
0x05 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x01 bNumEmbMIDIJack
0x01 baAssocJackID(1)
Endpoint Descriptor (Audio/MIDI):
------------------------------
0x09 bLength
0x05 bDescriptorType
0x83 bEndpointAddress (IN Endpoint)
0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)
0x0200 wMaxPacketSize (512 Bytes)
0x00 bInterval
0x00 bRefresh
0x00 bSynchAddress
MS Bulk Data Endpoint Descriptor:
------------------------------
0x05 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x01 bNumEmbMIDIJack
0x05 baAssocJackID(1)
Endpoint Descriptor (Audio/MIDI):
------------------------------
0x09 bLength
0x05 bDescriptorType
0x03 bEndpointAddress (OUT Endpoint)
0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)
0x0200 wMaxPacketSize (512 Bytes)
0x00 bInterval
0x00 bRefresh
0x00 bSynchAddress
MS Bulk Data Endpoint Descriptor:
------------------------------
0x05 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x01 bNumEmbMIDIJack
0x03 baAssocJackID(1)
Endpoint Descriptor (Audio/MIDI):
------------------------------
0x09 bLength
0x05 bDescriptorType
0x84 bEndpointAddress (IN Endpoint)
0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)
0x0200 wMaxPacketSize (512 Bytes)
0x00 bInterval
0x00 bRefresh
0x00 bSynchAddress
MS Bulk Data Endpoint Descriptor:
------------------------------
0x05 bLength
0x25 bDescriptorType
0x01 bDescriptorSubtype
0x01 bNumEmbMIDIJack
0x07 baAssocJackID(1)
-----Original Message-----
From: Brian Willoughby [mailto:email@hidden]
Sent: June-06-17 8:24 PM
To: Philip Lukidis
Cc: email@hidden
Subject: Re: Question for USB MIDI Support on OSX
Hi Philip,
It's possible that your USB-MIDI Descriptors are inconsistent. If you'd like to send them to me via private email, I'd be willing to review them to see if I can find any errors. The output format from USB Prober would be most convenient, but just about any format that includes the Device & Configuration Descriptor bytes in hex would work, since USB Prober does not decode the USB-MIDI Class Descriptors anyway.
I've developed a number of USB-MIDI Devices, and have experimented with official spec features that are not supported anywhere else but macOS. In particular, Windows does not support a lot of the more interesting features in the USB-MIDI Spec. I've found the built-in OS support from Apple to be very complete, so it's basically a question of whether you have made some error or if Apple really does not support what you're trying to do. My suggestion above to review the Descriptors is the first step, and you could use an Apple Developer Support incident if things still aren't working once you're sure that all your data is correct and consistent.
It's also possible that you might get a different set of eyes on your problem if you post to Apple's USB mailing list, but sometimes they refer audio/MIDI issues here anyway. It all depends.
Brian Willoughby
Sound Consulting
On Jun 6, 2017, at 3:35 PM, Philip Lukidis <email@hidden> wrote:
> We were wondering if OSX supports, in the domain of USB MIDI, more than one pair of bulk in/out endpoints for a given USB MIDI interface, with each endpoint having its own external jack. We have seen that only the last endpoint in/out pair is polled over the USB, not the first one, despite the fact that both MIDI in ports and both MIDI out ports appear at the application level.
> Yes, we could more than one cable number over the same endpoint, but our question remains: is more than one endpoint pair on the same USB MIDI interface supported by OSX, with each single endpoint having its own external jack?
> Any help and/or information would be much appreciated.
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden