{"id":13720837,"url":"https://github.com/stuffmatic/zephyr-usb-midi","last_synced_at":"2025-04-25T12:31:33.836Z","repository":{"id":148958453,"uuid":"583891173","full_name":"stuffmatic/zephyr-usb-midi","owner":"stuffmatic","description":"A configurable USB MIDI 1.0 device class driver for the Zephyr RTOS.","archived":false,"fork":false,"pushed_at":"2024-12-17T21:57:59.000Z","size":856,"stargazers_count":20,"open_issues_count":1,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-03T22:01:43.048Z","etag":null,"topics":["embedded","midi","usb","usb-midi","usb-midi-controller","usb-midi-device","usb-midi-interface","zephyr","zephyr-rtos"],"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/stuffmatic.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}},"created_at":"2022-12-31T10:38:52.000Z","updated_at":"2025-03-27T05:36:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"dccadb64-dd54-4b1c-8d71-35f9dc8a9850","html_url":"https://github.com/stuffmatic/zephyr-usb-midi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuffmatic%2Fzephyr-usb-midi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuffmatic%2Fzephyr-usb-midi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuffmatic%2Fzephyr-usb-midi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuffmatic%2Fzephyr-usb-midi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stuffmatic","download_url":"https://codeload.github.com/stuffmatic/zephyr-usb-midi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250817685,"owners_count":21492199,"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":["embedded","midi","usb","usb-midi","usb-midi-controller","usb-midi-device","usb-midi-interface","zephyr","zephyr-rtos"],"created_at":"2024-08-03T01:01:08.659Z","updated_at":"2025-04-25T12:31:32.602Z","avatar_url":"https://github.com/stuffmatic.png","language":"C","funding_links":[],"categories":["Libraries"],"sub_categories":["Misc"],"readme":"# zephyr-usb-midi\n\nThis is a [USB MIDI 1.0 device class](https://www.usb.org/sites/default/files/midi10.pdf) driver for the [Zephyr RTOS](https://zephyrproject.org/), which allows sending and receiving [MIDI](https://en.wikipedia.org/wiki/MIDI) data over USB.\n\nThe current implementation, which uses Zephyr's [soon-to-be legacy](https://github.com/zephyrproject-rtos/zephyr/issues/42066) USB stack, is usable but should be considered work in progress and needs more testing before it's ready for real world use. If you run into any issues, please consider [reporting them](https://github.com/stuffmatic/zephyr-usb-midi/issues/new) or [submitting a PR](https://github.com/stuffmatic/zephyr-usb-midi/compare).\n\n## Usage\n\nThe USB MIDI device class driver is contained in a Zephyr module. The sample app's [CMakeLists.txt](CMakeLists.txt) file shows one way of adding this module to an app.\n\nThe public API is defined in [usb_midi.h](usb_midi/include/usb_midi/usb_midi.h).\n\n## Sample app\n\nThe [sample app](src/main.c) demonstrates how to send and receive MIDI messages and how to efficiently send large sysex messages to the host. It also logs sysex transfer speeds and can echo incoming sysex messages. See [`Kconfig`](Kconfig) for sample app config vars.\n\n* __Button 1__ - Send a large sysex message\n* __LED 1__ - On when the device is connected to a host\n* __LED 2__ - Flashes when MIDI data is received\n* __LED 3__ - Flashes when MIDI data is sent \n\nThe app should work on dev boards with at least one button and three LEDs, for example [stm32f4_disco](https://docs.zephyrproject.org/latest/boards/arm/stm32f4_disco/doc/index.html) and [nrf52840dk_nrf52840](https://docs.zephyrproject.org/latest/boards/arm/nrf52840dk_nrf52840/doc/index.html).\n\nhttps://user-images.githubusercontent.com/2444852/226658203-de83b3d5-6604-40a9-8dde-cb53ff2cb486.mp4\n\n## Configuration options\n\n* `CONFIG_USB_DEVICE_MIDI`- Set to `y` to enable the USB MIDI device class driver.\n* `CONFIG_USB_MIDI_NUM_INPUTS` - The number of jacks through which MIDI data flows into the device. Between 0 and 16 (inclusive). Defaults to 1.\n* `CONFIG_USB_MIDI_NUM_OUTPUTS` - The number of jacks through which MIDI data flows out of the device. Between 0 and 16 (inclusive). Defaults to 1.\n* `CONFIG_USB_MIDI_USE_CUSTOM_JACK_NAMES` - Set to `y` to use custom input and output jack names defined by the options below.\n* `CONFIG_USB_MIDI_INPUT_JACK_n_NAME` - the name of input jack `n`, where `n` is the cable number of the jack.\n* `CONFIG_USB_MIDI_OUTPUT_JACK_n_NAME` - the name of output jack `n`, where `n` is the cable number of the jack.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuffmatic%2Fzephyr-usb-midi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstuffmatic%2Fzephyr-usb-midi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuffmatic%2Fzephyr-usb-midi/lists"}