Legacy USB MIDI 1.0 host hardware connecting to USB 2.0 devices
A MIDI 1.0 only host may see a larger descriptor returns (now incl Alt setting 1).
Legacy hosts are not aware of this longer descriptor . Has this caused issues with testing lecgacy host ? Has testing been done with older host devices ?
Mainly concern are hardware devices with Host connectors (as OS drivers could be upgraded but older legacy MIDI host devices not)
USB MIDI Hosts capable of supporting a USB MIDI 2.0 device may look for a MIDI Function that complies with the USB Device Class Specification for MIDI Devices Version 2.0 on Alternate Setting 1. If such an Alternate Setting is found in the device, the Host may install the device as a USB MIDI 2.0 device using the descriptors found on Alternate Setting 1.
 MIDI driver mode selection
The specification mentions: "may". How does an MIDI host driver decide on using the Alt 0 or Alt 1 setting for a device ?
 Fallback forcing to MIDI 1.0
Would there be a way to "force" an MIDI interface to use Alt 0 function ? pertaining this could be done at the OS level driver / port level somehow (a device driver setting ?)
 MIDI descriptor example
What is the reason for the device descriptor example on p.42 with the OUT endpoint is BULK but the IN endpoint is INTERRUPT. On p.21 the IN enpoint is defined as BULK
Should the IN endpoint not be the same as the OUT endpoint, either both interrupt or BULK ?
 Bulk and interrupt endpoints
The specification states that both bulk and interrupt transfers are allowed
a . Are there any rules how bulk or interrupt endpoints should be represented in a descriptor suh as or if mixes of these are allowed ?
b. A host should always support both interrupt and bulk transfer just in case a device uses a mix of both ? True ?
 Alternate configurations with different endpoint type usage
Is there a method or provision at the descriptor level to allow for alternate cnonfiguration. For example to choose between using bulk or interupt endpoints for the device ports, or this is something that only could be done on the device to chose between such different modes ?
 MIDI driver behavior
Assumptions: (please confirm if correct)
a. An MIDI 2.0 capable host driver will default to use Alt setting 1 to use MIDI 2.0 if available (and this setings succeeds)
[ if not, what/who is it decided which interface setting to use ?)
b. An MIDI 2.0 capable OS will need to provide an API to enumerate MIDi 2.0 ports (and ofcourse the probly need keep supporting MIDI 1.0 enumearion as well)
c. An MIDI 2.0 capable OS will need to inform if the port supports MIDI 2.0 command (or only MIDI 1.0 commands) -- over UMP
p.28 If a Group Terminal's default protocol is unknown, MIDI-CI Protocol Negotiation may be used to discover the current Protocol. MIDI-CI may also be used to set a different Protocol choice on that Group Terminal
 MIDI-CI protocol negotiation
a. It appears that MIDI-CI protocol negotation is a fallback method in case the terminal is protocol to use for UMP ( MIDI 1.0 or 2.0) is unknown, The 2nd purpose for MIDI-CI protocol negotiation to switch the protocol if the host prefers to use another protocol than the default one in the device descrpitor, is this correct ?
b. In the case the descriptor value is " unknown": , who does the CI protocol negotiation? as these are MIDI messages, is this done by the OS MIDI host driver or at the application level ?
c. In the case of protocol switching, who does the CI protocol negotiation? As these are MIDI message, is this done by the OS MIDI host driver or at the application level ?
 Bandwidth llimitation
a. How would the bandwidth limitation be implemented on the host ?
b. Would this be the responsiblity of the MIDI host driver or at the OS application level ?
c. What if the host prefers a lower bandwith than the device supports?
 Packet size
p28. What happens if a host is unable to support the packet size as required by the device ? is there a way to inform the device to use a smaller packet size ?
 MIDI 2.0 only devices
Could a MIDI device descriptor omit the MIDI 1.0 jack interface (with jack endpoints). In other words: Tthere is only one interface setting with class revsion 2 (2.0) ?