MIDI for Arduino
Switch branches/tags
Clone or download
Latest commit a44d1e7 Jul 11, 2018


Arduino MIDI Library

Build Status Coveralls GitHub release License

This library enables MIDI I/O communications on the Arduino serial ports.


  • Compatible with all Arduino boards (and clones with an AVR processor).
  • Simple and fast way to send and receive every kind of MIDI message (including all System messages, SysEx, Clock, etc..).
  • OMNI input reading (read all channels).
  • Software Thru, with message filtering.
  • Callbacks to handle input messages more easily.
  • Last received message is saved until a new one arrives.
  • Configurable: overridable template-based settings.
  • Create more than one MIDI port for mergers/splitters applications.
  • Use any serial port, hardware or software.

Getting Started

  1. Use Arduino's Library Manager to install the library. Type "MIDI" in the Arduino IDE Library Manager

  2. Start coding:

     #include <MIDI.h>
     // Created and binds the MIDI interface to the default hardware Serial port
     void setup()
         MIDI.begin(MIDI_CHANNEL_OMNI);  // Listen to all incoming messages
     void loop()
         // Send note 42 with velocity 127 on channel 1
         MIDI.sendNoteOn(42, 127, 1);
         // Read incoming messages
  3. Read the documentation or watch the awesome video tutorials from Notes & Volts.



To report a bug, contribute, discuss on usage, or simply request support, please create an issue here.

You can also get informations about bug fixes and updates on my twitter account: @fortysevenfx.


MIT © 2016 Francois Best