mtrack
mtrack is a multitrack player intended for running on small devices like the Raspberry Pi. It can output
multiple tracks of audio as well as MIDI out via class compliant interfaces. The general intent here is to
allow mtrack to be controlled remotely from your feet as opposed to needing to drive a computer or tablet
on stage.
Features
- Multi-format audio playback — WAV, FLAC, MP3, OGG, AAC, ALAC, and more via Symphonia. Automatic transcoding to match your audio device.
- MIDI playback and control — Play back MIDI files, emit MIDI events on song selection, and control the player via MIDI. Beat clock output for syncing external gear.
- Lighting engine — Tag-based, venue-agnostic lighting system with a DSL for defining effects, cues, and sequences. Legacy MIDI-to-DMX conversion still supported.
- MIDI-triggered samples — Low-latency sample playback via MIDI or piezo audio triggers with velocity scaling, voice management, and release groups.
- Web UI — Browser-based interface for playback control, waveform visualization, stage view with real-time DMX state, and lighting simulation.
- Terminal UI — Optional ratatui-based TUI with playlist, now-playing, fixture colors, and log panel.
- Hardware profiles — Multiple host configurations in a single config file with hostname-based profile selection.
- Remote control — gRPC and OSC interfaces for external control and status reporting.
- Systemd integration — Generated service file with security hardening for production deployments.
Quick Start
Install via cargo:
$ cargo install mtrack --locked
Discover your devices:
$ mtrack devices
$ mtrack midi-devices
Start the player:
$ mtrack start /path/to/player.yaml
The web UI will be available at http://localhost:8080.
Documentation
For full documentation, see the mtrack book.
Topics covered include:
- Getting started — installation, device discovery, song setup, and player configuration
- Interfaces — web UI, terminal UI, gRPC, and OSC control
- Configuration — hardware profiles, samples, and triggers
- Lighting — lighting system overview, fixture configuration, effects, and cueing
- Deployment — systemd setup and service hardening
Building
mtrack uses a Makefile for build tasks. With devbox installed:
$ devbox shell
$ make build
Other useful targets: make test, make lint, make fmt, make docs, make docs-serve.
License
This project is licensed under the GNU General Public License v3.0.