{"id":19871430,"url":"https://github.com/esp32beans/esp32usbmidi","last_synced_at":"2025-09-18T17:31:37.156Z","repository":{"id":205713696,"uuid":"714870340","full_name":"esp32beans/ESP32USBMIDI","owner":"esp32beans","description":"ESP32-S2 or ESP32-S3 USB MIDI Arduino example","archived":false,"fork":false,"pushed_at":"2023-11-07T21:52:36.000Z","size":7,"stargazers_count":37,"open_issues_count":2,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T22:46:52.119Z","etag":null,"topics":["arduino","esp32-s2","esp32-s3","midi","usb"],"latest_commit_sha":null,"homepage":"","language":null,"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/esp32beans.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-06T02:25:59.000Z","updated_at":"2025-03-14T06:24:40.000Z","dependencies_parsed_at":"2023-11-06T05:30:36.949Z","dependency_job_id":"4fd2388c-e67c-46db-ae37-7fae0fecdbc8","html_url":"https://github.com/esp32beans/ESP32USBMIDI","commit_stats":null,"previous_names":["esp32beans/esp32usbmidi"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/esp32beans/ESP32USBMIDI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esp32beans%2FESP32USBMIDI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esp32beans%2FESP32USBMIDI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esp32beans%2FESP32USBMIDI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esp32beans%2FESP32USBMIDI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/esp32beans","download_url":"https://codeload.github.com/esp32beans/ESP32USBMIDI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esp32beans%2FESP32USBMIDI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275804671,"owners_count":25531730,"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","status":"online","status_checked_at":"2025-09-18T02:00:09.552Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","esp32-s2","esp32-s3","midi","usb"],"created_at":"2024-11-12T16:12:19.582Z","updated_at":"2025-09-18T17:31:36.911Z","avatar_url":"https://github.com/esp32beans.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESP32-S2 and ESP32-S3 USB MIDI Example for Arduino\n\nFor lots more debug output, set the Debug Core Level to Verbose. This can\ndrastically slow the code so do not do this when speed matters.\n\n## examples/ESP32USBMIDI\n\nThis program is based on an ESP-IDF TinyUSB USB MIDI example with minimal\nchanges so it works with arduino-esp32. See https://github.com/espressif/esp-idf/blob/master/examples/peripherals/usb/device/tusb_midi/main/tusb_midi_main.c\nfor the original code.\n\nThe board must be reset or power cycled to make the new code take effect. This\nhas been tested on ESP32S3 and ESP32S2 DevKit boards (\"ESP32S3 Dev Module\"\nand \"ESP32S2 Dev Module\").\n\nUSB Mode must be set to USB-OTG (TinyUSB) on ESP32S3.\n\nSome knowledge of the ESP-IDF API is helpful to understand the code.\n\nExample of output on the Arduino IDE Serial monitor.\nThe computer connected to the ESP32S3 sends MIDI Start, Stop, and CC 7 0.\nThe function midi_task_read_example() processes the incoming MIDI data and\nprints the following.\n```\n141236968: Cable: 0 Code: F, Data: FA 00 00\n141237070: Cable: 0 Code: F, Data: FC 00 00\n141237158: Cable: 0 Code: B, Data: B0 07 00\n```\n\nExample of MIDI received from the ESP32S3.\nThe function periodic_midi_write_example_cb() sends MIDI data. The computer\nconnected to the ESP32S3 produced the following output.\n```\nchannel  1   note-on          F#4 127\nchannel  1   note-off          D4   0\nchannel  1   note-on           A4 127\nchannel  1   note-off         F#4   0\nchannel  1   note-on           D5 127\nchannel  1   note-on          F#4 127\nchannel  1   note-off          D4   0\nchannel  1   note-on           A4 127\nchannel  1   note-off         F#4   0\nchannel  1   note-on           D5 127\nchannel  1   note-off          A4   0\nchannel  1   note-on          F#5 127\nchannel  1   note-off          D5   0\n```\n\n## examples/ESP32USBMIDIECHO\n\nThis program echos USB MIDI back to the source. There is very little serial console output.\n\nSendMIDI and ReceiveMIDI are command line MIDI programs for Windows, MacOS, and Linux.\n\n* https://github.com/gbevin/ReceiveMIDI\n* https://github.com/gbevin/SendMIDI\n\nIn one terminal windows, get ready to show received MIDI with timestamps.\n```\n$ receivemidi list\nMidi Through Port-0\nESP32S3_DEV MIDI 1\n$ receivemidi dev ESP32S3_DEV timestamp\n```\n\nIn another terminal window, send MIDI start and stop.\n```\n$ sendmidi list\nMidi Through Port-0\nESP32S3_DEV MIDI 1\n$ sendmidi dev ESP32S3_DEV start stop\n```\n\nOn the receive window, something similar to this should appear.\n```\n13:18:25.506   stop\n13:18:25.507   start\n```\n\nTry sending MIDI panic to see what it does.\n```\n$ sendmidi dev ESP32S3_DEV panic\n```\n\npanic sends note off to all 16 channels and for all 128 notes plus CC 64 0, CC 120, 0, and CC 123 0.\n\nreceivemidi should show something like this. This is the start of a very long\nlisting.\n```\n13:22:32.791   channel  1   control-change    64     0\n13:22:32.792   channel  1   control-change   120     0\n13:22:32.793   channel  1   control-change   123     0\n13:22:32.794   channel  1   note-off         C-2   0\n13:22:32.795   channel  1   note-off        C#-2   0\n13:22:32.796   channel  1   note-off         D-2   0\n13:22:32.797   channel  1   note-off        D#-2   0\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesp32beans%2Fesp32usbmidi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fesp32beans%2Fesp32usbmidi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesp32beans%2Fesp32usbmidi/lists"}