MIDI firmware for Arduino Uno


I wrote a native MIDI program for 8u2 chip on Uno.

Moco for LUFA


You can replace original USB-to-serial firmware with Moco. This driver will bridge between USB-MIDI and serial-MIDI.

(1) The host will recognize Arduino Uno as USB-MIDI device without any driver on MacOSX and Windows XP.

(2) You need to write original USB-to-serial firmware back to 8u2 for the reprogramming of main CPU.(atmega328)

As the driver is USB-MIDI class compliant, iPad can recognize Uno as MIDI device.

I hope the program is useful for arduino community.


domo arigato for the software, but why do you mention Uno only? Serial communication is mostly the same for all arduino, and, if there will be native MIDI port with soft serial it will be nice for macos (and even windows) users too, isn't it?


Well, it depends.

(A) Advantage The biggest advantage to use USB class compliant driver is the simpleness. As FTDI bridge chip support only serial communication mode, you need to install software driver to emulate MIDI on your PC. With replaced 8U2 firmware, you can use native class driver of your PC. Just plug and play.

The device will work with iPad / iOS4.2, as MIDI device. The device made with FTDI chip will never work with iPad. (well, without JB, at least)

(B) Disadvantage The software works only with Uno. So, you need to use Uno. You need to replace 8U2 firmware with MIDI version. It is required to rewrite original firmware to reprogram m328p. Personally, I use ICSP programmer to program 8u2 and m328p.

BTW, I don't know good serial-to-MIDI software bridge for MacOSX.


Yoshi, let me show you something:


there is a link to serial->midi script i had to write to for OSX.

and i've found what i want from next arduino.

Same inteface to upload sketch. Different USB port to program to. That's not too much, isn't it? ;)

Can’t we upload via the old fashioned way; a USB to TTL converter on the TX/RX?
This way, we don’t need the ATmega 8U2 to convert our CDC to TTL, we’ll bypass it. :wink: