MIDI Descriptor for USB communication
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!
Re: MIDI Descriptor for USB communication
Re: MIDI Descriptor for USB communication
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...
Re: MIDI Descriptor for USB communication
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
Quote:
=========================== 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#{4d1e55 b2-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 : "Љ"
Re: MIDI Descriptor for USB communication
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.
Re: MIDI Descriptor for USB communication
Quote:
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.
Re: MIDI Descriptor for USB communication
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...
Re: MIDI Descriptor for USB communication
Quote:
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.
Re: MIDI Descriptor for USB communication
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?)
Re: MIDI Descriptor for USB communication
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.
Re: MIDI Descriptor for USB communication
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?
Re: MIDI Descriptor for USB communication
Re: MIDI Descriptor for USB communication
Quote:
Originally Posted by
tumbleweed
Great! That will give a lot of useful information about a commercial USB/MIDI interface!
Re: MIDI Descriptor for USB communication
Interesting! This is what I get when I connect a commercial USB-to-MIDI interface
Code:
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\Control\usbflags
GlobalDisableSerNumGen : REG_BINARY 01
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\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.
Re: MIDI Descriptor for USB communication
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.
Re: MIDI Descriptor for USB communication
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
Re: MIDI Descriptor for USB communication
Quote:
Originally Posted by
mpgmike
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!