PDA

View Full Version : MIDI Descriptor for USB communication



RuudNL
- 27th November 2019, 12:36
I have been experimenting with MIDI over USB for some time, without much success.
It seems there is more needed than only a HID descriptor, to have a PIC (18F4550) recognized as a 'MIDI Device'.
When I connect a commercial MIDI-to-USB interface, Windows 'sees' it as an 'Audio device'.
Does somebody know of a MIDI descriptor file (that can be used with PicBasic) that will show up the PIC as a MIDI interface?
In fact I only need PC to PIC communication, but two-way communication is of course also welcome!
Suggestions are highly appreciated!

Ioannis
- 27th November 2019, 21:24
Maybe this will help

http://www.picbasic.co.uk/forum/showthread.php?t=23638

https://sites.google.com/site/telepicdata/Home/USB-to-MIDI

Ioannis

RuudNL
- 28th November 2019, 09:12
Thanks!

The first link is my previous question, that never received a usable answer. (Although some reactions had good intentions.)

The second link does not give any code, the code could be obtained upon request, but unfortunately I never received a reaction after mailing him...

towlerg
- 28th November 2019, 14:41
You apparently have or have access to a commercial MIDI-to-USB interface. Several USB monitor will generate a descriptor of a connected device (albeit not in exactly PBP format). I have several installed and if you're interested I will see if any for free/trial one will do that.

For example USB Device Tree generates this for a Pickit2


=========================== USB Port1 ===========================

Connection Status : 0x01 (Device is connected)
Port Chain : 3-1-2-1

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

