USB interface for multi channel outputs, not just stereo

@toyosm: Thank you for testing the interface. I'm glad that it also works with on a Mac.

@h4yn0nnym0u5e: I think there was a missunderstanding. It was already quite late when I wrote the post and I didn't want to go into the details. The issue I want to improve/solve is:
At one point I got the error message '[ 18.636054] kernel: usb 2-1: 4:1 : bogus bTerminalLink 2' when I tested the interface in Ubuntu. It appeared with the interface combination USB_MIDI_AUDIO_SERIAL. I found out that according to the USB specification, the midi interface must be part of an audio interface collection. See USB audio 2 specification:
audio_interface_collection.png


Hence, I added the midi interface to the collection of the usb audio interfaces. That solved the problem. However, I needed to also change the order of the interfaces. (streaming interfaces must have the lower interface numbers than midi interface). Before my changes the interface and endpoint numbers were nicely sorted in usb_desc.h. For now, I only changed the order for USB_MIDI_AUDIO_SERIAL and hence mixed the order up.
What I want to do now is:
- First I will try to introduce a second audio interface collection that only contains the midi interface. Then there is no need switch interface numbers.
- If that doesn't work, I would at least need to change the interface numbers at all interface combinations that contain midi and audio like USB_MIDI16_AUDIO_SERIAL. In order to keep the endpoint and interface numbers nicly sorted in usb_desc.h, it would be possible to also change the endpoint numbers.

My problem now is: I want to keep my changes related to the midi interface as minimal as possible. I don't have any experience with midi and I don't know if I break the midi interface code or descriptors.
Do you have any thoughts on that? I know the problem is and how to fix it. But I don't know how critical changing interface numbers is.
 
Well, some bad news. I only tested the USB audio and works perfect, but now the I2S part of it gets screwed and sounds like a ring modulation (perhaps something about sample rate is messing or something like that). If I take out the USB output object, audio gets back to normal
 
On Sunday I committed some changes. Did you already use this code?
Can you post a short example that I can use to reproduce the problem?
 
On Sunday I committed some changes. Did you already use this code?
Can you post a short example that I can use to reproduce the problem?
No, I made all tests on Saturday!. I just tried the new committed files and now works perfectly the I2S output alongside the USB
 
The bug I fixed was in the AudioInputUsb class. The first time usb_audio_receive_callback was called, the buffer audio blocks were not initialized but the blocks were used anyway and data was just copied to wherever the data pointer was pointing.
I am wondering if you even used the usb audio input in your program? The bug can of course cause all kinds of strange behaviour. But if you didn't use the usb audio input there might still be a problem with your program.
 
My problem now is: I want to keep my changes related to the midi interface as minimal as possible. I don't have any experience with midi and I don't know if I break the midi interface code or descriptors.
Do you have any thoughts on that? I know the problem is and how to fix it. But I don't know how critical changing interface numbers is.
I'd imagine there's no problem with just changing interface numbers around, so long as you keep everything unique. The code should be independent of interface number, as that changes depending on the USB option selected anyway. I think.

I've got various bits of MIDI gear here, so if you do a branch with just your proposed changes (or maybe the most complex change), I'll try to devise a test. May not even need any gear, I expect there's a Python library I can use to fire MIDI at the Teensy and have a sketch send stuff back via Serial, and vice versa.
 
Thank you for offering your help. I changed the interface numbers now for the interface combinations USB_MIDI_AUDIO_SERIAL, USB_MIDI16_AUDIO_SERIAL and USB_EVERYTHING. However, USB_EVERYTHING doesn't not work for Teensy 4 and I was not able to test it. USB_MIDI_AUDIO_SERIAL and USB_MIDI16_AUDIO_SERIAL still seem to work fine for streaming audio. I tested it with Windows 11 and a virtual Ubuntu. I would be glad if you can test if I broke something related to the midi interface for USB_MIDI_AUDIO_SERIAL and USB_MIDI16_AUDIO_SERIAL.
I committed the changes to https://github.com/alex6679/teensy-4-usbAudio/tree/interface_numbers.
 
The bug I fixed was in the AudioInputUsb class. The first time usb_audio_receive_callback was called, the buffer audio blocks were not initialized but the blocks were used anyway and data was just copied to wherever the data pointer was pointing.
I am wondering if you even used the usb audio input in your program? The bug can of course cause all kinds of strange behaviour. But if you didn't use the usb audio input there might still be a problem with your program.
I didn't use the AudioInputUsb class in my program, but replaced the files with the last committed ones and now the I2S works fine simultaneously with the USB
 
I've been trying out the interface-numbers branch, and Windows 10 x64 simply isn't picking up the MIDI interface. I can't see any obvious problems with what you've done to get the interfaces in the correct order.

The USBTreeView utility gives this output:
Code:
    =========================== USB Port1 ===========================

Connection Status        : 0x01 (Device is connected)
Port Chain               : 2-1
Properties               : 0x01
 IsUserConnectable       : yes
 PortIsDebugCapable      : no
 PortHasMultiCompanions  : no
 PortConnectorIsTypeC    : no
ConnectionIndex          : 0x01 (Port 1)
CompanionIndex           : 0
 CompanionHubSymLnk      : USB#ROOT_HUB30#4&92b3c53&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
 CompanionPortNumber     : 0x11 (Port 17)
 -> CompanionPortChain   : 2-17

      ========================== Summary =========================
Vendor ID                : 0x16C0 (Van Ooijen Technische Informatica)
Product ID               : 0x048A
USB Version              : 2.0
Port maximum Speed       : High-Speed (Companion Port 2-17 supports SuperSpeed)
Device maximum Speed     : High-Speed
Device Connection Speed  : High-Speed
Self powered             : yes
Demanded Current         : 100 mA
Used Endpoints           : 6

      ======================== USB Device ========================

        +++++++++++++++++ Device Information ++++++++++++++++++
Device Description       : USB Composite Device
Device ID                : USB\VID_16C0&PID_048A\AUDIO-8/44B
Hardware IDs             : USB\VID_16C0&PID_048A&REV_0280 USB\VID_16C0&PID_048A
Driver KeyName           : {36fc9e60-c465-11cf-8056-444553540000}\0026 (GUID_DEVCLASS_USB)
Driver                   : \SystemRoot\System32\drivers\usbccgp.sys (Version: 10.0.19041.4474  Date: 2024-06-11)
Driver Inf               : C:\WINDOWS\inf\usb.inf
Legacy BusType           : PNPBus
Class                    : USB
Class GUID               : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
Service                  : usbccgp
Enumerator               : USB
Location Info            : Port_#0001.Hub_#0002
Location IDs             : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1), ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS01)
Container ID             : {d6c5641c-0e9a-5603-8b31-e9d8689094f5}
Manufacturer Info        : (Standard USB Host Controller)
Capabilities             : 0x94 (Removable, UniqueID, SurpriseRemovalOK)
Status                   : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code             : 0
Address                  : 1
HcDisableSelectiveSuspend: 0
EnableSelectiveSuspend   : 0
SelectiveSuspendEnabled  : 0
EnhancedPowerMgmtEnabled : 0
IdleInWorkingState       : 0
WakeFromSleepState       : 0
Power State              : D0 (supported: D0, D3, wake from D0)
 Child Device 1          : USB Serial Device (COM33)
  Device Path            : \\?\USB#VID_16C0&PID_048A&MI_00#6&4d26176&2&0000#{86e0d1e0-8089-11d0-9ce4-08003e301f73} (GUID_DEVINTERFACE_COMPORT)
  Kernel Name            : \Device\00000276
  Device ID              : USB\VID_16C0&PID_048A&MI_00\6&4D26176&2&0000
  Class                  : Ports
  Driver KeyName         : {4d36e978-e325-11ce-bfc1-08002be10318}\0004 (GUID_DEVCLASS_PORTS)
  Service                : usbser
  Location               : 0000.0014.0000.001.000.000.000.000.000
  LocationPaths          : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USBMI(0)  PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USB(1)  ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS01)#USBMI(0)  ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS01)#USB(1)
  COM-Port               : COM33 (\Device\USBSER000)
 Child Device 2          : Teensy MIDI/Audio (USB Audio 2.0)
  Device Path 1          : \\?\USB#VID_16C0&PID_048A&MI_02#6&4d26176&2&0002#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\msft_wave (AM_KSCATEGORY_CAPTURE)
  Device Path 2          : \\?\USB#VID_16C0&PID_048A&MI_02#6&4d26176&2&0002#{dda54a40-1e4c-11d1-a050-405705c10000}\msft_topo (STATIC_KSCATEGORY_TOPOLOGY)
  Device Path 3          : \\?\USB#VID_16C0&PID_048A&MI_02#6&4d26176&2&0002#{65e8773e-8f56-11d0-a3b9-00a0c9223196}\msft_wave (AM_KSCATEGORY_RENDER)
  Device Path 4          : \\?\USB#VID_16C0&PID_048A&MI_02#6&4d26176&2&0002#{eb115ffc-10c8-4964-831d-6dcb02e6f23f}\msft_wave (STATIC_KSCATEGORY_REALTIME)
  Device Path 5          : \\?\USB#VID_16C0&PID_048A&MI_02#6&4d26176&2&0002#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\msft_wave (AM_KSCATEGORY_AUDIO)
  Kernel Name            : \Device\00000277\msft_topo
  Device ID              : USB\VID_16C0&PID_048A&MI_02\6&4D26176&2&0002
  Class                  : MEDIA
  Driver KeyName         : {4d36e96c-e325-11ce-bfc1-08002be10318}\0014 (GUID_DEVCLASS_MEDIA)
  Service                : usbaudio2
  Location               : 0000.0014.0000.001.000.000.000.000.000
  LocationPaths          : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USBMI(2)  ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS01)#USBMI(2)
   Child Device 1        : Digital Audio Interface (3- Teensy MIDI/Audio) (Audio Endpoint)
    Device ID            : SWD\MMDEVAPI\{0.0.0.00000000}.{82D9EE02-9BB8-4E97-9B49-3C3CFE8CA251}
    Class                : AudioEndpoint
    Driver KeyName       : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0034 (AUDIOENDPOINT_CLASS_UUID)
   Child Device 2        : Digital Audio Interface (3- Teensy MIDI/Audio) (Audio Endpoint)
    Device ID            : SWD\MMDEVAPI\{0.0.1.00000000}.{2323F044-6621-49DC-BF1E-627413057BD4}
    Class                : AudioEndpoint
    Driver KeyName       : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0035 (AUDIOENDPOINT_CLASS_UUID)

        +++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\16C0048A0280
 osvc                    : REG_BINARY 00 00
 NewInterfaceUsage       : REG_DWORD 00000000 (0)

        ---------------- Connection Information ---------------
Connection Index         : 0x01 (Port 1)
Connection Status        : 0x01 (DeviceConnected)
Current Config Value     : 0x01 (Configuration 1)
Device Address           : 0x19 (25)
Is Hub                   : 0x00 (no)
Device Bus Speed         : 0x02 (High-Speed)
Number Of Open Pipes     : 0x05 (5 pipes to data endpoints)
Pipe[0]                  : EndpointID=2  Direction=IN   ScheduleOffset=0  Type=Interrupt  wMaxPacketSize=0x10    bInterval=5   -> 270 Bits/ms = 33750 Bytes/s
Pipe[1]                  : EndpointID=3  Direction=OUT  ScheduleOffset=0  Type=Bulk       wMaxPacketSize=0x200   bInterval=0 
Pipe[2]                  : EndpointID=3  Direction=IN   ScheduleOffset=0  Type=Bulk       wMaxPacketSize=0x200   bInterval=0 
Pipe[3]                  : EndpointID=4  Direction=OUT  ScheduleOffset=0  Type=Bulk       wMaxPacketSize=0x200   bInterval=0 
Pipe[4]                  : EndpointID=4  Direction=IN   ScheduleOffset=0  Type=Bulk       wMaxPacketSize=0x200   bInterval=0 
Data (HexDump)           : 01 00 00 00 12 01 00 02 EF 02 01 40 C0 16 8A 04   ...........@....
                           80 02 01 02 03 01 01 02 00 19 00 05 00 00 00 01   ................
                           00 00 00 07 05 82 03 10 00 05 00 00 00 00 07 05   ................
                           03 02 00 02 00 00 00 00 00 07 05 83 02 00 02 00   ................
                           00 00 00 00 09 05 04 02 00 02 00 00 00 00 00 09   ................
                           05 84 02 00 02 00 00 00 00 00                     ..........

        --------------- Connection Information V2 -------------
