Skip to content
mdwnPublic

About

A multitrack player that runs on Linux and outputs to class compliant devices.

Resources

Code of conduct

Stars

26 stars

Watchers

1 watching

Forks

Repository files navigation

mtrack

Actions Status codecov Crates.io Version License: GPL v3 Discord Contributor Covenant

mtrack is a multitrack audio, MIDI, and lighting player for live performances. It runs on small devices like the Raspberry Pi and is designed to be controlled remotely — from your feet, a phone, or any device with a browser — so you never have to babysit a computer on stage.

Dashboard

Features

  • Multi-format audio playback — WAV, FLAC, MP3, OGG, AAC/M4A, AIFF 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.
  • DMX lighting engine — Tag-based, venue-agnostic lighting system with a custom DSL for effects, cues, and sequences. Real-time effects engine with OLA integration for DMX output.
  • Web UI — Full browser-based interface for playback control, song management, lighting show authoring, playlist editing, and hardware configuration. Includes a DAW-style timeline editor with integrated playback preview and real-time stage visualization.
  • Zero-config startup — Point mtrack at a directory of songs and it works. No config file required. Bulk import entire song libraries from the filesystem.
  • Lock mode — Safety mechanism for live shows. Lock the player to prevent accidental configuration changes while keeping playback controls active.
  • MIDI-triggered samples — Low-latency sample playback via MIDI or piezo audio triggers with velocity scaling, voice management, and release groups.
  • Terminal UI — Optional ratatui-based TUI with playlist, now-playing, fixture colors, and log panel.
  • Hardware profiles — Per-machine hardware configurations with hostname-based profile selection. Carry the same config across rehearsal and show rigs.
  • Remote control — gRPC and OSC interfaces for external control and status reporting.
  • Systemd integration — Generated service file with security hardening for production deployments.

What you need

  • A computer that runs Linux or macOS. A Raspberry Pi 3 or newer is a common choice for the stage; a pre-built Pi image is available.
  • For multitrack playback, an audio interface with as many outputs as you want to route separately. mtrack uses the operating system's audio drivers, so a class-compliant interface works without extra drivers.
  • For lighting, an OLA installation (the olad daemon) and a DMX interface it supports.
  • For MIDI playback or control, a MIDI interface or controller the operating system can see.
  • A web browser on any device that can reach the player.

What mtrack is not

  • Not a DAW: it plays back prepared songs and does not record, edit audio, or mix live.
  • Not a lighting console: lighting is authored ahead of time as cues that play in sync with songs.
  • Not released for Windows: the pre-built binaries are for Linux and macOS.

Quick Start

Install mtrack (pre-built binaries, a Raspberry Pi image, a .deb package, or cargo install mtrack --locked), then start the player (zero-config):

$ cd /path/to/my/songs
$ mtrack start

Or point at a specific directory (mtrack start /path/to/my/songs) or an existing config file (mtrack start /path/to/mtrack.yaml).

The web UI will be available at http://localhost:8080. Use the web UI to import songs, create playlists, configure hardware, and author lighting shows. The Quick Start guide walks through a first song.

Timeline editor

Documentation

For full documentation, see the mtrack book.

Topics covered include:

  • Getting started — installation, device discovery, song setup, and player configuration
  • Web UI — dashboard, song browser, timeline editor, playlist editor, configuration, and lock mode
  • Interfaces — 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. First, install system dependencies:

$ ./setup.sh          # build dependencies only
$ ./setup.sh --dev    # include development tools (buf, cargo-tarpaulin, licensure, mdbook)

Then build:

$ make build

Other useful targets: make test, make lint, make fmt, make docs, make docs-serve. The Makefile lists the rest, including the web UI journey tests.

Get support!

Need help with mtrack? Join us on Discord!

License

This project is licensed under the GNU General Public License v3.0.

About

A multitrack player that runs on Linux and outputs to class compliant devices.

Resources

Code of conduct

Stars

26 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages