MIDI Descriptor for USB communication


+ Reply to Thread
Results 1 to 15 of 15
  1. #1
    Join Date
    Feb 2012
    Posts
    42

    Default 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!

  2. #2
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    2,762

  3. #3
    Join Date
    Feb 2012
    Posts
    42

    Default 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...

  4. #4

    Default 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
    =========================== 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 : "Љ"
    Last edited by towlerg; - 28th November 2019 at 15:50.
    George

  5. #5
    Join Date
    Feb 2012
    Posts
    42

    Default 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.
    Last edited by RuudNL; - 28th November 2019 at 16:14.

  6. #6

    Default Re: MIDI Descriptor for USB communication

    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.

  7. #7
    Join Date
    Feb 2012
    Posts
    42

    Default 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...

  8. #8

    Default Re: MIDI Descriptor for USB communication

    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.
    George

  9. #9
    Join Date
    Feb 2012
    Posts
    42

    Default 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?)

  10. #10

    Default 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.
    George

  11. #11
    Join Date
    Feb 2012
    Posts
    42

    Default 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?

  12. #12

    Default Re: MIDI Descriptor for USB communication


  13. #13
    Join Date
    Feb 2012
    Posts
    42

    Default Re: MIDI Descriptor for USB communication

    Quote Originally Posted by tumbleweed View Post
    Great! That will give a lot of useful information about a commercial USB/MIDI interface!

  14. #14
    Join Date
    Feb 2012
    Posts
    42

    Default 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.

  15. #15
    Join Date
    Apr 2014
    Location
    Northeast
    Posts
    241

    Default 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.

Similar Threads

  1. MIDI over USB
    By RuudNL in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 12th November 2017, 00:33
  2. 2 Axes USB HID Descriptor problem
    By TronicBrain in forum USB
    Replies: 2
    Last Post: - 18th March 2014, 06:06
  3. MIDI over USB peripheral
    By aberco in forum USB
    Replies: 1
    Last Post: - 31st October 2011, 17:06
  4. MIDI to USB
    By DaveC3 in forum USB
    Replies: 0
    Last Post: - 31st March 2011, 21:38
  5. USB to MIDI module
    By Coco Sapone in forum Adverts
    Replies: 0
    Last Post: - 23rd October 2010, 18:13

Members who have read this thread : 12

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts