Using http://code.google.com/p/hiduino/wiki/UsingHiduinoISP for the MIDI interface

short the RESET/ GND pins on the ISP connector (two closest to USB jack)
Board goes in to dfu programming mode

Run this script to flash usb serial firmware. (to get back to a working Arduino board, from a MIDI controller for example)
sudo dfu-programmer at90usb82 erase
sudo dfu-programmer at90usb82 flash /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/firmwares/arduino-usbserial/Arduino-usbserial-uno.hex 
sudo dfu-programmer at90usb82 reset

Run this script to flash MIDI interface

sudo dfu-programmer at90usb82 erase
sudo dfu-programmer at90usb82 flash HIDUINO_MIDI.hex
sudo dfu-programmer at90usb82 reset

MIDI control sketch example, send MIDI commands via Serial, with the MIDI interface flashed, sends as MIDI commands to system.

MIDI note player
This sketch shows how to use the serial transmit pin (pin 1) to send MIDI note data.
If this circuit is connected to a MIDI synth, it will play
the notes F#-0 (0x1E) to F#-5 (0x5A) in sequence.

The circuit:
* digital in 1 connected to MIDI jack pin 5
* MIDI jack pin 2 connected to ground
* MIDI jack pin 4 connected to +5V through 220-ohm resistor
Attach a MIDI cable to the jack, then to a MIDI synth, and play music.

created 13 Jun 2006
modified 2 Jul 2009
by Tom Igoe

This example code is in the public domain.

void setup() {
  // Set MIDI baud rate:

void loop() {
  // play notes from F#-0 (0x1E) to F#-5 (0x5A):
  for (int note = 0x1E; note < 0x5A; note ++) {
    //Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
    noteOn(0x90, note, 0x45);
    //Note on channel 1 (0x90), some note value (note), silent velocity (0x00):
    noteOn(0x90, note, 0x00);

// plays a MIDI note. Doesn't check to see that
// cmd is greater than 127, or that data values are less than 127:
void noteOn(int cmd, int pitch, int velocity) {