Connection Index         : 0x01 (1)
Length                   : 0x10 (16 bytes)
SupportedUsbProtocols    : 0x03
 Usb110                  : 1 (yes, port supports USB 1.1)
 Usb200                  : 1 (yes, port supports USB 2.0)
 Usb300                  : 0 (no, port not supports USB 3.0) -> but Companion Port 2-17 does
 ReservedMBZ             : 0x00
Flags                    : 0x00
 DevIsOpAtSsOrHigher     : 0 (Device is not operating at SuperSpeed or higher)
 DevIsSsCapOrHigher      : 0 (Device is not SuperSpeed capable or higher)
 DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher)
 DevIsSsPlusCapOrHigher  : 0 (Device is not SuperSpeedPlus capable or higher)
 ReservedMBZ             : 0x00
Data (HexDump)           : 01 00 00 00 10 00 00 00 03 00 00 00 00 00 00 00   ................

    ---------------------- Device Descriptor ----------------------
bLength                  : 0x12 (18 bytes)
bDescriptorType          : 0x01 (Device Descriptor)
bcdUSB                   : 0x200 (USB Version 2.0)
bDeviceClass             : 0xEF (Miscellaneous)
bDeviceSubClass          : 0x02
bDeviceProtocol          : 0x01 (IAD - Interface Association Descriptor)
bMaxPacketSize0          : 0x40 (64 bytes)
idVendor                 : 0x16C0 (Van Ooijen Technische Informatica)
idProduct                : 0x048A
bcdDevice                : 0x0280
iManufacturer            : 0x01 (String Descriptor 1)
 Language 0x0409         : "Teensyduino"
iProduct                 : 0x02 (String Descriptor 2)
 Language 0x0409         : "Teensy MIDI/Audio"
iSerialNumber            : 0x03 (String Descriptor 3)
 Language 0x0409         : "Audio-8/44B"
bNumConfigurations       : 0x01 (1 Configuration)
Data (HexDump)           : 12 01 00 02 EF 02 01 40 C0 16 8A 04 80 02 01 02   .......@........
                           03 01                                             ..

    ------------------ Configuration Descriptor -------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x02 (Configuration Descriptor)
wTotalLength             : 0x0190 (400 bytes)
bNumInterfaces           : 0x06 (6 Interfaces)
bConfigurationValue      : 0x01 (Configuration 1)
iConfiguration           : 0x00 (No String Descriptor)
bmAttributes             : 0xC0
 D7: Reserved, set 1     : 0x01
 D6: Self Powered        : 0x01 (yes)
 D5: Remote Wakeup       : 0x00 (no)
 D4..0: Reserved, set 0  : 0x00
MaxPower                 : 0x32 (100 mA)
Data (HexDump)           : 09 02 90 01 06 01 00 C0 32 08 0B 00 02 02 02 01   ........2.......
                           00 09 04 00 00 01 02 02 01 00 05 24 00 10 01 05   ...........$....
                           24 01 01 01 04 24 02 06 05 24 06 00 01 07 05 82   $....$...$......
                           03 10 00 05 09 04 01 00 02 0A 00 00 00 07 05 03   ................
                           02 00 02 00 07 05 83 02 00 02 00 08 0B 02 04 01   ................
                           00 20 00 09 04 02 00 00 01 01 20 00 09 24 01 00   . ........ ..$..
                           02 FF 75 00 00 08 24 0A 3A 01 05 00 00 11 24 02   ..u...$.:.....$.
                           01 02 06 00 3A 08 3F 06 00 00 00 00 00 00 0C 24   ....:.?........$
                           03 02 01 01 00 01 3A 00 00 00 11 24 02 03 01 01   ......:....$....
                           00 3A 08 3F 06 00 00 00 00 00 00 2A 24 06 31 03   .:.?.......*$.1.
                           03 00 00 00 0C 00 00 00 0C 00 00 00 0C 00 00 00   ................
                           0C 00 00 00 0C 00 00 00 0C 00 00 00 0C 00 00 00   ................
                           0C 00 00 00 00 0C 24 03 04 02 06 00 31 3A 00 00   ......$.....1:..
                           00 09 04 03 00 00 01 02 20 00 09 04 03 01 01 01   ........ .......
                           02 20 00 10 24 01 02 00 01 01 00 00 00 08 3F 06   . ..$.........?.
                           00 00 00 06 24 02 01 02 10 07 05 85 05 00 03 04   ....$...........
                           08 25 01 00 00 00 00 00 09 04 04 00 00 01 02 20   .%.............
                           00 09 04 04 01 02 01 02 20 00 10 24 01 03 00 01   ........ ..$....
                           01 00 00 00 08 3F 06 00 00 00 06 24 02 01 02 10   .....?.....$....
                           07 05 05 05 00 03 04 08 25 01 00 00 00 00 00 07   ........%.......
                           05 86 11 04 00 04 09 04 05 00 02 01 03 00 00 07   ................
                           24 01 00 01 25 00 06 24 02 01 01 00 06 24 02 02   $...%..$.....$..
                           02 00 09 24 03 01 03 01 02 01 00 09 24 03 02 04   ...$........$...
                           01 01 01 00 09 05 04 02 00 02 00 00 00 05 25 01   ..............%.
                           01 01 09 05 84 02 00 02 00 00 00 05 25 01 01 03   ............%...

        ------------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B (Interface Association Descriptor)
