USB Device Class Definition for Audio Devices
Release 1.0 March 18, 1998 18
3 Functional Characteristics
In many cases, audio functionality does not exist as a standalone device. It is one capability that, together
with other functions, constitutes a “composite” device. A perfect example of this is a CD-ROM player,
which can incorporate video, audio, data storage, and transport control. The audio function is thus located
at the interface level in the device class hierarchy. It consists of a number of interfaces grouping related
pipes that together implement the interface to the audio function.
Audio functions are addressed through their audio interfaces. Each audio function has a single
AudioControl interface and can have several AudioStreaming and MIDIStreaming interfaces. The
AudioControl (AC) interface is used to access the audio Controls of the function whereas the
AudioStreaming (AS) interfaces are used to transport audio streams into and out of the function. The
MIDIStreaming (MS) interfaces are used to transport MIDI data streams into and out of the audio
function. The collection of the single AudioControl interface and the AudioStreaming and
MIDIStreaming interfaces that belong to the same audio function is called the Audio Interface Collection
(AIC). A device can have multiple Audio Interface Collections active at the same time. These Collections
are used to control multiple independent audio functions located in the same composite device.
Note: All MIDI-related information is grouped in a separate document, Universal Serial Bus Device
Class Definition for MIDIStreaming Interfaces that is considered part of this specification.
3.1 Audio Interface Class
The Audio Interface class groups all functions that can interact with USB-compliant audio data streams.
All functions that convert between analog and digital audio domains can be part of this class. In addition,
those functions that transform USB-compliant audio data streams into other USB-compliant audio data
streams can be part of this class. Even analog audio functions that are controlled through USB belong to
this class.
In fact, for an audio function to be part of this class, the only requirement is that it exposes one
AudioControl interface. No further interaction with the function is mandatory, although most functions in
the audio interface class will support one or more optional AudioStreaming interfaces for consuming or
producing one or more isochronous audio data streams.
The Audio Interface class code is assigned by the USB. For details, see Section A.1, “Audio Interface
Class Code.”
3.2 Audio Interface Subclass and Protocol
The Audio Interface class is divided into Subclasses that can be further qualified by the Interface Protocol
code. However, at this moment, the Interface Protocol is not used and must be set to 0x00. All audio
functions are part of a certain Subclass. The following three Subclasses are currently defined in this
specification:
• AudioControl Interface Subclass
• AudioStreaming Interface Subclass
• MIDIStreaming Interface Subclass
The assigned codes can be found in Sections A.2, “Audio Interface Subclass Codes” and A.3, “Audio
Interface Protocol Codes” of this specification. All other Subclass codes are unused and reserved except
code 0xFF which is by specification reserved for vendor-specific extensions.