+++++++++++++++++ Device Information ++++++++++++++++++
Device Description : USB Input Device
Device Path : \\?\usb#vid_04d8&pid_0033#7&2f97cc0d&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
Device ID : USB\VID_04D8&PID_0033\7&2F97CC0D&0&1
Hardware IDs : USB\VID_04D8&PID_0033&REV_0002 USB\VID_04D8&PID_0033
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0051 (GUID_DEVCLASS_HIDCLASS)
Driver : system32\DRIVERS\hidusb.sys (Version: 6.1.7601.17514 Date: 2010-11-21)
Driver Inf : C:\Windows\inf\input.inf
Legacy BusType : PNPBus
Class : HIDClass
Class GUID : {745a17a0-74d3-11d0-b6fe-00a0c90f57da} (GUID_DEVCLASS_HIDCLASS)
Interface GUID : {a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Service : HidUsb
Enumerator : USB
Location Info : Port_#0001.Hub_#0006
Location IDs : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USB(2)#USB( 1)
Container ID : {6b462c36-dc86-11e9-b239-f4b7e2dd97cc}
Manufacturer Info : (Standard system devices)
Capabilities : 0x84 (Removable, SurpriseRemovalOK)
Status : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code : 0
Power State : D0 (supported: D0, D2, D3, wake from D0, wake from D2)
Child Device 1 : HID-compliant device
DevicePath : \\?\hid#vid_04d8&pid_0033#8&cbf5855&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
KernelName : \Device\00000112
Device ID : HID\VID_04D8&PID_0033\8&CBF5855&0&0000
Class : HIDClass

+++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\usbflags\04D800330002
osvc : REG_BINARY 00 00
SkipContainerIdQuery : REG_BINARY 00 00 00 00

---------------- Connection Information ---------------
Connection Index : 0x01 (1)
Connection Status : 0x01 (DeviceConnected)
Current Config Value : 0x01
Device Address : 0x1C (28)
Is Hub : 0x00 (no)
Device Bus Speed : 0x01 (Full-Speed)
Number Of Open Pipes : 0x02 (2 pipes to data endpoints)
Pipe[0] : EndpointID=1 Direction=IN ScheduleOffset=0 Type=Interrupt
Pipe[1] : EndpointID=1 Direction=OUT ScheduleOffset=0 Type=Interrupt

---------------------- Device Descriptor ----------------------
bLength : 0x12 (18 bytes)
bDescriptorType : 0x01 (Device Descriptor)
bcdUSB : 0x200 (USB Version 2.00)
bDeviceClass : 0x00 (defined by the interface descriptors)
bDeviceSubClass : 0x00
bDeviceProtocol : 0x00
bMaxPacketSize0 : 0x08 (8 bytes)
idVendor : 0x04D8 (Microchip Technology Inc.)
idProduct : 0x0033
bcdDevice : 0x0002
iManufacturer : 0x01 (String Descriptor 1)
Language 0x0409 : "Microchip Technology Inc."
iProduct : 0x02 (String Descriptor 2)
Language 0x0409 : "PICkit 2 Microcontroller Programmer"
iSerialNumber : 0x03 (String Descriptor 3)
Language 0x0409 : "Љ"
bNumConfigurations : 0x02 (2 Configurations)

------------------ Configuration Descriptor -------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x02 (Configuration Descriptor)
wTotalLength : 0x0029 (41 bytes)
bNumInterfaces : 0x01 (1 Interface)
bConfigurationValue : 0x01 (Configuration 1)
iConfiguration : 0x02 (String Descriptor 2)
Language 0x0409 : "PICkit 2 Microcontroller Programmer"
bmAttributes : 0x80
D7: Reserved, set 1 : 0x01
D6: Self Powered : 0x00 (no)
D5: Remote Wakeup : 0x00 (no)
D4..0: Reserved, set 0 : 0x00
MaxPower : 0x32 (100 mA)

---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00
bAlternateSetting : 0x00
bNumEndpoints : 0x02 (2 Endpoints)
bInterfaceClass : 0x03 (HID - Human Interface Device)
bInterfaceSubClass : 0x00 (None)
bInterfaceProtocol : 0x00 (None)
iInterface : 0x00 (No String Descriptor)

------------------- HID Descriptor --------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x21 (HID Descriptor)
bcdHID : 0x0001 (HID Version 0.01)
bCountryCode : 0x00 (00 = not localized)
bNumDescriptors : 0x01
Descriptor 1:
bDescriptorType : 0x22 (Class=Report)
wDescriptorLength : 0x001D (29 bytes)
Error reading descriptor : ERROR_GEN_FAILURE

----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x01 (1 ms)

----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x01 (Direction=OUT EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x01 (1 ms)

------------------ Configuration Descriptor -------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x02 (Configuration Descriptor)
wTotalLength : 0x0029 (41 bytes)
bNumInterfaces : 0x01 (1 Interface)
bConfigurationValue : 0x01 (Configuration 1) *!*ERROR: Configuration 1 is defined more than once
iConfiguration : 0x02 (String Descriptor 2)
Language 0x0409 : "PICkit 2 Microcontroller Programmer"
bmAttributes : 0x80
D7: Reserved, set 1 : 0x01
D6: Self Powered : 0x00 (no)
D5: Remote Wakeup : 0x00 (no)
D4..0: Reserved, set 0 : 0x00
MaxPower : 0x32 (100 mA)

---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00
bAlternateSetting : 0x00
bNumEndpoints : 0x02 (2 Endpoints)
bInterfaceClass : 0x03 (HID - Human Interface Device)
bInterfaceSubClass : 0x00 (None)
bInterfaceProtocol : 0x00 (None)
iInterface : 0x00 (No String Descriptor)

------------------- HID Descriptor --------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x21 (HID Descriptor)
bcdHID : 0x0001 (HID Version 0.01)
bCountryCode : 0x00 (00 = not localized)
bNumDescriptors : 0x01
Descriptor 1:
bDescriptorType : 0x22 (Class=Report)
wDescriptorLength : 0x001D (29 bytes)
Error reading descriptor : ERROR_GEN_FAILURE

----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x01 (1 ms)

----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x01 (Direction=OUT EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x01 (1 ms)

----------------- Device Qualifier Descriptor -----------------
Error : ERROR_GEN_FAILURE

-------------------- String Descriptors -------------------
------ String Descriptor 0 ------
bLength : 0x04 (4 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language ID[0] : 0x0409 (English - United States)
------ String Descriptor 1 ------
bLength : 0x34 (52 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "Microchip Technology Inc."
------ String Descriptor 2 ------
bLength : 0x48 (72 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "PICkit 2 Microcontroller Programmer"
------ String Descriptor 3 ------
bLength : 0x04 (4 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "Љ"

RuudNL
- 28th November 2019, 15:11
Wow, that is a lot of (probably) useful information!
The next question is: how to generate a descriptor file from this...
Thanks!

By the way: I saw HIDmaker Pro. That looks like an interesting (but expensive!) product for USB development.
A disadvantage is that there is not very much information about it, or even an evaluation version.

tumbleweed
- 28th November 2019, 16:10
By the way: I saw HIDmaker Pro
I'd be hard pressed to justify $400 for a tool that generates what you can basically get for free.
There are lots of examples out there (just not for PBP).

Besides, it's HID only. Wouldn't help much with what you're looking for.

RuudNL
- 28th November 2019, 17:11
Yes, I think you are right.
Besides that, I think $400 is not real for an application like this.
Especially because you can't get an idea what you will buy...

towlerg
- 29th November 2019, 01:50
The next question is: how to generate a descriptor file from this...

I'd start with a PBP programmed USB device, generate the descriptor for it, compare the original descriptor with the generated one then extrapolate to your app.

RuudNL
- 29th November 2019, 07:58
Yes, that is probably the way to go, I only wished I had a PBP programmed USB device that would do MIDI...
The information about the PIC2 programmer gives a lot of information, but it doesn't do MIDI, so it is not a good example for a descriptor file.

I have a feeling that I am reinventing the wheel... Come on, this must have been done before I suppose?
(Or did nobody ever use PicBasic to do MIDI communication?)

towlerg
- 29th November 2019, 11:29
I only gave Pickit2 as an example (it happened to be connected). I appreciate that you don't want to reinvent the wheel.

Found this on google http://portmedia.sourceforge.net/

Probably shouldn't suggest this but there are other Pic device compilers that do have examples of Midi.

RuudNL
- 29th November 2019, 11:47
Thanks!
I will have a look at it and see if I can use it.
By the way: what did you use to retrieve that long list of information about the PicKit2 programmer?

tumbleweed
- 29th November 2019, 17:23
https://www.uwe-sieber.de/usbtreeview_e.html

It's free

RuudNL
- 29th November 2019, 20:11
https://www.uwe-sieber.de/usbtreeview_e.html

It's free

Great! That will give a lot of useful information about a commercial USB/MIDI interface!

RuudNL
- 30th November 2019, 18:15
Interesting! This is what I get when I connect a commercial USB-to-MIDI interface



Connection Status : 0x01 (Device is connected)
Port Chain : 5-2
PortAttributes : 0x00000000

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

+++++++++++++++++ Device Information ++++++++++++++++++
Device Description : Samengesteld USB-apparaat
Device Path : \\?\usb#vid_1a86&pid_752d#5&11561f21&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
Device ID : USB\VID_1A86&PID_752D\5&11561F21&0&2
Hardware IDs : USB\Vid_1a86&Pid_752d&Rev_0254 USB\Vid_1a86&Pid_752d
Driver KeyName : {36FC9E60-C465-11CF-8056-444553540000}\0042 (GUID_DEVCLASS_USB)
Driver : system32\DRIVERS\usbccgp.sys (Version: 5.1.2600.6437 Date: 2013-08-09)
Driver Inf : C:\WINDOWS\inf\usb.inf
Legacy BusType : PNPBus
Class : USB
Class GUID : {36FC9E60-C465-11CF-8056-444553540000} (GUID_DEVCLASS_USB)
Interface GUID : {a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Service : usbccgp
Enumerator : USB
Location Info : USB2.0-MIDI
Manufacturer Info : (Standaard USB Host Controller)
Capabilities : 0x84 (Removable, SurpriseRemovalOK)
Status : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code : 0
Address : 2
Power State : D0 (supported: D0, D3, wake from D0)
Child Device 1 : USB-audioapparaat
DevicePath : \\?\usb#vid_1a86&pid_752d&mi_00#6&8f9c2ed&0&0000#{6994ad04-93ef-11d0-a3cc-00a0c9223196}
KernelName : \Device\00000082
Device ID : USB\VID_1A86&PID_752D&MI_00\6&8F9C2ED&0&0000
Class : MEDIA

+++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\usbflags
GlobalDisableSerNumGen : REG_BINARY 01
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\usbflags\1A86752D0254
osvc : REG_BINARY 00 00

---------------- Connection Information ---------------
Connection Index : 0x02 (2)
Connection Status : 0x01 (DeviceConnected)
Current Config Value : 0x01
Device Address : 0x01 (1)
Is Hub : 0x00 (no)
Device Bus Speed : 0x01 (Full-Speed)
Number Of Open Pipes : 0x02 (2 pipes to data endpoints)
Pipe[0] : EndpointID=2 Direction=OUT ScheduleOffset=0 Type=Bulk
Pipe[1] : EndpointID=2 Direction=IN ScheduleOffset=0 Type=Bulk
Data (HexDump) : 02 00 00 00 12 01 10 01 00 00 00 08 86 1A 2D 75 ..............-u
54 02 00 02 00 01 01 01 00 01 00 02 00 00 00 01 T...............
00 00 00 09 05 02 02 20 00 00 00 00 00 00 09 05 ....... ........
82 02 20 00 00 00 00 00 00 .. ......

---------------------- Device Descriptor ----------------------
bLength : 0x12 (18 bytes)
bDescriptorType : 0x01 (Device Descriptor)
bcdUSB : 0x110 (USB Version 1.10)
bDeviceClass : 0x00 (defined by the interface descriptors)
bDeviceSubClass : 0x00
bDeviceProtocol : 0x00
bMaxPacketSize0 : 0x08 (8 bytes)
idVendor : 0x1A86
idProduct : 0x752D
bcdDevice : 0x0254
iManufacturer : 0x00 (No String Descriptor)
iProduct : 0x02 (String Descriptor 2)
Language 0x0409 : "USB2.0-MIDI"
iSerialNumber : 0x00 (No String Descriptor)
bNumConfigurations : 0x01 (1 Configuration)
Data (HexDump) : 12 01 10 01 00 00 00 08 86 1A 2D 75 54 02 00 02 ..........-uT...
00 01 ..

------------------ Configuration Descriptor -------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x02 (Configuration Descriptor)
wTotalLength : 0x0075 (117 bytes)
bNumInterfaces : 0x02 (2 Interfaces)
bConfigurationValue : 0x01 (Configuration 1)
iConfiguration : 0x00 (No String Descriptor)
bmAttributes : 0x80
D7: Reserved, set 1 : 0x01
D6: Self Powered : 0x00 (no)
D5: Remote Wakeup : 0x00 (no)
D4..0: Reserved, set 0 : 0x00
MaxPower : 0x30 (96 mA)
Data (HexDump) : 09 02 75 00 02 01 00 80 30 09 04 00 00 00 01 01 ..u.....0.......
00 00 09 24 01 00 01 09 00 01 01 09 04 01 00 02 ...$............
01 03 00 00 07 24 01 00 01 51 00 06 24 02 01 02 .....$...Q..$...
00 06 24 02 01 03 00 06 24 02 02 06 00 09 24 03 ..$.....$.....$.
01 07 01 06 01 00 09 24 03 02 04 01 02 01 00 09 .......$........
24 03 02 05 01 03 01 00 09 05 02 02 20 00 00 00 $........... ...
00 06 25 01 02 02 03 09 05 82 02 20 00 00 00 00 ..%........ ....
05 25 01 01 07 .%...

---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00
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 00 00 00 01 01 00 00 .........

------ Audio Control Interface Header Descriptor ------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype : 0x01 (Header)
bcdADC : 0x0100
wTotalLength : 0x0009 (9 bytes)
bInCollection : 0x01
baInterfaceNr[1] : 0x01
Data (HexDump) : 09 24 01 00 01 09 00 01 01 .$.......

---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x01
bAlternateSetting : 0x00
bNumEndpoints : 0x02 (2 Endpoints)
bInterfaceClass : 0x01 (Audio)
bInterfaceSubClass : 0x03 (MIDI Streaming)
bInterfaceProtocol : 0x00
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 01 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 : 0x0051 (81 bytes)
Data (HexDump) : 07 24 01 00 01 51 00 06 24 02 01 02 00 06 24 02 .$...Q..$.....$.
01 03 00 06 24 02 02 06 00 09 24 03 01 07 01 06 ....$.....$.....
01 00 09 24 03 02 04 01 02 01 00 09 24 03 02 05 ...$........$...
01 03 01 00 09 05 02 02 20 00 00 00 00 06 25 01 ........ .....%.
02 02 03 09 05 82 02 20 00 00 00 00 05 25 01 01 ....... .....%..
07 .

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

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

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

--------------- MIDI OUT Jack Descriptor --------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x24 (Class Specific Interface Descriptor)
bDescriptorSubtype : 0x03 (MIDI_OUT_JACK)
bJackType : 0x01 (Embedded)
bJackID : 0x07 (ID=7)
bNrInputPins : 0x01 (1 pin)
baSourceID(1) : 0x06 (input pin connected to entity ID=6)
baSourcePin(1) : 0x01 (connected to input pin number 1
iJack : 0x00 (No String Descriptor)
Data (HexDump) : 09 24 03 01 07 01 06 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) : 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 02 04 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 : 0x05 (ID=5)
bNrInputPins : 0x01 (1 pin)
baSourceID(1) : 0x03 (input pin connected to entity ID=3)
baSourcePin(1) : 0x01 (connected to input pin number 1
iJack : 0x00 (No String Descriptor)
Data (HexDump) : 09 24 03 02 05 01 03 01 00 .$.......

----------------- Endpoint Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x02 (Direction=OUT EndpointID=2)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0020 (32 bytes)
bInterval : 0x00 (0 ms)
bRefresh : 0x00
bSynchAddress : 0x00
Data (HexDump) : 09 05 02 02 20 00 00 00 00 .... ....

--- Class-Specific MS Bulk Data Endpoint Descriptor ---
bLength : 0x06 (6 bytes)
bDescriptorType : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype : 0x01 (MS General)
bNumEmbMIDIJack : 0x02 (2 embedded MIDI jacks)
baAssocJackID(1) : 0x02 (Jack(1) ID=2)
baAssocJackID(2) : 0x03 (Jack(2) ID=3)
Data (HexDump) : 06 25 01 02 02 03 .%....

----------------- Endpoint Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x82 (Direction=IN EndpointID=2)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0020 (32 bytes)
bInterval : 0x00 (0 ms)
bRefresh : 0x00
bSynchAddress : 0x00
Data (HexDump) : 09 05 82 02 20 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) : 0x07 (Jack(1) ID=7)
Data (HexDump) : 05 25 01 01 07 .%...

-------------------- 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 : "USB2.0-MIDI"
Data (HexDump) : 18 03 55 00 53 00 42 00 32 00 2E 00 30 00 2D 00 ..U.S.B.2...0.-.
4D 00 49 00 44 00 49 00 M.I.D.I.
------ String Descriptor 2 ------
bLength : 0x18 (24 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "USB2.0-MIDI"
Data (HexDump) : 18 03 55 00 53 00 42 00 32 00 2E 00 30 00 2D 00 ..U.S.B.2...0.-.
4D 00 49 00 44 00 49 00 M.I.D.I.
------ String Descriptor 3 ------
bLength : 0x18 (24 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "USB2.0-MIDI"
Data (HexDump) : 18 03 55 00 53 00 42 00 32 00 2E 00 30 00 2D 00 ..U.S.B.2...0.-.
4D 00 49 00 44 00 49 00 M.I.D.I.

mpgmike
- 8th December 2019, 15:45
I own HIDmaker and recommend it every chance I can, but I don't believe it will solve your challenge. Thanks for that USB Treeview link Trowlerg. I'll put it on my work PC and see how it works.

towlerg
- 10th December 2019, 11:25
Don't have time (code for to lazy) to read whole thread but did you already see this http://www.picbasic.co.uk/forum/showthread.php?t=23638

mpgmike
- 11th December 2019, 04:33
I own HIDmaker and recommend it every chance I can, but I don't believe it will solve your challenge. Thanks for that USB Treeview link Trowlerg. I'll put it on my work PC and see how it works.
I have had a chance to play with it and it can be a rather useful tool. It's now an icon in my Start screen. Thanks again!