百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
A

arduino_midi_library

> 编程语言
开源

适用于 Arduino 的 MIDI

1.8K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

适用于 Arduino 的 MIDI

Arduino MIDI Library

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

  1. Use the Arduino Library Manager to install the library.

  2. Start coding:

#include <MIDI.h>

// Create and bind the MIDI interface to the default hardware Serial port
MIDI_CREATE_DEFAULT_INSTANCE();

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
    MIDI.read();
}
  1. 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

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C++arduinoarduino-midi-librarymidi

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言