Main Site Documentation

USB Class-Compliant MIDI


There are many awesome USB classes available like HID - Any possibility of getting Class-compliant MIDI in there too?

I think this would be a huge advantage, as now I won’t need 1-2 midi connectors and usb converter just so I can get driverless MIDI support.

It is possible to use the serial over USB with installe MIDI converter software, but class compliant would allow such a huge array of USB midi devices to be made to professional quality, very easily.


Haven’t seen MIDI class before, or I personally didn’t look.
What USB MIDI devices examples you have?

Did you know that we support USB raw access and so you can write the MIDI drivers ourself probably. Do you have experience in USB? Then take a look at the document I linked above.

I am assuming you want to connect a USB midi device to the USB host connector on one of our devices?


I want to be able to build a USB midi device, that does not require drivers on the host OS (Windows, OSX, Linux)

Pretty much any basic MIDI device you buy today, like a keyboard controller, just plugs into your computer and shows up to any music software as a midi device. From what I understand, this works much like HID devices where certain specifications of how the USB device interacts with the computer allow it to be recognized as a usb MIDI device.

On the software end, you would just be able to pipe MIDI in and out, much like a serial port, I am guessing.

So to be as clear as I can, this is all about USB clients - not hosts. I want to build my own keyboards, drum controlles, control surfaces etc. and not worry about custom drivers or hacks on the OS.

Does the raw access allow me to do this with the proper spec in hand? That sounds like quite an endeavor for me - but it might make a good project


I also have interest in creating a USB MIDI device. This document might be a good starting point :


I talked to the USB experts here and they tell me it is not possible due to the fact that MIDI class defines the descriptors in a weird way, which is not currently supported.

Maybe a fix in future will support this.


For some of the Atmel stuff there is LUFA - which is the lib being used as the serial driver for the Aduino Uno presently.

I had assumed when buying the Fez Panda that MIDI support was possible, and hoped to see it coming amid the other HID stuff.

Is it impossible for me to make MIDI work at all - say with the raw mode or some other measures - is this impossible because of a hardware limitation or software?

Might I have a better prospect porting the standard .net micro framework to this chip and working from there?



FEZ can handle the data fine. The problem is in how the USB device present its descriptors. MIDI requires them in a weird way that is not supported by NETMF.


Gus, could you explain what you mean by “MIDI descriptors must be presented in a weird way”? I have used MIDI descriptors many times in the past on other micro hardware (e.g. Microchip) and the descriptors appear similar to HID but there are just more of them (i.e. Injack, Outjack etc.).



Would be not easy to explain, take your preexisting knowledge and try to write drivers for NETMF then it will be easier to see what I mean.


Thanks for the reply Gus :slight_smile:

I’m currently tied up with other projects but when I get some free time I will give it a go…