FortySevenEffects/arduino_midi_library: MIDI For Arduino - GitHub
Maybe your like
This library adds MIDI I/O communications to an Arduino board.
Features
- New : MIDI over USB, Bluetooth, IP & AppleMIDI (see Transports).
- New : Active Sensing support
- 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 interface for mergers/splitters applications.
- Use any serial port, hardware or software.
Getting Started
-
Use the Arduino Library Manager to install the library.

-
Start coding:
- Read the documentation or watch the awesome video tutorials from Notes & Volts.
Documentation
- Doxygen Extended Documentation.
- GitHub wiki.
USB Migration (4.x to 5.x)
All USB related code has been moved into a separate repository Arduino-USB-MIDI, USB MIDI Device support with MIDIUSB, still using this library to do all the MIDI heavy-lifting.
Migration has been made as easy as possible: only the declaration of the MIDI object has been modified, the rest of your code remains identical.
4.3.1 code:
#include <MIDI.h> #include <midi_UsbTransport.h> static const unsigned sUsbTransportBufferSize = 16; typedef midi::UsbTransport<sUsbTransportBufferSize> UsbTransport; UsbTransport sUsbTransport; MIDI_CREATE_INSTANCE(UsbTransport, sUsbTransport, MIDI); // ...now becomes in 5.x:
#include <USB-MIDI.h> USBMIDI_CREATE_DEFAULT_INSTANCE(); // ...Start with the NoteOnOffEverySec example that is based on the original MidiUSB sketch. Note the only difference is in the declaration.
The USB-MIDI Arduino library depends on this library and the MIDIUSB library.
USB-MIDI uses the latest Arduino IDE depends feature in the library.properties file installing all the dependencies automatically when installing from the IDE.
Other Transport mechanisms
Version 5 of this library, allows for other Transport layers than the original MIDI 1.0 Electrical Specification (hardware serial).
- USB-MIDI
- AppleMIDI or rtpMIDI
- ipMIDI
- BLE-MIDI
All these Transport layers use this library for all the underlying MIDI work, making it easy to switch transport protocols or making transport protocol bridges.
Differences between Serial & other transports
- Software Thru is enabled by default on Serial, but not on other transports.
Contact & Contribution
To report a bug, contribute, discuss on usage, or request support, please discuss it here.
You can also contact me on Twitter: @fortysevenfx.
Contributors
Special thanks to all who have contributed to this open-source project !
- @lathoub
- @jarosz
- @ivankravets
- @insolace
- @softegg
- @per1234
- @LnnrtS
- @DavidMenting
- @Rolel
- @kant
- @paul-emile-element
- @muxa
You want to help ? Check out the contribution guidelines.
License
MIT © 2009 - present Francois Best
Tag » Arduino Midi.h Reference
-
MIDI Library - Arduino Reference
-
USB-MIDI - Arduino Reference
-
USBMIDI - Arduino Reference
-
MIDIUSB - Arduino Reference
-
MIDI_Class Class Reference - Arduino MIDI Library
-
Arduino_midi_library/MIDI.h At Master - GitHub
-
Arduino MIDI Library - GitHub Pages
-
Sending MIDI - Brendan Vavra
-
Arduino MIDI Library: MIDI_Class Class Reference - Free
-
MIDI - Library - Codebender
-
MIDI For The Arduino - MIDI Input Test - YouTube
-
MIDI Library
-
Send And Receive MIDI With Arduino - Instructables
-
MIDI Library, For Communication With Musical Instruments - PJRC