{"id":20962570,"url":"https://github.com/lathoub/arduino-applemidi-library","last_synced_at":"2025-05-16T03:02:51.678Z","repository":{"id":2644603,"uuid":"10551166","full_name":"lathoub/Arduino-AppleMIDI-Library","owner":"lathoub","description":"Send and receive MIDI messages over Ethernet (rtpMIDI or AppleMIDI)","archived":false,"fork":false,"pushed_at":"2025-02-02T09:04:57.000Z","size":4661,"stargazers_count":318,"open_issues_count":2,"forks_count":66,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-04-18T21:26:26.610Z","etag":null,"topics":["applemidi","arduino","arduino-ethernet","arduino-ide","arduino-library","arduino-midi-library","arduino-uno","c-plus-plus","esp32","esp8266","ethernet-shield","midi","midi-messages","rtp","rtpmidi","teensy","udp","uno"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lathoub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["lathoub"]}},"created_at":"2013-06-07T14:10:19.000Z","updated_at":"2025-04-05T22:35:26.000Z","dependencies_parsed_at":"2025-02-09T18:11:37.208Z","dependency_job_id":"7edc778b-fdea-42ab-ab62-8897ddd634e6","html_url":"https://github.com/lathoub/Arduino-AppleMIDI-Library","commit_stats":{"total_commits":705,"total_committers":17,"mean_commits":"41.470588235294116","dds":0.6085106382978723,"last_synced_commit":"d8a4e987f7a714a619001cbb4584dcefe756379e"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lathoub%2FArduino-AppleMIDI-Library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lathoub%2FArduino-AppleMIDI-Library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lathoub%2FArduino-AppleMIDI-Library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lathoub%2FArduino-AppleMIDI-Library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lathoub","download_url":"https://codeload.github.com/lathoub/Arduino-AppleMIDI-Library/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254459083,"owners_count":22074604,"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":["applemidi","arduino","arduino-ethernet","arduino-ide","arduino-library","arduino-midi-library","arduino-uno","c-plus-plus","esp32","esp8266","ethernet-shield","midi","midi-messages","rtp","rtpmidi","teensy","udp","uno"],"created_at":"2024-11-19T02:35:09.757Z","updated_at":"2025-05-16T03:02:51.626Z","avatar_url":"https://github.com/lathoub.png","language":"C++","funding_links":["https://github.com/sponsors/lathoub"],"categories":[],"sub_categories":[],"readme":"# AppleMIDI (aka rtpMIDI) for Arduino [![License: CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](http://creativecommons.org/licenses/by-sa/4.0/)\n\nEnables an Arduino with IP/UDP capabilities (Ethernet shield, ESP8266, ESP32, ...) to participate in an AppleMIDI session.\n\n**Important:** Please read the [note below](https://github.com/lathoub/Arduino-AppleMIDI-Library#ethernet-buffer-size) on enlarging the standard Ethernet library buffersize to avoid dropping MIDI messages!\n\n## Features\n* Build on top of the popular [FortySevenEffects MIDI library](https://github.com/FortySevenEffects/arduino_midi_library)\n* Tested with AppleMIDI on Mac OS (Big Sur) and using [rtpMIDI](https://www.tobias-erichsen.de/software/rtpmidi.html) from Tobias Erichsen on Windows 10\n* Send and receive all MIDI messages\n* Uses callbacks to receive MIDI commands (no need for polling)\n* Automatic instantiation of AppleMIDI object (see at the end of 'AppleMidi.h')\n* Compiles on Arduino, MacOS (XCode) and Windows (MSVS)\n\n### New in 3.2.0\n* Event chaining\n\n### New in 3.3.0\n* Better parsing of large incoming MIDI messages with a small internal Arduino buffer\n\n## Installation\nFrom the Arduino IDE Library Manager, search for AppleMIDI\n\n\u003cimg width=\"786\" alt=\"Installation\" src=\"https://github.com/lathoub/Arduino-AppleMIDI-Library/blob/master/res/Install3-1.PNG\"\u003e\n\nThis will also install [FortySevenEffects MIDI library](https://github.com/FortySevenEffects/arduino_midi_library)\n\n## Basic Usage\n```cpp\n#include \u003cEthernet.h\u003e\n#include \u003cAppleMIDI.h\u003e\n\nbyte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };\n\nAPPLEMIDI_CREATE_DEFAULTSESSION_INSTANCE(); \n\nvoid setup()\n{\n  Ethernet.begin(mac);\n\n  MIDI.begin(); // listens on channel 1\n}\n\nvoid loop()\n{\n  // Listen to incoming notes\n  MIDI.read();\n  \n  ....\n  if (something) {\n    // Send MIDI note 40 on, velocity 55 on channel 1\n    MIDI.sendNoteOn(40, 55, 1);\n  }\n}\n```\n\nMore usages in the [examples](https://github.com/lathoub/Arduino-AppleMIDI-Library/tree/master/examples) folder and in the [wiki](https://github.com/lathoub/Arduino-AppleMIDI-Library/wiki)\n\n## Hardware\n* Arduino/Genuino (Mega, Uno, Arduino Ethernet, MKRZERO, ...)\n* ESP8266 (Adafruit HUZZAH ESP8266, Sparkfun ESP8266 Thing Dev)\n* ESP32 (Adafruit HUZZAH32 – ESP32 Feather Board) Wi-Fi\n* ESP32 with W5500 [Setup](https://github.com/lathoub/Arduino-AppleMIDI-Library/discussions/135)\n* Teensy 3.2 \u0026 4.1\n* Adafruit Feather M0 WiFi - ATSAMD21 + ATWINC1500 \n\n## Network Shields\n* Arduino Ethernet shield (Wiznet W5100 and W5500)\n* Arduino Wifi R3 shield\n* MKR ETH shield (W5500 and W6100 based)\n* Teensy WIZ820io W5200\n* Teensy 4.1 with [Ethernet Kit](https://www.pjrc.com/store/ethernet_kit.html)\n\n## Notes\n\n### Session names\n\nSession names can get really long on Macs (eg 'Macbook Pro of Johann Gambolputty .. von Hautkopft of Ulm') and will be truncated to the [`MaxSessionNameLen`](https://github.com/lathoub/Arduino-AppleMIDI-Library/blob/af4c7bd9a960a90e09e211f0ea00db2d9832d1f7/src/AppleMIDI_Settings.h#L13) \n\n### Memory footprint\nThe memory footprint of the library can be lowered significantly, read the [wiki](https://github.com/lathoub/Arduino-AppleMIDI-Library/wiki/Memory-footprint) \n\n### Ethernet buffer size\nIt's highly recommended to modify the [Ethernet library](https://github.com/arduino-libraries/Ethernet) or use the [Ethernet3 library](https://github.com/sstaub/Ethernet3) to avoid buffer overruns - [learn more](https://github.com/lathoub/Arduino-AppleMIDI-Library/wiki/Enlarge-Ethernet-buffer-size-to-avoid-dropping-UDP-packages)\n\n### Latency\nUse wired Ethernet to reduce latency, Wi-Fi increases latency and latency varies. More of the [wiki](https://github.com/lathoub/Arduino-AppleMIDI-Library/wiki/Keeping-Latency-under-control)  \n\n## Arduino IDE (arduino.cc)\n* 1.8.16\n\n## Contributing\nI would love to include your enhancements or bug fixes! In lieu of a formal styleguide, please take care to maintain the existing coding style. Please test your code before sending a pull request. It would be very helpful if you include a detailed explanation of your changes in the pull request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flathoub%2Farduino-applemidi-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flathoub%2Farduino-applemidi-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flathoub%2Farduino-applemidi-library/lists"}