bFirstInterface          : 0x00 (Interface 0)
bInterfaceCount          : 0x02 (2 Interfaces)
bFunctionClass           : 0x02 (Communications and CDC Control)
bFunctionSubClass        : 0x02
bFunctionProtocol        : 0x01
iFunction                : 0x00 (No String Descriptor)
Data (HexDump)           : 08 0B 00 02 02 02 01 00                           ........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00 (Interface 0)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x02 (Communications and CDC Control)
bInterfaceSubClass       : 0x02 (Abstract Control Model)
bInterfaceProtocol       : 0x01 (AT Commands defined by ITU-T V.250 etc)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 00 00 01 02 02 01 00                        .........

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x05 (5 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x00 (Header Functional Descriptor)
bcdCDC                   : 0x110 (CDC Version 1.10)
Data (HexDump)           : 05 24 00 10 01                                    .$...

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x05 (5 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x01 (Call Management Functional Descriptor)
bmCapabilities           : 0x01
 D7..2                   : 0x00 (Reserved)
 D1                      : 0x00 (sends/receives call management information only over the Communication Class interface)
 D0                      : 0x01 (handles call management itself)
bDataInterface           : 0x01
Data (HexDump)           : 05 24 01 01 01                                    .$...

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x04 (4 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x02 (Abstract Control Management Functional Descriptor)
bmCapabilities           : 0x06
 D7..4                   : 0x00 (Reserved)
 D3                      : 0x00 (not supports the notification Network_Connection)
 D2                      : 0x01 (supports the request Send_Break)
 D1                      : 0x01 (supports the request combination of Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State)
 D0                      : 0x00 (not supports the request combination of Set_Comm_Feature, Clear_Comm_Feature, and Get_Comm_Feature)
Data (HexDump)           : 04 24 02 06                                       .$..

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x05 (5 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x06 (Union Functional Descriptor)
bControlInterface        : 0x00
bSubordinateInterface[0] : 0x01
Data (HexDump)           : 05 24 06 00 01                                    .$...

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0010
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x10 (16 bytes per packet)
bInterval                : 0x05 (16 microframes -> 2 ms)
Data (HexDump)           : 07 05 82 03 10 00 05                              .......

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01 (Interface 1)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x0A (CDC-Data)
bInterfaceSubClass       : 0x00
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 01 00 02 0A 00 00 00                        .........

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x03 (Direction=OUT EndpointID=3)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0200 (max 512 bytes)
bInterval                : 0x00 (never NAKs)
Data (HexDump)           : 07 05 03 02 00 02 00                              .......

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x83 (Direction=IN EndpointID=3)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0200 (max 512 bytes)
bInterval                : 0x00 (never NAKs)
Data (HexDump)           : 07 05 83 02 00 02 00                              .......

        ------------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B (Interface Association Descriptor)
bFirstInterface          : 0x02 (Interface 2)
bInterfaceCount          : 0x04 (4 Interfaces)
bFunctionClass           : 0x01 (Audio)
bFunctionSubClass        : 0x00 (undefined)
bFunctionProtocol        : 0x20 (AF 2.0)
iFunction                : 0x00 (No String Descriptor)
Data (HexDump)           : 08 0B 02 04 01 00 20 00                           ...... .

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02 (Interface 2)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x01 (Audio Control)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 00 00 01 01 20 00                        ....... .

        ---- Audio Control Interface Header Descriptor 2.0 ----
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (Header 2.0)
bcdADC                   : 0x0200 (2.0)
bCategory                : 0xFF (other)
wTotalLength             : 0x0075 (117 bytes)
bmControls               : 0x00
 D1..0: Latency          : 0x00 (not present)
 D7..2: Reserved         : 0x00
Data (HexDump)           : 09 24 01 00 02 FF 75 00 00                        .$....u..

        --- Audio Control Clock Source Unit Descriptor 2.0 ----
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x0A (Clock Source 2.0)
bClockID                 : 0x3A
bmAttributes             : 0x01
 D1..0: Clock Type       : 0x01
 D2   : Sync to SOF      : 0x00
 D7..3: Reserved         : 0x00
bmControls               : 0x05
 D1..0: Clock Frequency  : 0x01 (read only)
 D3..2: Clock Validity   : 0x01 (read only)
 D7..4: Reserved         : 0x00
bAssocTerminal           : 0x00
iClockSource             : 0x00 (No String Descriptor)
Data (HexDump)           : 08 24 0A 3A 01 05 00 00                           .$.:....

        ----- Audio Control Input Terminal Descriptor 2.0 -----
bLength                  : 0x11 (17 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal 2.0)
bTerminalID              : 0x01 (1)
wTerminalType            : 0x0602 (Digital audio interface)
bAssocTerminal           : 0x00
bCSourceID               : 0x3A (58)
bNrChannels              : 0x08 (8 Channels)
bmChannelConfig          : 0x0000063F (FL, FR, FC, LFE, BL, BR, SL, SR)
iChannelNames            : 0x00 (No String Descriptor)
bmControls               : 0x0000
 D1..0  : Copy Protect   : 0x00 (not present)
 D3..2  : Connector      : 0x00 (not present)
 D5..4  : Overload       : 0x00 (not present)
 D7..6  : Cluster        : 0x00 (not present)
 D9..8  : Underflow      : 0x00 (not present)
 D11..10: Overflow       : 0x00 (not present)
 D15..12: Reserved       : 0x00
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 11 24 02 01 02 06 00 3A 08 3F 06 00 00 00 00 00   .$.....:.?......
                           00                                                .

        ----- Audio Control Output Terminal Descriptor 2.0 ----
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal 2.0)
bTerminalID              : 0x02 (2)
wTerminalType            : 0x0101 (USB Streaming)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x01 (1)
bCSourceID               : 0x3A (58)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 03 02 01 01 00 01 3A 00 00 00               .$......:...

        ----- Audio Control Input Terminal Descriptor 2.0 -----
bLength                  : 0x11 (17 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal 2.0)
bTerminalID              : 0x03 (3)
wTerminalType            : 0x0101 (USB Streaming)
bAssocTerminal           : 0x00
bCSourceID               : 0x3A (58)
bNrChannels              : 0x08 (8 Channels)
bmChannelConfig          : 0x0000063F (FL, FR, FC, LFE, BL, BR, SL, SR)
iChannelNames            : 0x00 (No String Descriptor)
bmControls               : 0x0000
 D1..0  : Copy Protect   : 0x00 (not present)
 D3..2  : Connector      : 0x00 (not present)
 D5..4  : Overload       : 0x00 (not present)
 D7..6  : Cluster        : 0x00 (not present)
 D9..8  : Underflow      : 0x00 (not present)
 D11..10: Overflow       : 0x00 (not present)
 D15..12: Reserved       : 0x00
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 11 24 02 03 01 01 00 3A 08 3F 06 00 00 00 00 00   .$.....:.?......
                           00                                                .

        ------ Audio Control Feature Unit Descriptor 2.0 ------
bLength                  : 0x2A (42 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x06 (Feature Unit 2.0)
bUnitID                  : 0x31 (49)
bSourceID                : 0x03 (3)
bmaControls[0]           : 0x03, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x03 (host programmable)
 D3..2  : Volume          : 0x00 (not present)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[1]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[2]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[3]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[4]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[5]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[6]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[7]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[8]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
iFeature                 : 0x00 (No String Descriptor)
Data (HexDump)           : 2A 24 06 31 03 03 00 00 00 0C 00 00 00 0C 00 00   *$.1............
                           00 0C 00 00 00 0C 00 00 00 0C 00 00 00 0C 00 00   ................
                           00 0C 00 00 00 0C 00 00 00 00                     ..........

        ----- Audio Control Output Terminal Descriptor 2.0 ----
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal 2.0)
bTerminalID              : 0x04 (4)
wTerminalType            : 0x0602 (Digital audio interface)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x31 (49)
bCSourceID               : 0x3A (58)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 03 04 02 06 00 31 3A 00 00 00               .$.....1:...

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03 (Interface 3)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 00 00 01 02 20 00                        ....... .

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03 (Interface 3)
bAlternateSetting        : 0x01
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 01 01 01 02 20 00                        ....... .

        ------ Audio Streaming Interface Descriptor 2.0 -------
bLength                  : 0x10 (16 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (AS General)
bTerminalLink            : 0x02 (2)
bmControls               : 0x00
 D1..0: Active Alt Settng: 0x00 (not present)
 D3..2: Valid Alt Settng : 0x00 (not present)
 D7..4: Reserved         : 0x00
bFormatType              : 0x01 (FORMAT_TYPE_I)
bmFormats                : 0x00000001 (PCM)
bNrChannels              : 0x08 (8 channels)
bmChannelConfig          : 0x0000063F (FL, FR, FC, LFE, BL, BR, SL, SR)
iChannelNames            : 0x00 (No String Descriptor)
Data (HexDump)           : 10 24 01 02 00 01 01 00 00 00 08 3F 06 00 00 00   .$.........?....

        ----- Audio Streaming Format Type Descriptor 2.0 ------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bSubslotSize             : 0x02 (2 bytes)
bBitResolution           : 0x10 (16 bits)
Data (HexDump)           : 06 24 02 01 02 10                                 .$....

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x85 (Direction=IN EndpointID=5)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x0300
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x300 (768 bytes per packet)
bInterval                : 0x04 (8 microframes -> 1 ms)
Data (HexDump)           : 07 05 85 05 00 03 04                              .......

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 08 25 01 00 00 00 00 00                           .%......

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x04 (Interface 4)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 04 00 00 01 02 20 00                        ....... .

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x04 (Interface 4)
bAlternateSetting        : 0x01
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 04 01 02 01 02 20 00                        ....... .

        ------ Audio Streaming Interface Descriptor 2.0 -------
bLength                  : 0x10 (16 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (AS General)
bTerminalLink            : 0x03 (3)
bmControls               : 0x00
 D1..0: Active Alt Settng: 0x00 (not present)
 D3..2: Valid Alt Settng : 0x00 (not present)
 D7..4: Reserved         : 0x00
bFormatType              : 0x01 (FORMAT_TYPE_I)
bmFormats                : 0x00000001 (PCM)
bNrChannels              : 0x08 (8 channels)
bmChannelConfig          : 0x0000063F (FL, FR, FC, LFE, BL, BR, SL, SR)
iChannelNames            : 0x00 (No String Descriptor)
Data (HexDump)           : 10 24 01 03 00 01 01 00 00 00 08 3F 06 00 00 00   .$.........?....

        ----- Audio Streaming Format Type Descriptor 2.0 ------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bSubslotSize             : 0x02 (2 bytes)
bBitResolution           : 0x10 (16 bits)
Data (HexDump)           : 06 24 02 01 02 10                                 .$....

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x05 (Direction=OUT EndpointID=5)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x0300
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x300 (768 bytes per packet)
bInterval                : 0x04 (8 microframes -> 1 ms)
Data (HexDump)           : 07 05 05 05 00 03 04                              .......

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 08 25 01 00 00 00 00 00                           .%......

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x86 (Direction=IN EndpointID=6)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0004
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x04 (4 bytes per packet)
bInterval                : 0x04 (8 microframes -> 1 ms)
Data (HexDump)           : 07 05 86 11 04 00 04                              .......

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x05 (Interface 5)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x03 (MIDI Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 05 00 02 01 03 00 00                        .........

        - MIDI Adapter Class specific MS Interface Descriptor -
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x01 (MS Header)
bcdADC                   : 0x0100
wTotalLength             : 0x0025 (37 bytes)
Data (HexDump)           : 07 24 01 00 01 25 00 06 24 02 01 01 00 06 24 02   .$...%..$.....$.
                           02 02 00 09 24 03 01 03 01 02 01 00 09 24 03 02   ....$........$..
                           04 01 01 01 00                                    .....

        ---------------- MIDI IN Jack Descriptor --------------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x02 (MIDI_IN_JACK)
bJackType                : 0x01 (Embedded)
bJackID                  : 0x01 (ID=1)
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 06 24 02 01 01 00                                 .$....

        ---------------- MIDI IN Jack Descriptor --------------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x02 (MIDI_IN_JACK)
bJackType                : 0x02 (External)
bJackID                  : 0x02 (ID=2)
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 06 24 02 02 02 00                                 .$....

        --------------- MIDI OUT Jack Descriptor --------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x03 (MIDI_OUT_JACK)
bJackType                : 0x01 (Embedded)
bJackID                  : 0x03 (ID=3)
bNrInputPins             : 0x01 (1 pin)
baSourceID[1]            : 0x02 (input pin connected to entity ID=2)
baSourcePin[1]           : 0x01 (connected to input pin number 1
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 01 03 01 02 01 00                        .$.......

        --------------- MIDI OUT Jack Descriptor --------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x03 (MIDI_OUT_JACK)
bJackType                : 0x02 (External)
bJackID                  : 0x04 (ID=4)
bNrInputPins             : 0x01 (1 pin)
baSourceID[1]            : 0x01 (input pin connected to entity ID=1)
baSourcePin[1]           : 0x01 (connected to input pin number 1
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 02 04 01 01 01 00                        .$.......

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x04 (Direction=OUT EndpointID=4)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0200 (max 512 bytes)
bInterval                : 0x00 (0 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 04 02 00 02 00 00 00                        .........

        --- Class-Specific MS Bulk Data Endpoint Descriptor ---
bLength                  : 0x05 (5 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (MS General)
bNumEmbMIDIJack          : 0x01 (1 embedded MIDI jack)
baAssocJackID(1)         : 0x01 (Jack(1) ID=1)
Data (HexDump)           : 05 25 01 01 01                                    .%...

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x84 (Direction=IN EndpointID=4)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0200 (max 512 bytes)
bInterval                : 0x00 (0 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 84 02 00 02 00 00 00                        .........

        --- Class-Specific MS Bulk Data Endpoint Descriptor ---
bLength                  : 0x05 (5 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (MS General)
bNumEmbMIDIJack          : 0x01 (1 embedded MIDI jack)
baAssocJackID(1)         : 0x03 (Jack(1) ID=3)
Data (HexDump)           : 05 25 01 01 03                                    .%...

    --------- Device Qualifier Descriptor (for Full-Speed) --------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x06 (Device_qualifier Descriptor)
bcdUSB                   : 0x200 (USB Version 2.00)
bDeviceClass             : 0xEF (Miscellaneous)
bDeviceSubClass          : 0x02
bDeviceProtocol          : 0x01 (IAD - Interface Association Descriptor)
bMaxPacketSize0          : 0x40 (64 Bytes)
bNumConfigurations       : 0x01 (1 other-speed configuration)
bReserved                : 0x00
Data (HexDump)           : 0A 06 00 02 EF 02 01 40 01 00                     .......@..

    ------------ Other Speed Configuration Descriptor -------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x07 (Other_speed_configuration Descriptor)
wTotalLength             : 0x0190 (400 bytes)
bNumInterfaces           : 0x06 (6 Interfaces)
bConfigurationValue      : 0x01 (Configuration 1)
iConfiguration           : 0x00 (No String Descriptor)
bmAttributes             : 0xC0
 D7: Reserved, set 1     : 0x01
 D6: Self Powered        : 0x01 (yes)
 D5: Remote Wakeup       : 0x00 (no)
 D4..0: Reserved, set 0  : 0x00
MaxPower                 : 0x32 (100 mA)
Data (HexDump)           : 09 07 90 01 06 01 00 C0 32 08 0B 00 02 02 02 01   ........2.......
                           00 09 04 00 00 01 02 02 01 00 05 24 00 10 01 05   ...........$....
                           24 01 01 01 04 24 02 06 05 24 06 00 01 07 05 82   $....$...$......
                           03 10 00 10 09 04 01 00 02 0A 00 00 00 07 05 03   ................
                           02 40 00 00 07 05 83 02 40 00 00 08 0B 02 04 01   .@......@.......
                           00 20 00 09 04 02 00 00 01 01 20 00 09 24 01 00   . ........ ..$..
                           02 FF 75 00 00 08 24 0A 3A 01 05 00 00 11 24 02   ..u...$.:.....$.
                           01 02 06 00 3A 08 3F 06 00 00 00 00 00 00 0C 24   ....:.?........$
                           03 02 01 01 00 01 3A 00 00 00 11 24 02 03 01 01   ......:....$....
                           00 3A 08 3F 06 00 00 00 00 00 00 2A 24 06 31 03   .:.?.......*$.1.
                           03 00 00 00 0C 00 00 00 0C 00 00 00 0C 00 00 00   ................
                           0C 00 00 00 0C 00 00 00 0C 00 00 00 0C 00 00 00   ................
                           0C 00 00 00 00 0C 24 03 04 02 06 00 31 3A 00 00   ......$.....1:..
                           00 09 04 03 00 00 01 02 20 00 09 04 03 01 01 01   ........ .......
                           02 20 00 10 24 01 02 00 01 01 00 00 00 08 3F 06   . ..$.........?.
                           00 00 00 06 24 02 01 02 10 07 05 85 05 00 03 04   ....$...........
                           08 25 01 00 00 00 00 00 09 04 04 00 00 01 02 20   .%.............
                           00 09 04 04 01 02 01 02 20 00 10 24 01 03 00 01   ........ ..$....
                           01 00 00 00 08 3F 06 00 00 00 06 24 02 01 02 10   .....?.....$....
                           07 05 05 05 00 03 04 08 25 01 00 00 00 00 00 07   ........%.......
                           05 86 11 04 00 04 09 04 05 00 02 01 03 00 00 07   ................
                           24 01 00 01 25 00 06 24 02 01 01 00 06 24 02 02   $...%..$.....$..
                           02 00 09 24 03 01 03 01 02 01 00 09 24 03 02 04   ...$........$...
                           01 01 01 00 09 05 04 02 40 00 00 00 00 05 25 01   ........@.....%.
                           01 01 09 05 84 02 40 00 00 00 00 05 25 01 01 03   ......@.....%...

        ------------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B (Interface Association Descriptor)
bFirstInterface          : 0x00 (Interface 0)
bInterfaceCount          : 0x02 (2 Interfaces)
bFunctionClass           : 0x02 (Communications and CDC Control)
bFunctionSubClass        : 0x02
bFunctionProtocol        : 0x01
iFunction                : 0x00 (No String Descriptor)
Data (HexDump)           : 08 0B 00 02 02 02 01 00                           ........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00 (Interface 0)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x02 (Communications and CDC Control)
bInterfaceSubClass       : 0x02 (Abstract Control Model)
bInterfaceProtocol       : 0x01 (AT Commands defined by ITU-T V.250 etc)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 00 00 01 02 02 01 00                        .........

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x05 (5 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x00 (Header Functional Descriptor)
bcdCDC                   : 0x110 (CDC Version 1.10)
Data (HexDump)           : 05 24 00 10 01                                    .$...

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x05 (5 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x01 (Call Management Functional Descriptor)
bmCapabilities           : 0x01
 D7..2                   : 0x00 (Reserved)
 D1                      : 0x00 (sends/receives call management information only over the Communication Class interface)
 D0                      : 0x01 (handles call management itself)
bDataInterface           : 0x01
Data (HexDump)           : 05 24 01 01 01                                    .$...

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x04 (4 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x02 (Abstract Control Management Functional Descriptor)
bmCapabilities           : 0x06
 D7..4                   : 0x00 (Reserved)
 D3                      : 0x00 (not supports the notification Network_Connection)
 D2                      : 0x01 (supports the request Send_Break)
 D1                      : 0x01 (supports the request combination of Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State)
 D0                      : 0x00 (not supports the request combination of Set_Comm_Feature, Clear_Comm_Feature, and Get_Comm_Feature)
Data (HexDump)           : 04 24 02 06                                       .$..

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x05 (5 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x06 (Union Functional Descriptor)
bControlInterface        : 0x00
bSubordinateInterface[0] : 0x01
Data (HexDump)           : 05 24 06 00 01                                    .$...

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0010 (16 bytes)
bInterval                : 0x10 (16 ms)
Data (HexDump)           : 07 05 82 03 10 00 10                              .......

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01 (Interface 1)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x0A (CDC-Data)
bInterfaceSubClass       : 0x00
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 01 00 02 0A 00 00 00                        .........

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x03 (Direction=OUT EndpointID=3)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0040 (64 bytes)
bInterval                : 0x00 (ignored)
Data (HexDump)           : 07 05 03 02 40 00 00                              ....@..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x83 (Direction=IN EndpointID=3)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0040 (64 bytes)
bInterval                : 0x00 (ignored)
Data (HexDump)           : 07 05 83 02 40 00 00                              ....@..

        ------------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B (Interface Association Descriptor)
bFirstInterface          : 0x02 (Interface 2)
bInterfaceCount          : 0x04 (4 Interfaces)
bFunctionClass           : 0x01 (Audio)
bFunctionSubClass        : 0x00 (undefined)
bFunctionProtocol        : 0x20 (AF 2.0)
iFunction                : 0x00 (No String Descriptor)
Data (HexDump)           : 08 0B 02 04 01 00 20 00                           ...... .

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02 (Interface 2)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x01 (Audio Control)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 00 00 01 01 20 00                        ....... .

        ---- Audio Control Interface Header Descriptor 2.0 ----
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (Header 2.0)
bcdADC                   : 0x0200 (2.0)
bCategory                : 0xFF (other)
wTotalLength             : 0x0075 (117 bytes)
bmControls               : 0x00
 D1..0: Latency          : 0x00 (not present)
 D7..2: Reserved         : 0x00
Data (HexDump)           : 09 24 01 00 02 FF 75 00 00                        .$....u..

        --- Audio Control Clock Source Unit Descriptor 2.0 ----
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x0A (Clock Source 2.0)
bClockID                 : 0x3A
bmAttributes             : 0x01
 D1..0: Clock Type       : 0x01
 D2   : Sync to SOF      : 0x00
 D7..3: Reserved         : 0x00
bmControls               : 0x05
 D1..0: Clock Frequency  : 0x01 (read only)
 D3..2: Clock Validity   : 0x01 (read only)
 D7..4: Reserved         : 0x00
bAssocTerminal           : 0x00
iClockSource             : 0x00 (No String Descriptor)
Data (HexDump)           : 08 24 0A 3A 01 05 00 00                           .$.:....

        ----- Audio Control Input Terminal Descriptor 2.0 -----
bLength                  : 0x11 (17 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal 2.0)
bTerminalID              : 0x01 (1)
wTerminalType            : 0x0602 (Digital audio interface)
bAssocTerminal           : 0x00
bCSourceID               : 0x3A (58)
bNrChannels              : 0x08 (8 Channels)
bmChannelConfig          : 0x0000063F (FL, FR, FC, LFE, BL, BR, SL, SR)
iChannelNames            : 0x00 (No String Descriptor)
bmControls               : 0x0000
 D1..0  : Copy Protect   : 0x00 (not present)
 D3..2  : Connector      : 0x00 (not present)
 D5..4  : Overload       : 0x00 (not present)
 D7..6  : Cluster        : 0x00 (not present)
 D9..8  : Underflow      : 0x00 (not present)
 D11..10: Overflow       : 0x00 (not present)
 D15..12: Reserved       : 0x00
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 11 24 02 01 02 06 00 3A 08 3F 06 00 00 00 00 00   .$.....:.?......
                           00                                                .

        ----- Audio Control Output Terminal Descriptor 2.0 ----
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal 2.0)
bTerminalID              : 0x02 (2)
wTerminalType            : 0x0101 (USB Streaming)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x01 (1)
bCSourceID               : 0x3A (58)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 03 02 01 01 00 01 3A 00 00 00               .$......:...

        ----- Audio Control Input Terminal Descriptor 2.0 -----
bLength                  : 0x11 (17 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal 2.0)
bTerminalID              : 0x03 (3)
wTerminalType            : 0x0101 (USB Streaming)
bAssocTerminal           : 0x00
bCSourceID               : 0x3A (58)
bNrChannels              : 0x08 (8 Channels)
bmChannelConfig          : 0x0000063F (FL, FR, FC, LFE, BL, BR, SL, SR)
iChannelNames            : 0x00 (No String Descriptor)
bmControls               : 0x0000
 D1..0  : Copy Protect   : 0x00 (not present)
 D3..2  : Connector      : 0x00 (not present)
 D5..4  : Overload       : 0x00 (not present)
 D7..6  : Cluster        : 0x00 (not present)
 D9..8  : Underflow      : 0x00 (not present)
 D11..10: Overflow       : 0x00 (not present)
 D15..12: Reserved       : 0x00
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 11 24 02 03 01 01 00 3A 08 3F 06 00 00 00 00 00   .$.....:.?......
                           00                                                .

        ------ Audio Control Feature Unit Descriptor 2.0 ------
bLength                  : 0x2A (42 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x06 (Feature Unit 2.0)
bUnitID                  : 0x31 (49)
bSourceID                : 0x03 (3)
bmaControls[0]           : 0x03, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x03 (host programmable)
 D3..2  : Volume          : 0x00 (not present)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[1]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[2]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[3]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[4]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[5]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[6]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[7]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
bmaControls[8]           : 0x0C, 0x00, 0x00, 0x00
 D1..0  : Mute            : 0x00 (not present)
 D3..2  : Volume          : 0x03 (host programmable)
 D5..4  : Bass            : 0x00 (not present)
 D7..6  : Mid             : 0x00 (not present)
 D9..8  : Treble          : 0x00 (not present)
 D11..10: Graph Equalizer : 0x00 (not present)
 D13..12: Automatic Gain  : 0x00 (not present)
 D15..14: Delay           : 0x00 (not present)
 D17..16: Bass Boost      : 0x00 (not present)
 D19..18: Loudness        : 0x00 (not present)
 D21..20: Input Gain      : 0x00 (not present)
 D23..22: Input Gain Pad  : 0x00 (not present)
 D25..24: Phase Inverter  : 0x00 (not present)
 D27..26: Underflow       : 0x00 (not present)
 D29..28: Overflow        : 0x00 (not present)
 D31..30: reserved        : 0x00 (not present)
iFeature                 : 0x00 (No String Descriptor)
Data (HexDump)           : 2A 24 06 31 03 03 00 00 00 0C 00 00 00 0C 00 00   *$.1............
                           00 0C 00 00 00 0C 00 00 00 0C 00 00 00 0C 00 00   ................
                           00 0C 00 00 00 0C 00 00 00 00                     ..........

        ----- Audio Control Output Terminal Descriptor 2.0 ----
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal 2.0)
bTerminalID              : 0x04 (4)
wTerminalType            : 0x0602 (Digital audio interface)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x31 (49)
bCSourceID               : 0x3A (58)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 03 04 02 06 00 31 3A 00 00 00               .$.....1:...

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03 (Interface 3)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 00 00 01 02 20 00                        ....... .

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03 (Interface 3)
bAlternateSetting        : 0x01
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 01 01 01 02 20 00                        ....... .

        ------ Audio Streaming Interface Descriptor 2.0 -------
bLength                  : 0x10 (16 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (AS General)
bTerminalLink            : 0x02 (2)
bmControls               : 0x00
 D1..0: Active Alt Settng: 0x00 (not present)
 D3..2: Valid Alt Settng : 0x00 (not present)
 D7..4: Reserved         : 0x00
bFormatType              : 0x01 (FORMAT_TYPE_I)
bmFormats                : 0x00000001 (PCM)
bNrChannels              : 0x08 (8 channels)
bmChannelConfig          : 0x0000063F (FL, FR, FC, LFE, BL, BR, SL, SR)
iChannelNames            : 0x00 (No String Descriptor)
Data (HexDump)           : 10 24 01 02 00 01 01 00 00 00 08 3F 06 00 00 00   .$.........?....

        ----- Audio Streaming Format Type Descriptor 2.0 ------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bSubslotSize             : 0x02 (2 bytes)
bBitResolution           : 0x10 (16 bits)
Data (HexDump)           : 06 24 02 01 02 10                                 .$....

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x85 (Direction=IN EndpointID=5)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x0300 (768 bytes)
bInterval                : 0x04 (4 ms)
Data (HexDump)           : 07 05 85 05 00 03 04                              .......

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 08 25 01 00 00 00 00 00                           .%......

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x04 (Interface 4)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 04 00 00 01 02 20 00                        ....... .

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x04 (Interface 4)
bAlternateSetting        : 0x01
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x20 (Device Protocol Version 2.0)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 04 01 02 01 02 20 00                        ....... .

        ------ Audio Streaming Interface Descriptor 2.0 -------
bLength                  : 0x10 (16 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (AS General)
bTerminalLink            : 0x03 (3)
bmControls               : 0x00
 D1..0: Active Alt Settng: 0x00 (not present)
 D3..2: Valid Alt Settng : 0x00 (not present)
 D7..4: Reserved         : 0x00
bFormatType              : 0x01 (FORMAT_TYPE_I)
bmFormats                : 0x00000001 (PCM)
bNrChannels              : 0x08 (8 channels)
bmChannelConfig          : 0x0000063F (FL, FR, FC, LFE, BL, BR, SL, SR)
iChannelNames            : 0x00 (No String Descriptor)
Data (HexDump)           : 10 24 01 03 00 01 01 00 00 00 08 3F 06 00 00 00   .$.........?....

        ----- Audio Streaming Format Type Descriptor 2.0 ------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bSubslotSize             : 0x02 (2 bytes)
bBitResolution           : 0x10 (16 bits)
Data (HexDump)           : 06 24 02 01 02 10                                 .$....

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x05 (Direction=OUT EndpointID=5)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x0300 (768 bytes)
bInterval                : 0x04 (4 ms)
Data (HexDump)           : 07 05 05 05 00 03 04                              .......

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 08 25 01 00 00 00 00 00                           .%......

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x86 (Direction=IN EndpointID=6)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0004 (4 bytes)
bInterval                : 0x04 (4 ms)
Data (HexDump)           : 07 05 86 11 04 00 04                              .......

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x05 (Interface 5)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x03 (MIDI Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 05 00 02 01 03 00 00                        .........

        - MIDI Adapter Class specific MS Interface Descriptor -
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x01 (MS Header)
bcdADC                   : 0x0100
wTotalLength             : 0x0025 (37 bytes)
Data (HexDump)           : 07 24 01 00 01 25 00 06 24 02 01 01 00 06 24 02   .$...%..$.....$.
                           02 02 00 09 24 03 01 03 01 02 01 00 09 24 03 02   ....$........$..
                           04 01 01 01 00                                    .....

        ---------------- MIDI IN Jack Descriptor --------------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x02 (MIDI_IN_JACK)
bJackType                : 0x01 (Embedded)
bJackID                  : 0x01 (ID=1)
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 06 24 02 01 01 00                                 .$....

        ---------------- MIDI IN Jack Descriptor --------------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x02 (MIDI_IN_JACK)
bJackType                : 0x02 (External)
bJackID                  : 0x02 (ID=2)
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 06 24 02 02 02 00                                 .$....

        --------------- MIDI OUT Jack Descriptor --------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x03 (MIDI_OUT_JACK)
bJackType                : 0x01 (Embedded)
bJackID                  : 0x03 (ID=3)
bNrInputPins             : 0x01 (1 pin)
baSourceID[1]            : 0x02 (input pin connected to entity ID=2)
baSourcePin[1]           : 0x01 (connected to input pin number 1
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 01 03 01 02 01 00                        .$.......

        --------------- MIDI OUT Jack Descriptor --------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x03 (MIDI_OUT_JACK)
bJackType                : 0x02 (External)
bJackID                  : 0x04 (ID=4)
bNrInputPins             : 0x01 (1 pin)
baSourceID[1]            : 0x01 (input pin connected to entity ID=1)
baSourcePin[1]           : 0x01 (connected to input pin number 1
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 02 04 01 01 01 00                        .$.......

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x04 (Direction=OUT EndpointID=4)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0040 (64 bytes)
bInterval                : 0x00 (0 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 04 02 40 00 00 00 00                        ....@....

        --- Class-Specific MS Bulk Data Endpoint Descriptor ---
bLength                  : 0x05 (5 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (MS General)
bNumEmbMIDIJack          : 0x01 (1 embedded MIDI jack)
baAssocJackID(1)         : 0x01 (Jack(1) ID=1)
Data (HexDump)           : 05 25 01 01 01                                    .%...

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x84 (Direction=IN EndpointID=4)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0040 (64 bytes)
bInterval                : 0x00 (0 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 84 02 40 00 00 00 00                        ....@....

        --- Class-Specific MS Bulk Data Endpoint Descriptor ---
bLength                  : 0x05 (5 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (MS General)
bNumEmbMIDIJack          : 0x01 (1 embedded MIDI jack)
baAssocJackID(1)         : 0x03 (Jack(1) ID=3)
Data (HexDump)           : 05 25 01 01 03                                    .%...

      -------------------- String Descriptors -------------------
             ------ String Descriptor 0 ------
bLength                  : 0x04 (4 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language ID[0]           : 0x0409 (English - United States)
Data (HexDump)           : 04 03 09 04                                       ....
             ------ String Descriptor 1 ------
bLength                  : 0x18 (24 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "Teensyduino"
Data (HexDump)           : 18 03 54 00 65 00 65 00 6E 00 73 00 79 00 64 00   ..T.e.e.n.s.y.d.
                           75 00 69 00 6E 00 6F 00                           u.i.n.o.
             ------ String Descriptor 2 ------
bLength                  : 0x24 (36 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "Teensy MIDI/Audio"
Data (HexDump)           : 24 03 54 00 65 00 65 00 6E 00 73 00 79 00 20 00   $.T.e.e.n.s.y. .
                           4D 00 49 00 44 00 49 00 2F 00 41 00 75 00 64 00   M.I.D.I./.A.u.d.
                           69 00 6F 00                                       i.o.
             ------ String Descriptor 3 ------
bLength                  : 0x18 (24 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "Audio-8/44B"
Data (HexDump)           : 18 03 41 00 75 00 64 00 69 00 6F 00 2D 00 38 00   ..A.u.d.i.o.-.8.
                           2F 00 34 00 34 00 42 00                           /.4.4.B.

For comparison, the existing descriptor shows up like this ... OK, so continued in next post because 100k character limit...
 
...like this:
Code:
    =========================== USB Port1 ===========================

Connection Status        : 0x01 (Device is connected)
Port Chain               : 2-1
Properties               : 0x01
 IsUserConnectable       : yes
 PortIsDebugCapable      : no
 PortHasMultiCompanions  : no
 PortConnectorIsTypeC    : no
ConnectionIndex          : 0x01 (Port 1)
CompanionIndex           : 0
 CompanionHubSymLnk      : USB#ROOT_HUB30#4&92b3c53&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
 CompanionPortNumber     : 0x11 (Port 17)
 -> CompanionPortChain   : 2-17

      ========================== Summary =========================
Vendor ID                : 0x16C0 (Van Ooijen Technische Informatica)
Product ID               : 0x048A
USB Version              : 2.0
Port maximum Speed       : High-Speed (Companion Port 2-17 supports SuperSpeed)
Device maximum Speed     : High-Speed
Device Connection Speed  : High-Speed
Self powered             : yes
Demanded Current         : 100 mA
Used Endpoints           : 6

      ======================== USB Device ========================

        +++++++++++++++++ Device Information ++++++++++++++++++
Device Description       : USB Composite Device
Device Path              : \\?\USB#VID_16C0&PID_048A#9073220#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Kernel Name              : \Device\USBPDO-19
Device ID                : USB\VID_16C0&PID_048A\9073220
Hardware IDs             : USB\VID_16C0&PID_048A&REV_0280 USB\VID_16C0&PID_048A
Driver KeyName           : {36fc9e60-c465-11cf-8056-444553540000}\0023 (GUID_DEVCLASS_USB)
Driver                   : \SystemRoot\System32\drivers\usbccgp.sys (Version: 10.0.19041.4474  Date: 2024-06-11)
Driver Inf               : C:\WINDOWS\inf\usb.inf
Legacy BusType           : PNPBus
Class                    : USB
Class GUID               : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
Service                  : usbccgp
Enumerator               : USB
Location Info            : Port_#0001.Hub_#0002
Location IDs             : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1), ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS01)
Container ID             : {c2559e9c-efb9-5a18-b574-dcc33dfc77ca}
Manufacturer Info        : (Standard USB Host Controller)
Capabilities             : 0x94 (Removable, UniqueID, SurpriseRemovalOK)
Status                   : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code             : 0
Address                  : 1
HcDisableSelectiveSuspend: 0
EnableSelectiveSuspend   : 0
SelectiveSuspendEnabled  : 0
EnhancedPowerMgmtEnabled : 0
IdleInWorkingState       : 0
WakeFromSleepState       : 0
Power State              : D0 (supported: D0, D3, wake from D0)
 Child Device 1          : USB Serial Device (COM32)
  Device Path            : \\?\USB#VID_16C0&PID_048A&MI_00#6&6d0016d&b&0000#{86e0d1e0-8089-11d0-9ce4-08003e301f73} (GUID_DEVINTERFACE_COMPORT)
  Kernel Name            : \Device\0000027e
  Device ID              : USB\VID_16C0&PID_048A&MI_00\6&6D0016D&B&0000
  Class                  : Ports
  Driver KeyName         : {4d36e978-e325-11ce-bfc1-08002be10318}\0001 (GUID_DEVCLASS_PORTS)
  Service                : usbser
  Location               : 0000.0014.0000.001.000.000.000.000.000
  LocationPaths          : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USBMI(0)  PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USB(1)  ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS01)#USBMI(0)  ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS01)#USB(1)
  COM-Port               : COM32 (\Device\USBSER000)
 Child Device 2          : Teensy MIDI/Audio (USB Audio Device)
  Device Path 1          : \\?\USB#VID_16C0&PID_048A&MI_02#6&6d0016d&b&0002#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\msft_wave (AM_KSCATEGORY_CAPTURE)
  Device Path 2          : \\?\USB#VID_16C0&PID_048A&MI_02#6&6d0016d&b&0002#{65e8773e-8f56-11d0-a3b9-00a0c9223196}\msft_wave (AM_KSCATEGORY_RENDER)
  Device Path 3          : \\?\USB#VID_16C0&PID_048A&MI_02#6&6d0016d&b&0002#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\msft_wave (AM_KSCATEGORY_AUDIO)
  Device Path 4          : \\?\USB#VID_16C0&PID_048A&MI_02#6&6d0016d&b&0002#{eb115ffc-10c8-4964-831d-6dcb02e6f23f}\msft_wave (STATIC_KSCATEGORY_REALTIME)
  Device Path 5          : \\?\USB#VID_16C0&PID_048A&MI_02#6&6d0016d&b&0002#{dda54a40-1e4c-11d1-a050-405705c10000}\msft_topo (STATIC_KSCATEGORY_TOPOLOGY)
  Kernel Name            : \Device\0000027f
  Device ID              : USB\VID_16C0&PID_048A&MI_02\6&6D0016D&B&0002
  Class                  : MEDIA
  Driver KeyName         : {4d36e96c-e325-11ce-bfc1-08002be10318}\0005 (GUID_DEVCLASS_MEDIA)
  Service                : usbaudio
  Location               : 0000.0014.0000.001.000.000.000.000.000
  LocationPaths          : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USBMI(2)  ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS01)#USBMI(2)
   Child Device 1        : 2 - Teensy MIDI/Audio [0] (Generic software device)
    Device ID            : SWD\MMDEVAPI\MIDII_DA365D42.P_0000
    Class                : SoftwareDevice
    Driver KeyName       : {62f9c741-b25a-46ce-b54c-9bccce08b6f2}\0081 (GUID_DEVCLASS_SWD)
   Child Device 2        : 2 - Teensy MIDI/Audio [1] (Generic software device)
    Device ID            : SWD\MMDEVAPI\MIDII_DA365D42.P_0001
    Class                : SoftwareDevice
    Driver KeyName       : {62f9c741-b25a-46ce-b54c-9bccce08b6f2}\0082 (GUID_DEVCLASS_SWD)
 Child Device 3          : Teensy MIDI/Audio (USB Audio Device)
  Device Path 1          : \\?\USB#VID_16C0&PID_048A&MI_03#6&6d0016d&b&0003#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 2          : \\?\USB#VID_16C0&PID_048A&MI_03#6&6d0016d&b&0003#{65e8773e-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_RENDER)
  Device Path 3          : \\?\USB#VID_16C0&PID_048A&MI_03#6&6d0016d&b&0003#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\global (AM_KSCATEGORY_AUDIO)
  Kernel Name            : \Device\00000280
  Device ID              : USB\VID_16C0&PID_048A&MI_03\6&6D0016D&B&0003
  Class                  : MEDIA
  Driver KeyName         : {4d36e96c-e325-11ce-bfc1-08002be10318}\0013 (GUID_DEVCLASS_MEDIA)
  Service                : usbaudio
  Location               : 0000.0014.0000.001.000.000.000.000.000
  LocationPaths          : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USBMI(3)  ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS01)#USBMI(3)
   Child Device 1        : Digital Audio Interface (Teensy MIDI/Audio) (Audio Endpoint)
    Device ID            : SWD\MMDEVAPI\{0.0.0.00000000}.{2B1A3D8A-3ACE-45A1-A755-B02DCC121E95}
    Class                : AudioEndpoint
    Driver KeyName       : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0030 (AUDIOENDPOINT_CLASS_UUID)
   Child Device 2        : Digital Audio Interface (Teensy MIDI/Audio) (Audio Endpoint)
    Device ID            : SWD\MMDEVAPI\{0.0.1.00000000}.{CA66C5B5-5B81-4672-9ADB-FC149A8489FB}
    Class                : AudioEndpoint
    Driver KeyName       : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0031 (AUDIOENDPOINT_CLASS_UUID)

        +++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\16C0048A0280
 osvc                    : REG_BINARY 00 00
 NewInterfaceUsage       : REG_DWORD 00000000 (0)

        ---------------- Connection Information ---------------
Connection Index         : 0x01 (Port 1)
Connection Status        : 0x01 (DeviceConnected)
Current Config Value     : 0x01 (Configuration 1)
Device Address           : 0x1B (27)
Is Hub                   : 0x00 (no)
Device Bus Speed         : 0x02 (High-Speed)
Number Of Open Pipes     : 0x05 (5 pipes to data endpoints)
Pipe[0]                  : EndpointID=2  Direction=IN   ScheduleOffset=0  Type=Interrupt  wMaxPacketSize=0x10    bInterval=5   -> 270 Bits/ms = 33750 Bytes/s
Pipe[1]                  : EndpointID=3  Direction=OUT  ScheduleOffset=0  Type=Bulk       wMaxPacketSize=0x200   bInterval=0 
Pipe[2]                  : EndpointID=3  Direction=IN   ScheduleOffset=0  Type=Bulk       wMaxPacketSize=0x200   bInterval=0 
Pipe[3]                  : EndpointID=4  Direction=OUT  ScheduleOffset=0  Type=Bulk       wMaxPacketSize=0x200   bInterval=0 
Pipe[4]                  : EndpointID=4  Direction=IN   ScheduleOffset=0  Type=Bulk       wMaxPacketSize=0x200   bInterval=0 
Data (HexDump)           : 01 00 00 00 12 01 00 02 EF 02 01 40 C0 16 8A 04   ...........@....
                           80 02 01 02 03 01 01 02 00 1B 00 05 00 00 00 01   ................
                           00 00 00 07 05 82 03 10 00 05 00 00 00 00 07 05   ................
                           03 02 00 02 00 00 00 00 00 07 05 83 02 00 02 00   ................
                           00 00 00 00 09 05 04 02 00 02 00 00 00 00 00 09   ................
                           05 84 02 00 02 00 00 00 00 00                     ..........

        --------------- Connection Information V2 -------------
Connection Index         : 0x01 (1)
Length                   : 0x10 (16 bytes)
SupportedUsbProtocols    : 0x03
 Usb110                  : 1 (yes, port supports USB 1.1)
 Usb200                  : 1 (yes, port supports USB 2.0)
 Usb300                  : 0 (no, port not supports USB 3.0) -> but Companion Port 2-17 does
 ReservedMBZ             : 0x00
Flags                    : 0x00
 DevIsOpAtSsOrHigher     : 0 (Device is not operating at SuperSpeed or higher)
 DevIsSsCapOrHigher      : 0 (Device is not SuperSpeed capable or higher)
 DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher)
 DevIsSsPlusCapOrHigher  : 0 (Device is not SuperSpeedPlus capable or higher)
 ReservedMBZ             : 0x00
Data (HexDump)           : 01 00 00 00 10 00 00 00 03 00 00 00 00 00 00 00   ................

    ---------------------- Device Descriptor ----------------------
bLength                  : 0x12 (18 bytes)
bDescriptorType          : 0x01 (Device Descriptor)
bcdUSB                   : 0x200 (USB Version 2.0)
bDeviceClass             : 0xEF (Miscellaneous)
bDeviceSubClass          : 0x02
bDeviceProtocol          : 0x01 (IAD - Interface Association Descriptor)
bMaxPacketSize0          : 0x40 (64 bytes)
idVendor                 : 0x16C0 (Van Ooijen Technische Informatica)
idProduct                : 0x048A
bcdDevice                : 0x0280
iManufacturer            : 0x01 (String Descriptor 1)
 Language 0x0409         : "Teensyduino"
iProduct                 : 0x02 (String Descriptor 2)
 Language 0x0409         : "Teensy MIDI/Audio"
iSerialNumber            : 0x03 (String Descriptor 3)
 Language 0x0409         : "9073220"
bNumConfigurations       : 0x01 (1 Configuration)
Data (HexDump)           : 12 01 00 02 EF 02 01 40 C0 16 8A 04 80 02 01 02   .......@........
                           03 01                                             ..

    ------------------ Configuration Descriptor -------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x02 (Configuration Descriptor)
wTotalLength             : 0x0155 (341 bytes)
bNumInterfaces           : 0x06 (6 Interfaces)
bConfigurationValue      : 0x01 (Configuration 1)
iConfiguration           : 0x00 (No String Descriptor)
bmAttributes             : 0xC0
 D7: Reserved, set 1     : 0x01
 D6: Self Powered        : 0x01 (yes)
 D5: Remote Wakeup       : 0x00 (no)
 D4..0: Reserved, set 0  : 0x00
MaxPower                 : 0x32 (100 mA)
Data (HexDump)           : 09 02 55 01 06 01 00 C0 32 08 0B 00 02 02 02 01   ..U.....2.......
                           00 09 04 00 00 01 02 02 01 00 05 24 00 10 01 05   ...........$....
                           24 01 01 01 04 24 02 06 05 24 06 00 01 07 05 82   $....$...$......
                           03 10 00 05 09 04 01 00 02 0A 00 00 00 07 05 03   ................
                           02 00 02 00 07 05 83 02 00 02 00 09 04 02 00 02   ................
                           01 03 00 00 07 24 01 00 01 25 00 06 24 02 01 01   .....$...%..$...
                           00 06 24 02 02 02 00 09 24 03 01 03 01 02 01 00   ..$.....$.......
                           09 24 03 02 04 01 01 01 00 09 05 04 02 00 02 00   .$..............
                           00 00 05 25 01 01 01 09 05 84 02 00 02 00 00 00   ...%............
                           05 25 01 01 03 08 0B 03 03 01 01 00 00 09 04 03   .%..............
                           00 00 01 01 00 00 0A 24 01 00 01 3E 00 02 04 05   .......$...>....
                           0C 24 02 01 02 06 00 02 03 00 00 00 09 24 03 02   .$...........$..
                           01 01 00 01 00 0C 24 02 03 01 01 00 02 03 00 00   ......$.........
                           00 0A 24 06 31 03 01 01 02 02 00 09 24 03 04 02   ..$.1.......$...
                           06 00 31 00 09 04 04 00 00 01 02 00 00 09 04 04   ..1.............
                           01 01 01 02 00 00 07 24 01 02 03 01 00 0B 24 02   .......$......$.
                           01 02 02 10 01 44 AC 00 09 05 85 09 B4 00 04 00   .....D..........
                           00 07 25 01 00 00 00 00 09 04 05 00 00 01 02 00   ..%.............
                           00 09 04 05 01 02 01 02 00 00 07 24 01 03 03 01   ...........$....
                           00 0B 24 02 01 02 02 10 01 44 AC 00 09 05 05 05   ..$......D......
                           B4 00 04 00 86 07 25 01 00 00 00 00 09 05 86 11   ......%.........
                           04 00 04 07 00                                    .....

        ------------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B (Interface Association Descriptor)
bFirstInterface          : 0x00 (Interface 0)
bInterfaceCount          : 0x02 (2 Interfaces)
bFunctionClass           : 0x02 (Communications and CDC Control)
bFunctionSubClass        : 0x02
bFunctionProtocol        : 0x01
iFunction                : 0x00 (No String Descriptor)
Data (HexDump)           : 08 0B 00 02 02 02 01 00                           ........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00 (Interface 0)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x02 (Communications and CDC Control)
bInterfaceSubClass       : 0x02 (Abstract Control Model)
bInterfaceProtocol       : 0x01 (AT Commands defined by ITU-T V.250 etc)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 00 00 01 02 02 01 00                        .........

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x05 (5 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x00 (Header Functional Descriptor)
bcdCDC                   : 0x110 (CDC Version 1.10)
Data (HexDump)           : 05 24 00 10 01                                    .$...

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x05 (5 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x01 (Call Management Functional Descriptor)
bmCapabilities           : 0x01
 D7..2                   : 0x00 (Reserved)
 D1                      : 0x00 (sends/receives call management information only over the Communication Class interface)
 D0                      : 0x01 (handles call management itself)
bDataInterface           : 0x01
Data (HexDump)           : 05 24 01 01 01                                    .$...

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x04 (4 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x02 (Abstract Control Management Functional Descriptor)
bmCapabilities           : 0x06
 D7..4                   : 0x00 (Reserved)
 D3                      : 0x00 (not supports the notification Network_Connection)
 D2                      : 0x01 (supports the request Send_Break)
 D1                      : 0x01 (supports the request combination of Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State)
 D0                      : 0x00 (not supports the request combination of Set_Comm_Feature, Clear_Comm_Feature, and Get_Comm_Feature)
Data (HexDump)           : 04 24 02 06                                       .$..

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x05 (5 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x06 (Union Functional Descriptor)
bControlInterface        : 0x00
bSubordinateInterface[0] : 0x01
Data (HexDump)           : 05 24 06 00 01                                    .$...

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0010
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x10 (16 bytes per packet)
bInterval                : 0x05 (16 microframes -> 2 ms)
Data (HexDump)           : 07 05 82 03 10 00 05                              .......

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01 (Interface 1)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x0A (CDC-Data)
bInterfaceSubClass       : 0x00
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 01 00 02 0A 00 00 00                        .........

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x03 (Direction=OUT EndpointID=3)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0200 (max 512 bytes)
bInterval                : 0x00 (never NAKs)
Data (HexDump)           : 07 05 03 02 00 02 00                              .......

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x83 (Direction=IN EndpointID=3)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0200 (max 512 bytes)
bInterval                : 0x00 (never NAKs)
Data (HexDump)           : 07 05 83 02 00 02 00                              .......

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02 (Interface 2)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x03 (MIDI Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 00 02 01 03 00 00                        .........

        - MIDI Adapter Class specific MS Interface Descriptor -
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x01 (MS Header)
bcdADC                   : 0x0100
wTotalLength             : 0x0025 (37 bytes)
Data (HexDump)           : 07 24 01 00 01 25 00 06 24 02 01 01 00 06 24 02   .$...%..$.....$.
                           02 02 00 09 24 03 01 03 01 02 01 00 09 24 03 02   ....$........$..
                           04 01 01 01 00                                    .....

        ---------------- MIDI IN Jack Descriptor --------------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x02 (MIDI_IN_JACK)
bJackType                : 0x01 (Embedded)
bJackID                  : 0x01 (ID=1)
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 06 24 02 01 01 00                                 .$....

        ---------------- MIDI IN Jack Descriptor --------------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x02 (MIDI_IN_JACK)
bJackType                : 0x02 (External)
bJackID                  : 0x02 (ID=2)
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 06 24 02 02 02 00                                 .$....

        --------------- MIDI OUT Jack Descriptor --------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x03 (MIDI_OUT_JACK)
bJackType                : 0x01 (Embedded)
bJackID                  : 0x03 (ID=3)
bNrInputPins             : 0x01 (1 pin)
baSourceID[1]            : 0x02 (input pin connected to entity ID=2)
baSourcePin[1]           : 0x01 (connected to input pin number 1
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 01 03 01 02 01 00                        .$.......

        --------------- MIDI OUT Jack Descriptor --------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x03 (MIDI_OUT_JACK)
bJackType                : 0x02 (External)
bJackID                  : 0x04 (ID=4)
bNrInputPins             : 0x01 (1 pin)
baSourceID[1]            : 0x01 (input pin connected to entity ID=1)
baSourcePin[1]           : 0x01 (connected to input pin number 1
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 02 04 01 01 01 00                        .$.......

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x04 (Direction=OUT EndpointID=4)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0200 (max 512 bytes)
bInterval                : 0x00 (0 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 04 02 00 02 00 00 00                        .........

        --- Class-Specific MS Bulk Data Endpoint Descriptor ---
bLength                  : 0x05 (5 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (MS General)
bNumEmbMIDIJack          : 0x01 (1 embedded MIDI jack)
baAssocJackID(1)         : 0x01 (Jack(1) ID=1)
Data (HexDump)           : 05 25 01 01 01                                    .%...

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x84 (Direction=IN EndpointID=4)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0200 (max 512 bytes)
bInterval                : 0x00 (0 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 84 02 00 02 00 00 00                        .........

        --- Class-Specific MS Bulk Data Endpoint Descriptor ---
bLength                  : 0x05 (5 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (MS General)
bNumEmbMIDIJack          : 0x01 (1 embedded MIDI jack)
baAssocJackID(1)         : 0x03 (Jack(1) ID=3)
Data (HexDump)           : 05 25 01 01 03                                    .%...

        ------------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B (Interface Association Descriptor)
bFirstInterface          : 0x03 (Interface 3)
bInterfaceCount          : 0x03 (3 Interfaces)
bFunctionClass           : 0x01 (Audio)
bFunctionSubClass        : 0x01 (Audio Control)
bFunctionProtocol        : 0x00
iFunction                : 0x00 (No String Descriptor)
Data (HexDump)           : 08 0B 03 03 01 01 00 00                           ........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03 (Interface 3)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x01 (Audio Control)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 00 00 01 01 00 00                        .........

        ------ Audio Control Interface Header Descriptor ------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (Header)
bcdADC                   : 0x0100
wTotalLength             : 0x003E (62 bytes)
bInCollection            : 0x02
baInterfaceNr[1]         : 0x04
baInterfaceNr[2]         : 0x05
Data (HexDump)           : 0A 24 01 00 01 3E 00 02 04 05                     .$...>....

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x01
wTerminalType            : 0x0602 (Digital audio interface)
bAssocTerminal           : 0x00
bNrChannels              : 0x02 (2 channels)
wChannelConfig           : 0x0003 (L, R)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 01 02 06 00 02 03 00 00 00               .$..........

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x02
wTerminalType            : 0x0101 (USB Streaming)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x01 (1)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 02 01 01 00 01 00                        .$.......

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x03
wTerminalType            : 0x0101 (USB Streaming)
bAssocTerminal           : 0x00
bNrChannels              : 0x02 (2 channels)
wChannelConfig           : 0x0003 (L, R)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 03 01 01 00 02 03 00 00 00               .$..........

        -------- Audio Control Feature Unit Descriptor --------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x06 (Feature Unit)
bUnitID                  : 0x31 (49)
bSourceID                : 0x03 (3)
bControlSize             : 0x01 (1 byte per control)
bmaControls[0]           : 0x01
 D0: Mute                : 1
 D1: Volume              : 0
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[1]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[2]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
iFeature                 : 0x00 (No String Descriptor)
Data (HexDump)           : 0A 24 06 31 03 01 01 02 02 00                     .$.1......

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x04
wTerminalType            : 0x0602 (Digital audio interface)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x31 (49)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 04 02 06 00 31 00                        .$.....1.

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x04 (Interface 4)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 04 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x04 (Interface 4)
bAlternateSetting        : 0x01
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 04 01 01 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (AS_GENERAL)
bTerminalLink            : 0x02 (Terminal ID 2)
bDelay                   : 0x03 (3 frames)
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 02 03 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x0AC44 (44100 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 44 AC 00                  .$......D..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x85 (Direction=IN EndpointID=5)
bmAttributes             : 0x09 (TransferType=Isochronous  SyncType=Adaptive  EndpointType=Data)
wMaxPacketSize           : 0x00B4
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0xB4 (180 bytes per packet)
bInterval                : 0x04 (4 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 85 09 B4 00 04 00 00                        .........

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 07 25 01 00 00 00 00                              .%.....

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x05 (Interface 5)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 05 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x05 (Interface 5)
bAlternateSetting        : 0x01
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 05 01 02 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (AS_GENERAL)
bTerminalLink            : 0x03 (Terminal ID 3)
bDelay                   : 0x03 (3 frames)
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 03 03 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x0AC44 (44100 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 44 AC 00                  .$......D..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x05 (Direction=OUT EndpointID=5)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x00B4
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0xB4 (180 bytes per packet)
bInterval                : 0x04 (4 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x86 (Direction=IN EndpointID=6)
Data (HexDump)           : 09 05 05 05 B4 00 04 00 86                        .........

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 07 25 01 00 00 00 00                              .%.....

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x86 (Direction=IN EndpointID=6)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0004
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x04 (4 bytes per packet)
bInterval                : 0x04 (4 ms)
bRefresh                 : 0x07 (128 ms)
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 86 11 04 00 04 07 00                        .........

    --------- Device Qualifier Descriptor (for Full-Speed) --------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x06 (Device_qualifier Descriptor)
bcdUSB                   : 0x200 (USB Version 2.00)
bDeviceClass             : 0xEF (Miscellaneous)
bDeviceSubClass          : 0x02
bDeviceProtocol          : 0x01 (IAD - Interface Association Descriptor)
bMaxPacketSize0          : 0x40 (64 Bytes)
bNumConfigurations       : 0x01 (1 other-speed configuration)
bReserved                : 0x00
Data (HexDump)           : 0A 06 00 02 EF 02 01 40 01 00                     .......@..

    ------------ Other Speed Configuration Descriptor -------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x07 (Other_speed_configuration Descriptor)
wTotalLength             : 0x0155 (341 bytes)
bNumInterfaces           : 0x06 (6 Interfaces)
bConfigurationValue      : 0x01 (Configuration 1)
iConfiguration           : 0x00 (No String Descriptor)
bmAttributes             : 0xC0
 D7: Reserved, set 1     : 0x01
 D6: Self Powered        : 0x01 (yes)
 D5: Remote Wakeup       : 0x00 (no)
 D4..0: Reserved, set 0  : 0x00
MaxPower                 : 0x32 (100 mA)
Data (HexDump)           : 09 07 55 01 06 01 00 C0 32 08 0B 00 02 02 02 01   ..U.....2.......
                           00 09 04 00 00 01 02 02 01 00 05 24 00 10 01 05   ...........$....
                           24 01 01 01 04 24 02 06 05 24 06 00 01 07 05 82   $....$...$......
                           03 10 00 10 09 04 01 00 02 0A 00 00 00 07 05 03   ................
                           02 40 00 00 07 05 83 02 40 00 00 09 04 02 00 02   .@......@.......
                           01 03 00 00 07 24 01 00 01 25 00 06 24 02 01 01   .....$...%..$...
                           00 06 24 02 02 02 00 09 24 03 01 03 01 02 01 00   ..$.....$.......
                           09 24 03 02 04 01 01 01 00 09 05 04 02 40 00 00   .$...........@..
                           00 00 05 25 01 01 01 09 05 84 02 40 00 00 00 00   ...%.......@....
                           05 25 01 01 03 08 0B 03 03 01 01 00 00 09 04 03   .%..............
                           00 00 01 01 00 00 0A 24 01 00 01 3E 00 02 04 05   .......$...>....
                           0C 24 02 01 02 06 00 02 03 00 00 00 09 24 03 02   .$...........$..
                           01 01 00 01 00 0C 24 02 03 01 01 00 02 03 00 00   ......$.........
                           00 0A 24 06 31 03 01 01 02 02 00 09 24 03 04 02   ..$.1.......$...
                           06 00 31 00 09 04 04 00 00 01 02 00 00 09 04 04   ..1.............
                           01 01 01 02 00 00 07 24 01 02 03 01 00 0B 24 02   .......$......$.
                           01 02 02 10 01 44 AC 00 09 05 85 09 B4 00 01 00   .....D..........
                           00 07 25 01 00 00 00 00 09 04 05 00 00 01 02 00   ..%.............
                           00 09 04 05 01 02 01 02 00 00 07 24 01 03 03 01   ...........$....
                           00 0B 24 02 01 02 02 10 01 44 AC 00 09 05 05 05   ..$......D......
                           B4 00 01 00 86 07 25 01 00 00 00 00 09 05 86 11   ......%.........
                           03 00 01 05 00                                    .....

        ------------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B (Interface Association Descriptor)
bFirstInterface          : 0x00 (Interface 0)
bInterfaceCount          : 0x02 (2 Interfaces)
bFunctionClass           : 0x02 (Communications and CDC Control)
bFunctionSubClass        : 0x02
bFunctionProtocol        : 0x01
iFunction                : 0x00 (No String Descriptor)
Data (HexDump)           : 08 0B 00 02 02 02 01 00                           ........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00 (Interface 0)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x02 (Communications and CDC Control)
bInterfaceSubClass       : 0x02 (Abstract Control Model)
bInterfaceProtocol       : 0x01 (AT Commands defined by ITU-T V.250 etc)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 00 00 01 02 02 01 00                        .........

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x05 (5 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x00 (Header Functional Descriptor)
bcdCDC                   : 0x110 (CDC Version 1.10)
Data (HexDump)           : 05 24 00 10 01                                    .$...

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x05 (5 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x01 (Call Management Functional Descriptor)
bmCapabilities           : 0x01
 D7..2                   : 0x00 (Reserved)
 D1                      : 0x00 (sends/receives call management information only over the Communication Class interface)
 D0                      : 0x01 (handles call management itself)
bDataInterface           : 0x01
Data (HexDump)           : 05 24 01 01 01                                    .$...

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x04 (4 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x02 (Abstract Control Management Functional Descriptor)
bmCapabilities           : 0x06
 D7..4                   : 0x00 (Reserved)
 D3                      : 0x00 (not supports the notification Network_Connection)
 D2                      : 0x01 (supports the request Send_Break)
 D1                      : 0x01 (supports the request combination of Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State)
 D0                      : 0x00 (not supports the request combination of Set_Comm_Feature, Clear_Comm_Feature, and Get_Comm_Feature)
Data (HexDump)           : 04 24 02 06                                       .$..

        -------------- CDC Interface Descriptor ---------------
bFunctionLength          : 0x05 (5 bytes)
bDescriptorType          : 0x24 (Interface)
bDescriptorSubType       : 0x06 (Union Functional Descriptor)
bControlInterface        : 0x00
bSubordinateInterface[0] : 0x01
Data (HexDump)           : 05 24 06 00 01                                    .$...

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0010 (16 bytes)
bInterval                : 0x10 (16 ms)
Data (HexDump)           : 07 05 82 03 10 00 10                              .......

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01 (Interface 1)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x0A (CDC-Data)
bInterfaceSubClass       : 0x00
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 01 00 02 0A 00 00 00                        .........

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x03 (Direction=OUT EndpointID=3)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0040 (64 bytes)
bInterval                : 0x00 (ignored)
Data (HexDump)           : 07 05 03 02 40 00 00                              ....@..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x83 (Direction=IN EndpointID=3)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0040 (64 bytes)
bInterval                : 0x00 (ignored)
Data (HexDump)           : 07 05 83 02 40 00 00                              ....@..

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02 (Interface 2)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x03 (MIDI Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 00 02 01 03 00 00                        .........

        - MIDI Adapter Class specific MS Interface Descriptor -
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x01 (MS Header)
bcdADC                   : 0x0100
wTotalLength             : 0x0025 (37 bytes)
Data (HexDump)           : 07 24 01 00 01 25 00 06 24 02 01 01 00 06 24 02   .$...%..$.....$.
                           02 02 00 09 24 03 01 03 01 02 01 00 09 24 03 02   ....$........$..
                           04 01 01 01 00                                    .....

        ---------------- MIDI IN Jack Descriptor --------------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x02 (MIDI_IN_JACK)
bJackType                : 0x01 (Embedded)
bJackID                  : 0x01 (ID=1)
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 06 24 02 01 01 00                                 .$....

        ---------------- MIDI IN Jack Descriptor --------------
bLength                  : 0x06 (6 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x02 (MIDI_IN_JACK)
bJackType                : 0x02 (External)
bJackID                  : 0x02 (ID=2)
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 06 24 02 02 02 00                                 .$....

        --------------- MIDI OUT Jack Descriptor --------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x03 (MIDI_OUT_JACK)
bJackType                : 0x01 (Embedded)
bJackID                  : 0x03 (ID=3)
bNrInputPins             : 0x01 (1 pin)
baSourceID[1]            : 0x02 (input pin connected to entity ID=2)
baSourcePin[1]           : 0x01 (connected to input pin number 1
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 01 03 01 02 01 00                        .$.......

        --------------- MIDI OUT Jack Descriptor --------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype       : 0x03 (MIDI_OUT_JACK)
bJackType                : 0x02 (External)
bJackID                  : 0x04 (ID=4)
bNrInputPins             : 0x01 (1 pin)
baSourceID[1]            : 0x01 (input pin connected to entity ID=1)
baSourcePin[1]           : 0x01 (connected to input pin number 1
iJack                    : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 02 04 01 01 01 00                        .$.......

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x04 (Direction=OUT EndpointID=4)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0040 (64 bytes)
bInterval                : 0x00 (0 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 04 02 40 00 00 00 00                        ....@....

        --- Class-Specific MS Bulk Data Endpoint Descriptor ---
bLength                  : 0x05 (5 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (MS General)
bNumEmbMIDIJack          : 0x01 (1 embedded MIDI jack)
baAssocJackID(1)         : 0x01 (Jack(1) ID=1)
Data (HexDump)           : 05 25 01 01 01                                    .%...

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x84 (Direction=IN EndpointID=4)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0040 (64 bytes)
bInterval                : 0x00 (0 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 84 02 40 00 00 00 00                        ....@....

        --- Class-Specific MS Bulk Data Endpoint Descriptor ---
bLength                  : 0x05 (5 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (MS General)
bNumEmbMIDIJack          : 0x01 (1 embedded MIDI jack)
baAssocJackID(1)         : 0x03 (Jack(1) ID=3)
Data (HexDump)           : 05 25 01 01 03                                    .%...

        ------------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B (Interface Association Descriptor)
bFirstInterface          : 0x03 (Interface 3)
bInterfaceCount          : 0x03 (3 Interfaces)
bFunctionClass           : 0x01 (Audio)
bFunctionSubClass        : 0x01 (Audio Control)
bFunctionProtocol        : 0x00
iFunction                : 0x00 (No String Descriptor)
Data (HexDump)           : 08 0B 03 03 01 01 00 00                           ........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03 (Interface 3)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x01 (Audio Control)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 00 00 01 01 00 00                        .........

        ------ Audio Control Interface Header Descriptor ------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (Header)
bcdADC                   : 0x0100
wTotalLength             : 0x003E (62 bytes)
bInCollection            : 0x02
baInterfaceNr[1]         : 0x04
baInterfaceNr[2]         : 0x05
Data (HexDump)           : 0A 24 01 00 01 3E 00 02 04 05                     .$...>....

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x01
wTerminalType            : 0x0602 (Digital audio interface)
bAssocTerminal           : 0x00
bNrChannels              : 0x02 (2 channels)
wChannelConfig           : 0x0003 (L, R)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 01 02 06 00 02 03 00 00 00               .$..........

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x02
wTerminalType            : 0x0101 (USB Streaming)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x01 (1)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 02 01 01 00 01 00                        .$.......

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x03
wTerminalType            : 0x0101 (USB Streaming)
bAssocTerminal           : 0x00
bNrChannels              : 0x02 (2 channels)
wChannelConfig           : 0x0003 (L, R)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 03 01 01 00 02 03 00 00 00               .$..........

        -------- Audio Control Feature Unit Descriptor --------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x06 (Feature Unit)
bUnitID                  : 0x31 (49)
bSourceID                : 0x03 (3)
bControlSize             : 0x01 (1 byte per control)
bmaControls[0]           : 0x01
 D0: Mute                : 1
 D1: Volume              : 0
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[1]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[2]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
iFeature                 : 0x00 (No String Descriptor)
Data (HexDump)           : 0A 24 06 31 03 01 01 02 02 00                     .$.1......

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x04
wTerminalType            : 0x0602 (Digital audio interface)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x31 (49)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 04 02 06 00 31 00                        .$.....1.

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x04 (Interface 4)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 04 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x04 (Interface 4)
bAlternateSetting        : 0x01
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 04 01 01 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (AS_GENERAL)
bTerminalLink            : 0x02 (Terminal ID 2)
bDelay                   : 0x03 (3 frames)
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 02 03 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x0AC44 (44100 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 44 AC 00                  .$......D..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x85 (Direction=IN EndpointID=5)
bmAttributes             : 0x09 (TransferType=Isochronous  SyncType=Adaptive  EndpointType=Data)
wMaxPacketSize           : 0x00B4 (180 bytes)
bInterval                : 0x01 (1 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 85 09 B4 00 01 00 00                        .........

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 07 25 01 00 00 00 00                              .%.....

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x05 (Interface 5)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 05 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x05 (Interface 5)
bAlternateSetting        : 0x01
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 05 01 02 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (AS_GENERAL)
bTerminalLink            : 0x03 (Terminal ID 3)
bDelay                   : 0x03 (3 frames)
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 03 03 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x0AC44 (44100 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 44 AC 00                  .$......D..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x05 (Direction=OUT EndpointID=5)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x00B4 (180 bytes)
bInterval                : 0x01 (1 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x86 (Direction=IN EndpointID=6)
Data (HexDump)           : 09 05 05 05 B4 00 01 00 86                        .........

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 07 25 01 00 00 00 00                              .%.....

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x86 (Direction=IN EndpointID=6)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0003 (3 bytes)
bInterval                : 0x01 (1 ms)
bRefresh                 : 0x05 (32 ms)
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 86 11 03 00 01 05 00                        .........

      -------------------- String Descriptors -------------------
             ------ String Descriptor 0 ------
bLength                  : 0x04 (4 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language ID[0]           : 0x0409 (English - United States)
Data (HexDump)           : 04 03 09 04                                       ....
             ------ String Descriptor 1 ------
bLength                  : 0x18 (24 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "Teensyduino"
Data (HexDump)           : 18 03 54 00 65 00 65 00 6E 00 73 00 79 00 64 00   ..T.e.e.n.s.y.d.
                           75 00 69 00 6E 00 6F 00                           u.i.n.o.
             ------ String Descriptor 2 ------
bLength                  : 0x24 (36 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "Teensy MIDI/Audio"
Data (HexDump)           : 24 03 54 00 65 00 65 00 6E 00 73 00 79 00 20 00   $.T.e.e.n.s.y. .
                           4D 00 49 00 44 00 49 00 2F 00 41 00 75 00 64 00   M.I.D.I./.A.u.d.
                           69 00 6F 00                                       i.o.
             ------ String Descriptor 3 ------
bLength                  : 0x10 (16 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "9073220"
Data (HexDump)           : 10 03 39 00 30 00 37 00 33 00 32 00 32 00 30 00   ..9.0.7.3.2.2.0.
 
Thank you for testing. I had a closer look at the output of USBTreeView you posted and it looks plausible to me, since I moved the midi stuff down after the usb audio streaming descriptors in usb_desc.c.
The new IAD descriptor in line 292 of your USBTreeView output now lists 4 interfaces compared to 3 interfaces with the old descriptors (line 412 of the USBTreeView output). This is because I added the Midi interface to the audio interface collection as described by the usb 2 specification.

At the new usb descriptors the Midi descriptors for high speed then start at line 750 compared to line 322 at the old interface.
Further down then it's the same for the full speed configurations.
But you seem to have problems with Midi now?
I could compare the communication between Windows and the Teensy with Wireshark. If midi is not working anymore, then there are probably differences between the old and the new implementation.
 
Yes, it's very odd - despite the descriptor appearing with no apparent errors in USBtreeView, there's simply no MIDI port exposed in Windows. The only thing I could point to is that the body of the MIDI descriptor stuff still looks the same, so is it v1.0 and it's expected to be v2.0? Clutching at straws here :)
 
Can it be that the modifications changed something on the MIDI SysEx messages? Before implementing this files the sysex were working fine, now I'm receiving different messages that are sent.
Place a print on the sysex callback and send a message, gets something different from what I sent (even the message is not recognized on the switch I have to parse the message into different actions). If a repeatedly sent the same message, the print shows different data every time. This code is the same I used before and was working properly.
 
I downloaded MidiEditor and I can reproduce the problem: with the new usb audio interface there is no midi device showing up in MidiEditor. Isn't UAC2 much older than Midi v2.0? I don't think the UAC2 standard demands Midi v2.0. Let's see what I can find out.
 
Did some more working on the SysEx and got it going. The thing actually was that SysEx messages can handle values from 0 to 127 too like all the other MIDI functions so the message was truncated when got a byte that was greater than 127

Code:
usbMIDI.setHandleSysEx(sysExHandler); // Place this on setup() function
Code:
void sysExHandler(byte* arrayMessage, unsigned sizeMessage)
{
    // Discard element arrayMessage[0] because it's the message header
}
 
Last edited:
Ah yes, putting an invalid value in your sysex stream is a good way to confuse MIDI!

I assume you're using Linux, and that it's happy with the current USB descriptors that Windows is rejecting? I'm slightly amazed there isn't an online point and click USB descriptor design tool for idiots ... or maybe there is, and I just haven't found it yet.

Hope you can figure out something, @alex6679 . I'd love to help more, but have concluded that the USB descriptor stuff is just too much for my ancient brain to get a grip on :eek:
 
Ok, maybe I solved the problem: I removed the midi interface again from the audio interface collection again. (Just as in the original implementation). But I kept the interface order as descripted in the usb audio specification.
When I then tested the implementation in Windows, the Midi interface shows up again as device in the MidiEditor app. Also in Ubuntu there didn't seem to be any problems. (The bogus TerminalID error did not appear and in general there didn't seem to be any problems according to the log files).

@h4yn0nnym0u5e: Can you please test if Midi is really working again? I think everything should be fine again, since I didn't touch the Midi implementation at all.
@toyosm: You have a Mac and didn't not experience this usb descriptor problem? Can you please anyway test my latest changes? I just want to make it's still working on Mac. It would be really frustrating if not.

The latest version can be found here: https://github.com/alex6679/teensy-4-usbAudio/tree/interface_numbers
 
Ah yes, putting an invalid value in your sysex stream is a good way to confuse MIDI!

I assume you're using Linux, and that it's happy with the current USB descriptors that Windows is rejecting? I'm slightly amazed there isn't an online point and click USB descriptor design tool for idiots ... or maybe there is, and I just haven't found it yet.

Hope you can figure out something, @alex6679 . I'd love to help more, but have concluded that the USB descriptor stuff is just too much for my ancient brain to get a grip on :eek:
Yes, totally!. The message got truncated when got a value greater than 127. I'm using mac

Ok, maybe I solved the problem: I removed the midi interface again from the audio interface collection again. (Just as in the original implementation). But I kept the interface order as descripted in the usb audio specification.
When I then tested the implementation in Windows, the Midi interface shows up again as device in the MidiEditor app. Also in Ubuntu there didn't seem to be any problems. (The bogus TerminalID error did not appear and in general there didn't seem to be any problems according to the log files).

@h4yn0nnym0u5e: Can you please test if Midi is really working again? I think everything should be fine again, since I didn't touch the Midi implementation at all.
@toyosm: You have a Mac and didn't not experience this usb descriptor problem? Can you please anyway test my latest changes? I just want to make it's still working on Mac. It would be really frustrating if not.

The latest version can be found here: https://github.com/alex6679/teensy-4-usbAudio/tree/interface_numbers
Yes, will do and let you know.
 
Back
Top