• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
RE: Question for USB MIDI Support on OSX
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

References: 
 >Question for USB MIDI Support on OSX (From: Philip Lukidis <email@hidden>)
 >Re: Question for USB MIDI Support on OSX (From: Brian Willoughby <email@hidden>)

  • Prev by Date: Re: Question for USB MIDI Support on OSX
  • Next by Date: Re: Seeking advice for modifying audio input source
  • Previous by thread: Re: Question for USB MIDI Support on OSX
  • Next by thread: Bug in kAudioUnitProperty_HostCallbacks / AUAudioUnit.transportStateBlock? [Solved]
  • Index(es):
    • Date
    • Thread