Overview
mtrack supports programmable lighting control via DMX through the Open Lighting Architecture. There are two approaches to authoring light shows:
- DSL-based lighting (recommended) — A tag-based system with a custom lighting DSL, a visual timeline editor, and venue-agnostic shows. This is the primary lighting system and the focus of this documentation.
- MIDI-based DMX — Direct per-channel DMX control via MIDI files. Useful for precise channel programming or integration with DAW workflows. See the MIDI-Based DMX section.
Both systems can be used independently or combined in the same project. For most users, the DSL system is the better starting point — it provides high-level effect definitions, works across different venues without modification, and integrates with the web UI’s timeline editor for visual cue authoring with real-time playback preview.
Why a custom DSL?
There is no widely adopted open standard for cue-based lighting show authoring. Existing formats either target specific commercial platforms (e.g. proprietary console show files), operate at the raw DMX channel level (like Art-Net recordings or MIDI-to-DMX mappings), or focus on fixture patching rather than show programming.
mtrack’s lighting DSL fills that gap. It operates at the level musicians and small
production teams think in — effects on groups of lights, timed to music — rather than
individual DMX channel values. The DSL is plain text, stored in .light files alongside
your songs, version-controllable, and human-readable. The web UI’s timeline editor
provides a visual interface on top of it, so you don’t need to write DSL by hand unless
you want to.
DSL Lighting Features
- Venue-Agnostic Shows: Songs use logical groups instead of specific fixture names, so the same show works across different venues.
- Tag-Based Group Resolution: Fixtures are tagged with capabilities and roles. The system automatically selects optimal fixtures based on constraints.
- Effects Engine: Built-in effects (static, cycle, chase, strobe, pulse, dimmer, rainbow) with layering, blend modes, and timing control.
- Timeline Editor: Visual DAW-style cue authoring in the web UI with integrated audio playback and real-time stage preview.
- Sequences: Reusable cue patterns that can be referenced from multiple shows.
- Tempo-Aware Cueing: Cues can be placed at measure/beat positions with automatic tempo change support.
Configuration Structure
The lighting system uses a three-layer architecture:
- Configuration Layer: Define logical groups with constraints in
mtrack.yaml - Venue Layer: Tag physical fixtures with capabilities in DSL files
- Song Layer: Reference
.lightDSL files in song YAML files, which use logical groups
Constraint Types
The system supports several constraint types for group resolution:
AllOf: All specified tags must be present (e.g.,["wash", "front"])AnyOf: Any of the specified tags must be present (e.g.,["moving_head", "spot"])Prefer: Prefer fixtures with these tags (e.g.,["premium"])MinCount: Minimum number of fixtures requiredMaxCount: Maximum number of fixtures allowedFallbackTo: Fallback to another group if primary group fails (e.g.,"all_lights")AllowEmpty: Allow group to be empty if no fixtures match (graceful degradation)
Benefits
- Venue Portability: Same lighting show works across different venues automatically
- Intelligent Selection: System prefers premium fixtures when available, falls back to standard
- Flexible Constraints: Support for complex requirement combinations
- Clear Error Handling: Know exactly what’s missing when requirements aren’t met
- Visual Authoring: Timeline editor with playback preview and stage visualization
- Maintainable: Easy to add new venues and fixture types
Getting Started
- Define fixture types and venues (see Configuration)
- Create a
.lightfile for your song (see Effects Reference and Cueing Features) - Reference the light file in your song’s
song.yaml - Use the web UI’s timeline editor to visually author and preview your show