22 releases
| new 0.11.0 | Apr 18, 2026 |
|---|---|
| 0.10.3 | Oct 27, 2025 |
| 0.10.1 | Nov 20, 2024 |
| 0.10.0 | Apr 21, 2024 |
| 0.1.2 | Oct 21, 2015 |
#12 in Audio
33,015 downloads per month
Used in 106 crates
(88 directly)
165KB
4K
SLoC
midir 
Cross-platform, realtime MIDI processing in Rust.
Features
midir is inspired by RtMidi and supports the same features*, including virtual ports (except on Windows) and full SysEx support – but with a rust-y API!
* With the exception of message queues, but these can be implemented on top of callbacks using e.g. Rust's channels.
midir currently supports the following platforms/backends:
- ALSA (Linux)
- WinMM (Windows)
- CoreMIDI (macOS, iOS)
- WinRT (Windows 8+), enable the
winrtfeature - Jack (Linux, macOS), enable the
jackfeature - Web MIDI (Chrome, Opera, perhaps others browsers)
- Android (API 29+, NDK AMidi + JNI)
A higher-level API for parsing and assembling MIDI messages might be added in the future.
Documentation & Example
API docs can be found at docs.rs. You can find some examples in the examples directory. Or simply run cargo run --example test_play after cloning this repository.
Android
- Requires Android API 29+ and the Android NDK (r20b+).
- Build (example, to remove before merging):
- Install:
cargo install cargo-ndk - Targets:
rustup target add aarch64-linux-android - Build:
cargo ndk -t arm64-v8a -o ./app/src/main/jniLibs build --release
- Install:
- Permissions/features:
- Manifest should declare
<uses-feature android:name="android.software.midi" android:required="false" />(not needed for USB/BLE MIDI).
- Manifest should declare
Dependencies
~0–42MB
~566K SLoC