V-USB-MIDI
This is an inexpensive DIY MIDI controller device for USB. It consists of a simple Atmel AVR ATMega16 with a software-only implementation of a low-speed USB device from Objective Development.
Read the latest news about V-USB-MIDI.
Download schematics and demo software.

V-USB-MIDI schematics

This USB MIDI is build upon an Atmel AVR ATMega16, powered from USB through 2 diodes (3.5 volts). Up to eight potentiometers (AVCC/AGND) are connected to the analog inputs (PORTA) which are converted to a range from 0x00..0x7F to create midi controls (CC). On my Atmel AVR STK500 starter kit I've tested a simple key routine (PORTB), which sends eight "white" keys (60, 62, 64, 65, 67, 69, 71, 72). Serial debugging is enabled. MIDI messages are received from PC but for now only a LED is toggled (and a debug message sent to UART). This interface shows up on my linux PC and works fine with vanilla kernel >=2.6.23.x or with a little patch for my very old sidux realtime kernel 2.6.22.1-rt9.
This device is class compliant, I use device class audio/midi stream. The device descriptors in my software are based upon this document, Appendix B.
The PID=1508 and VID=5824 are sponsored by Objective Development.
AVR is a registered trademark of Atmel Corporation.