{"id":13418591,"url":"https://github.com/FortySevenEffects/arduino_midi_library","last_synced_at":"2025-03-15T03:31:31.361Z","repository":{"id":3363606,"uuid":"4409634","full_name":"FortySevenEffects/arduino_midi_library","owner":"FortySevenEffects","description":"MIDI for Arduino","archived":false,"fork":false,"pushed_at":"2023-10-16T18:17:54.000Z","size":1821,"stargazers_count":1595,"open_issues_count":60,"forks_count":258,"subscribers_count":109,"default_branch":"master","last_synced_at":"2024-10-29T17:12:06.445Z","etag":null,"topics":["arduino","arduino-midi-library","midi"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FortySevenEffects.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2012-05-22T16:43:25.000Z","updated_at":"2024-10-26T10:38:57.000Z","dependencies_parsed_at":"2024-01-15T20:54:32.552Z","dependency_job_id":"ae69f4e2-3e96-449c-bc4c-cc761354dbb9","html_url":"https://github.com/FortySevenEffects/arduino_midi_library","commit_stats":{"total_commits":389,"total_committers":19,"mean_commits":"20.473684210526315","dds":"0.26221079691516713","last_synced_commit":"2d64cc3c2ff85bbee654a7054e36c59694d8d8e4"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FortySevenEffects%2Farduino_midi_library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FortySevenEffects%2Farduino_midi_library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FortySevenEffects%2Farduino_midi_library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FortySevenEffects%2Farduino_midi_library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FortySevenEffects","download_url":"https://codeload.github.com/FortySevenEffects/arduino_midi_library/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243681024,"owners_count":20330152,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","arduino-midi-library","midi"],"created_at":"2024-07-30T22:01:04.187Z","updated_at":"2025-03-15T03:31:31.326Z","avatar_url":"https://github.com/FortySevenEffects.png","language":"C++","funding_links":[],"categories":["C++","Libraries"],"sub_categories":[],"readme":"# Arduino MIDI Library\n\n[![GitHub release](https://img.shields.io/github/release/FortySevenEffects/arduino_midi_library.svg?maxAge=3600)](https://github.com/FortySevenEffects/arduino_midi_library/releases/latest)\n[![License](https://img.shields.io/github/license/FortySevenEffects/arduino_midi_library.svg?maxAge=3600)](LICENSE)\n[![Build](https://github.com/FortySevenEffects/arduino_midi_library/actions/workflows/cmake.yml/badge.svg?branch=master)](https://github.com/FortySevenEffects/arduino_midi_library/actions/workflows/cmake.yml)\n[![Examples](https://github.com/FortySevenEffects/arduino_midi_library/actions/workflows/platformio.yml/badge.svg?branch=master)](https://github.com/FortySevenEffects/arduino_midi_library/actions/workflows/platformio.yml)\n[![Coveralls](https://img.shields.io/coveralls/FortySevenEffects/arduino_midi_library.svg?maxAge=3600)](https://coveralls.io/github/FortySevenEffects/arduino_midi_library)\n\nThis library adds MIDI I/O communications to an Arduino board.\n\n### Features\n\n-   **New** : MIDI over USB, Bluetooth, IP \u0026 AppleMIDI (see [Transports](#other-transport-mechanisms)).\n-   **New** : Active Sensing support\n-   Compatible with all Arduino boards (and clones with an AVR processor).\n-   Simple and fast way to send and receive every kind of MIDI message (including all System messages, SysEx, Clock, etc..).\n-   OMNI input reading (read all channels).\n-   Software Thru, with message filtering.\n-   [Callbacks](https://github.com/FortySevenEffects/arduino_midi_library/wiki/Using-Callbacks) to handle input messages more easily.\n-   Last received message is saved until a new one arrives.\n-   Configurable: [overridable template-based settings](https://github.com/FortySevenEffects/arduino_midi_library/wiki/Using-custom-Settings).\n-   Create more than one MIDI interface for mergers/splitters applications.\n-   Use any serial port, hardware or software.\n\n### Getting Started\n\n1. Use the Arduino Library Manager to install the library.\n   ![Type \"MIDI I/Os for Arduino\" in the Arduino IDE Library Manager](res/library-manager.png)\n\n2. Start coding:\n\n```c++\n#include \u003cMIDI.h\u003e\n\n// Create and bind the MIDI interface to the default hardware Serial port\nMIDI_CREATE_DEFAULT_INSTANCE();\n\nvoid setup()\n{\n    MIDI.begin(MIDI_CHANNEL_OMNI);  // Listen to all incoming messages\n}\n\nvoid loop()\n{\n    // Send note 42 with velocity 127 on channel 1\n    MIDI.sendNoteOn(42, 127, 1);\n\n    // Read incoming messages\n    MIDI.read();\n}\n```\n\n3. Read the [documentation](#documentation) or watch the awesome video tutorials from [Notes \u0026 Volts](https://www.youtube.com/playlist?list=PL4_gPbvyebyH2xfPXePHtx8gK5zPBrVkg).\n\n## Documentation\n\n-   [Doxygen Extended Documentation](https://fortyseveneffects.github.io/arduino_midi_library/).\n-   [GitHub wiki](https://github.com/FortySevenEffects/arduino_midi_library/wiki).\n\n## USB Migration (4.x to 5.x)\n\nAll USB related code has been moved into a separate repository [Arduino-USB-MIDI](https://github.com/lathoub/Arduino-USBMIDI), USB MIDI Device support with [`MIDIUSB`](https://github.com/arduino-libraries/MIDIUSB), still using this library to do all the MIDI heavy-lifting.\n\nMigration has been made as easy as possible: only the declaration of the MIDI object has been modified, the rest of your code remains identical.\n\n`4.3.1` code:\n\n```c++\n#include \u003cMIDI.h\u003e\n#include \u003cmidi_UsbTransport.h\u003e\n\nstatic const unsigned sUsbTransportBufferSize = 16;\ntypedef midi::UsbTransport\u003csUsbTransportBufferSize\u003e UsbTransport;\n\nUsbTransport sUsbTransport;\n\nMIDI_CREATE_INSTANCE(UsbTransport, sUsbTransport, MIDI);\n\n// ...\n```\n\nnow becomes in `5.x`:\n\n```c++\n#include \u003cUSB-MIDI.h\u003e\nUSBMIDI_CREATE_DEFAULT_INSTANCE();\n\n// ...\n```\n\nStart with the [NoteOnOffEverySec](https://github.com/lathoub/Arduino-USBMIDI/blob/master/examples/NoteOnOffEverySec/NoteOnOffEverySec.ino) example that is based on the original MidiUSB [sketch](https://github.com/lathoub/arduino_midi_library/blob/master/examples/MidiUSB/MidiUSB.ino). Note the only difference is in the declaration.\n\nThe [USB-MIDI](https://github.com/lathoub/Arduino-USBMIDI) Arduino library depends on [this library](https://github.com/FortySevenEffects/arduino_midi_library) and the [MIDIUSB](https://github.com/arduino-libraries/MIDIUSB) library.\n\n[USB-MIDI](https://github.com/lathoub/Arduino-USBMIDI) uses the latest Arduino IDE `depends` feature in the `library.properties` file installing all the dependencies automatically when installing from the IDE.\n\n## Other Transport mechanisms\n\nVersion 5 of this library, allows for other Transport layers than the\noriginal MIDI 1.0 Electrical Specification (hardware serial).\n\n-   [USB-MIDI](https://github.com/lathoub/Arduino-USBMIDI)\n-   [AppleMIDI or rtpMIDI](https://github.com/lathoub/Arduino-AppleMIDI-Library)\n-   [ipMIDI](https://github.com/lathoub/Arduino-ipMIDI)\n-   [BLE-MIDI](https://github.com/lathoub/Arduino-BLE-MIDI)\n\nAll these Transport layers use this library for all the underlying MIDI\nwork, making it easy to switch transport protocols or making transport\nprotocol bridges.\n\n### Differences between Serial \u0026 other transports\n\n-   Software Thru is enabled by default on Serial, but not on other transports.\n\n## Contact \u0026 Contribution\n\nTo report a bug, contribute, discuss on usage, or request support, please [discuss it here](https://github.com/FortySevenEffects/arduino_midi_library/discussions/new).\n\nYou can also contact me on Twitter: [@fortysevenfx](https://twitter.com/fortysevenfx).\n\n## Contributors\n\nSpecial thanks to all who have contributed to this open-source project !\n\n-   [@lathoub](https://github.com/lathoub)\n-   [@jarosz](https://github.com/jarosz)\n-   [@ivankravets](https://github.com/ivankravets)\n-   [@insolace](https://github.com/insolace)\n-   [@softegg](https://github.com/softegg)\n-   [@per1234](https://github.com/per1234)\n-   [@LnnrtS](https://github.com/LnnrtS)\n-   [@DavidMenting](https://github.com/DavidMenting)\n-   [@Rolel](https://github.com/Rolel)\n-   [@kant](https://github.com/kant)\n-   [@paul-emile-element](https://github.com/paul-emile-element)\n-   [@muxa](https://github.com/muxa)\n\nYou want to help ? Check out the [contribution guidelines](./CONTRIBUTING.md).\n\n## License\n\nMIT © 2009 - present [Francois Best](https://francoisbest.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFortySevenEffects%2Farduino_midi_library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFortySevenEffects%2Farduino_midi_library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFortySevenEffects%2Farduino_midi_library/lists"}