• The Aruino boards can be easily turned into MIDI devices so they will be automatically recognized by the PC system.
  • The MIDI-over-USB function will be immediately active after loading the sketch on the Arduiono Leonardo boards.
  • Arduino UNO R3 boards will require a litte hack to enable MIDI-over-USB functionality…


MIDI-USB on Arduino UNO R3

The ATmega16U2 chip that on the Arduino Uno R3 normally handles data transmissions to and from your computer via USB cable, can be reprogrammed so that Arduino is recognized as a USB-MIDI interface by the OS (Win/Mac). All common Audio/MIDI programs will automatically detect the “DART” MIDI ports, from the available inputs and outputs.


  • Connect the Arduino board to the PC
  • Short the first two pins on the ICSP port of the ATmega16U2, for about a second (the tip of a screwdriver is sufficient – see picture above)
  • Start Atmel_FLIP, choose ATmega16U2 as Target-Device and USB-Comunication as Medium.
  • Load file “DART-USB-MIDI-16U2.HEX”
  • Click RUN.


  • the procedure to reprogram the software through ATmega16U2 Atmel FLIP is currently valid only for Windows OS (just Google for Mac and Linux procedure).
  • In USB-MIDI mode you will no longer be able to update a new sketch through Arduino IDE, because Arduino Uno R3 is recognized as a MIDI device.
  • If you want to upload a new Sketch to the Arduino board, you must repeat the procedure above , loading “usbserial-16U2.HEX” firmware; then, your Arduino uno will be recognized again as ARDUINO-serial-port. (this problem is solved using Arduino Leonardo)


 MIDI over USB downloads:
FLIP-installer-Windows only

Changing the MIDI device NAME

For LEONARDO boards, including Leonardo derivatives like Arduino Pro Micro:

  • you have to search for the file BOARDS.TXT located into the Arduino IDE program directory
  • Open it and change this line (use WORDPAD under Windows)
    • leonardo.build.usb_product=”Arduino Leonardo”
  • Yu can customize the MIDI device name here, for example:
    • leonardo.build.usb_product=”DART”
  • Save the file boards.txt
  • Run the Arduino IDE and upload the sketch to the Leonardo board as usual
  • After the upload process, your PC will detect two MIDI in and out connections called “DART”.

For UNO boards

in this case it will be necessary to create a new .hex file to upload to the Atmega16u2, referring to the procedure described at the beginning. To do this we refer you to an interesting video guide created by Musico Nerd …