Configuration
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
Main Configuration (mtrack.yaml)
|
|
Fixture Type Definitions (lighting/fixture_types/)
# RGBW Par Can fixture type definition
fixture_type "RGBW_Par" {
channels: 4
channel_map: {
"dimmer": 1,
"red": 2,
"green": 3,
"blue": 4
}
special_cases: ["RGB", "Dimmer"]
}
# RGB + Strobe fixture (e.g. Astera PixelBrick in 4-channel RGBS mode)
fixture_type "Astera-PixelBrick" {
channels: 4
channel_map: {
"red": 1,
"green": 2,
"blue": 3,
"strobe": 4
}
max_strobe_frequency: 25.0
min_strobe_frequency: 0.4
strobe_dmx_offset: 7
}
# Moving Head fixture type definition
fixture_type "MovingHead" {
channels: 16
channel_map: {
"dimmer": 1,
"pan": 2,
"pan_fine": 3,
"tilt": 4,
"tilt_fine": 5,
"color_wheel": 6,
"gobo_wheel": 7,
"gobo_rotation": 8,
"focus": 9,
"zoom": 10,
"iris": 11,
"frost": 12,
"prism": 13,
"effects": 14,
"strobe": 15,
"control": 16
}
special_cases: ["MovingHead", "Spot", "Dimmer", "Strobe"]
}
Strobe frequency range:
Fixtures with a dedicated strobe channel can specify their supported frequency range and DMX
offset. This is important because many LED fixtures map the DMX strobe channel linearly to
period (1/frequency) rather than frequency, so a simple linear frequency-to-DMX mapping
produces incorrect results. mtrack uses period-linear interpolation to match this behavior.
| Field | Default | Description |
|---|---|---|
max_strobe_frequency |
20.0 | Maximum strobe frequency in Hz |
min_strobe_frequency |
0.0 | Minimum strobe frequency in Hz |
strobe_dmx_offset |
0 | First DMX value where variable strobe begins (values below this are typically “off” or reserved) |
For example, the Astera PixelBrick’s strobe channel uses DMX values 7–255 for 0.4–25 Hz. At
10 Hz, mtrack sends DMX 248 (period-linear), not 103 (frequency-linear).
Venue Definitions (lighting/venues/)
# Main Stage venue definition
venue "main_stage" {
# Front wash lights
fixture "Wash1" RGBW_Par @ 1:1 tags ["wash", "front", "rgb", "premium"]
fixture "Wash2" RGBW_Par @ 1:7 tags ["wash", "front", "rgb", "premium"]
fixture "Wash3" RGBW_Par @ 1:13 tags ["wash", "front", "rgb"]
fixture "Wash4" RGBW_Par @ 1:19 tags ["wash", "front", "rgb"]
# Moving head lights
fixture "Mover1" MovingHead @ 1:37 tags ["moving_head", "spot", "premium"]
fixture "Mover2" MovingHead @ 1:53 tags ["moving_head", "spot", "premium"]
fixture "Mover3" MovingHead @ 1:69 tags ["moving_head", "spot"]
# Strobe lights
fixture "Strobe1" Strobe @ 1:85 tags ["strobe", "front"]
fixture "Strobe2" Strobe @ 1:87 tags ["strobe", "back"]
}
# Small Club venue definition (same logical groups work!)
venue "small_club" {
# Limited front wash (only 2 fixtures)
fixture "Wash1" RGBW_Par @ 1:1 tags ["wash", "front", "rgb"]
fixture "Wash2" RGBW_Par @ 1:7 tags ["wash", "front", "rgb"]
# Single moving head
fixture "Mover1" MovingHead @ 1:13 tags ["moving_head", "spot", "premium"]
# Single strobe
fixture "Strobe1" Strobe @ 1:29 tags ["strobe", "front"]
}
Song Lighting Definitions
Lighting shows are defined in separate .light files using the DSL format. Songs reference these files:
|
|
The .light files use the DSL format and can reference logical groups defined in your mtrack.yaml:
show "Main Show" {
# Front wash on - uses logical group from mtrack.yaml
@00:05.000
front_wash: static color: "red", dimmer: 80%
# Movers join with color cycle - uses logical group
@00:10.000
movers: cycle color: "red", color: "blue", color: "green", speed: 2.0, dimmer: 100%
}
See the Light Show Verification section for information on validating your .light files.