Universal Serial Bus
Device Class Definition
for
MIDI Devices
Release 1.0
Nov 1, 1999
USB Device Class Definition for MIDI Devices
Release 1.0 Nov 1, 1999 ii
Scope of this Revision
This document is the 1.0 release of this device class definition.
Contributors
Gal Ashour IBM Corporation
Billy Brackenridge Microsoft Corporation
Oren Tirosh Altec Lansing
Mike Kent Roland Corporation
E-mail: mikekent@compuserve.com
Geert Knapen Philips ITCL-USA
1000 West Maude Avenue
Sunnyvale, CA 94086-2810
Phone: +1 (408) 617-4677
Fax: +1 (408) 617-7721
E-mail: gknapen@pmc.philips.com
Revision History
Revision Date Filename Authors Description
0.6 Jun. 1, 97 MIDI06.doc Mike Kent
Geert
Knapen
Initial version
0.7 Sep. 1, 97 MIDI07.doc Mike Kent
Geert
Knapen
Reworked the architecture
0.7a Dec. 1, 97 MIDI07a.doc Mike Kent
Geert
Knapen
Introduced multiple output Elements.
Removed Appliance.
0.7b Mar. 1, 98 MIDI07b.doc Mike Kent
Geert
Knapen
Minor changes and clean-ups.
0.7c May. 1, 98 MIDI07c.doc Mike Kent
Geert
Knapen
Introduced the Event Packet structure.
Removed all references to ‘F5’ message.
0.7d Nov. 1, 98 MIDI07d.doc Mike Kent
Geert
Knapen
Small editorial changes. Removed all
references to time stamps.
0.8 Apr. 1, 99 MIDI08.doc Mike Kent
Geert
Knapen
Minor changes. Added Management
Overview. Made provisions for future
extensions. Changed bit definitions for the
Element.
USB Device Class Definition for MIDI Devices
Release 1.0 Nov 1, 1999 iii
Revision Date Filename Authors Description
0.9 Aug. 1, 99 MIDI09.doc Mike Kent
Geert
Knapen
Deleted Synthesizer example. Updated a
number of references. Small editorial
changes.
1.0 Nov. 1, 99 MIDI10.doc Mike Kent
Geert
Knapen
No Changes, except changing revision
number from 0.9 to 1.0
USB Device Class Definition for Audio Devices
Copyright © 1996, USB Implementers Forum
All rights reserved.
INTELLECTUAL PROPERTY DISCLAIMER
THIS SPECIFICATION IS PROVIDED “AS IS” WITH NO WARRANTIES WHATSOEVER INCLUDING
ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY
WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION, OR SAMPLE.
A LICENSE IS HEREBY GRANTED TO REPRODUCE AND DISTRIBUTE THIS SPECIFICATION FOR
INTERNAL USE ONLY. NO OTHER LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR
OTHERWISE, TO ANY OTHER INTELLECTUAL PROPERTY RIGHTS IS GRANTED OR INTENDED
HEREBY.
AUTHORS OF THIS SPECIFICATION DISCLAIM ALL LIABILITY, INCLUDING LIABILITY FOR
INFRINGEMENT OF PROPRIETARY RIGHTS, RELATING TO IMPLEMENTATION OF INFORMATION
IN THIS SPECIFICATION. AUTHORS OF THIS SPECIFICATION ALSO DO NOT WARRANT OR
REPRES ENT THAT SUCH IMPLEMENTATION(S) WILL NOT INFRINGE SUCH RIGHTS.
All other product names are trademarks, registered trademarks, or service marks of their respective owners.
Please send comments via electronic mail to usbhtech@mailbag.intel.com
USB Device Class Definition for MIDI Devices
Release 1.0 Nov 1, 1999 iv
Table of Contents
Table of Contents........................................................................................................... iv
List of Tables.................................................................................................................. vi
List of Figures............................................................................................................... vii
1 Introduction.............................................................................................................. 8
1.1 Background ......................................................................................................... 8
1.2 Purpose .............................................................................................................. 8
1.3 Related Documents.............................................................................................. 9
1.4 Terms and Abbreviations ....................................................................................... 9
2 Management Overview...........................................................................................10
3 Functional Characteristics.......................................................................................11
3.1 USB-MIDI Function Topology................................................................................11
3.2 USB-MIDI Converter.............................................................................................12
3.2.1 MIDI Endpoints and Embedded MIDI Jacks.....................................................13
3.2.2 Transfer Endpoints........................................................................................13
3.3 External MIDI Jack ..............................................................................................13
3.3.1 PARALLEL OUT...........................................................................................13
3.3.2 MIDI Through................................................................................................14
3.4 Element .............................................................................................................14
3.4.1 Element Capability .......................................................................................15
3.4.2 Link to the Audio Function.............................................................................15
4 USB-MIDI Event Packets..........................................................................................16
5 Operational Model ..................................................................................................18
5.1 Communication from Host to USB-MIDI Function ...................................................18
5.2 Communication from USB-MIDI Function to Host ...................................................18
5.2.1 High Bandwidth Data Transfer Mechanism ......................................................18
6 Descriptors..............................................................................................................20
6.1 MIDIStreaming Interface Descriptors .....................................................................20
6.1.1 Standard MS Interface Descriptor...................................................................20
6.1.2 Class-Specific MS Interface Descriptor...........................................................21
6.2 MIDIStreaming Endpoint Descriptors .....................................................................25
6.2.1 Standard MS Bulk Data Endpoint Descriptor...................................................25
6.2.2 Class-Specific MS Bulk Data Endpoint Descriptor ...........................................26
6.2.3 Standard MS Transfer Bulk Data Endpoint Descriptor ......................................27
6.2.4 Class-Specific MS Transfer Bulk Data Endpoint Descriptor...............................27
7 Requests..................................................................................................................28
7.1 Standard Requests..............................................................................................28
7.2 Class-Specific Requests......................................................................................28
7.2.1 Request Layout ............................................................................................28
7.2.2 MIDIStreaming Requests...............................................................................31
USB Device Class Definition for MIDI Devices
Release 1.0 Nov 1, 1999 v
7.2.3 Additional Requests......................................................................................32
8 Glossary ..................................................................................................................34
8.1 MIDI: Musical Instrument Digital Interface..............................................................34
8.2 GM: General MIDI ...............................................................................................34
8.3 Roland GS..........................................................................................................34
8.4 Yamaha XG ........................................................................................................35
Appendix A. Audio Device Class Codes: MIDIStreaming.............................................36
A.1 MS Class-Specific Interface Descriptor Subtypes ...................................................36
A.2 MS Class-Specific Endpoint Descriptor Subtypes ..................................................36
A.3 MS MIDI IN and OUT Jack types ..........................................................................36
A.4 Class-Specific Request Codes .............................................................................36
A.5 Control Selector Codes ........................................................................................36
A.5.1 Endpoint Control Selectors ............................................................................36
Appendix B. Example: Simple MIDI Adapter (Informative)..........................................37
B.1 Device Descriptor ................................................................................................37
B.2 Configuration Descriptor.......................................................................................37
B.3 AudioControl Interface Descriptors ........................................................................38
B.3.1 Standard AC Interface Descriptor ...................................................................38
B.3.2 Class-specific AC Interface Descriptor............................................................39
B.4 MIDIStreaming Interface Descriptors .....................................................................39
B.4.1 Standard MS Interface Descriptor...................................................................39
B.4.2 Class-specific MS Interface Descriptor ...........................................................40
B.4.3 MIDI IN Jack Descriptor.................................................................................40
B.4.4 MIDI OUT Jack Descriptor .............................................................................41
B.5 Bulk OUT Endpoint Descriptors ............................................................................42
B.5.1 Standard Bulk OUT Endpoint Descriptor .........................................................42
B.5.2 Class-specific MS Bulk OUT Endpoint Descriptor............................................42
B.6 Bulk IN Endpoint Descriptors................................................................................42
B.6.1 Standard Bulk IN Endpoint Descriptor.............................................................42
B.6.2 Class-specific MS Bulk IN Endpoint Descriptor ...............................................43