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 protected]] Sent: June-06-17 8:24 PM To: Philip Lukidis Cc: [email protected] 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 protected]> 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 protected]) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/coreaudio-api/archive%40mail-archive.com This email sent to [email protected]
