A Rust workspace for experimenting with MIDI device discovery, MIDI input/output, and utilities for the Yamaha MWAVE FM-1 synthesizer. The workspace uses Rust 2024 edition.
-
midi-lib— shared MIDI helpers: lists USB devices and MIDI output ports, converts incoming bytes to typed MIDI messages, and sends typed MIDI messages. -
midi-util— a small command-line utility scaffold. Itslistencommand is currently a placeholder. -
mwave-fm1-utils— FM-1 helpers for playing notes, changing voices, controlling effects, and sending preset SysEx data.
-
A stable Rust toolchain that supports edition 2024.
-
For Linux builds, ALSA development headers. On Ubuntu, install them with:
sudo apt-get update sudo apt-get install --yes libasound2-dev
-
A connected and accessible MIDI device for the hardware-dependent examples. FM-1 examples expect the device’s MIDI ports to be named with the
FM-1prefix.
Run these commands from the workspace root:
cargo build --workspace
cargo test --workspaceList detected USB devices and MIDI output ports:
cargo run -p midi-lib --example find_devicePlay notes and control effects on a connected FM-1:
cargo run -p mwave-fm1-utils --example fm1_simple_playOther FM-1 examples include fm1_simple_read and upload_preset; they also require a compatible device. The preset upload example uses a SysEx file under mwave-fm1-utils/data/.