v2.7.0 — First-class strobe action
Highlights
strobe(rate, intensity?, groups?) — first-class abstraction over each fixture's dedicated strobe channel. Agents no longer need to know per-fixture channel offsets or DMX value ranges.
Today an agent that wants to strobe has to find the strobe channel offset for each fixture model (different per fixture) and then use set_channel with a magic DMX value. With this, "strobe at 12 Hz" is one tool call across the whole rig. MCP catalog 33 → 34.
Closes #5.
API
strobe(rate, intensity?, groups?)
| Arg | Accepts | Notes |
|---|---|---|
rate |
0–20 (Hz), "off", "5Hz", "0" |
Above 20Hz clamps to 20Hz |
intensity |
optional, 0–255 / "75%" / "+30" |
Drives the dimmer so the strobe is visible. If omitted, brightness is left alone. |
groups |
optional list of group names | Defaults to all fixtures with a strobe channel |
Common rates
- 1–3 Hz — slow heartbeat / breathing
- 5–8 Hz — typical party strobe
- 12–15 Hz — aggressive accent
- 18–20 Hz — pulse-machine territory
Implementation
QLC+ fixtures with a dedicated strobe channel almost universally follow: DMX 0–9 = rest, DMX 10–255 = slow → fast. The action maps rate_hz linearly across 10–255. Approximate per fixture (some max at 25Hz, some have non-linear ramps) but produces correct behavior for typical stage fixtures.
Future work: parse <Capability> ranges from .qxf files for per-fixture-accurate Hz mappings.
Fixtures without a strobe channel
Listed in the response under skipped rather than failing silently:
{
"success": true,
"output": "Strobe at ~7.0Hz on 2 fixture(s), 1 skipped",
"rate": "~7.0Hz",
"dmx_value": 96,
"fixtures": [
{"id": 0, "name": "SlimPAR Pro W", "status": "applied", "applied": {"strobe": 96}},
{"id": 3, "name": "SlimPAR 56", "status": "skipped", "reason": "no dedicated strobe channel..."}
]
}For brightness-cycled "strobe" effects on those fixtures, use batch_action with blackout and adjust_color.
Upgrade
git pull
./lightsctl.sh control-restart # picks up the new action
./lightsctl.sh mcp-restart # picks up the new MCP toolNo package dependency changes.
Documentation
docs/MCP_SERVER.md— strobe in the action tabledocs/CONTROL_SERVER_ARCHITECTURE.md— valid actions list updatedmcp-server/README.md+ rootREADME.md— refreshed- Wiki
MCP-Server.mdupdated - Marketing site: CueSheet adds cues 007 (
strobe(12, ...)) + 008 (strobe("off", ...)), new FAQ entry on rate ranges, tool catalog renders 34
Tier 2 status
3 of 4 complete. Only #4 (chases) remains — the biggest single capability unlock left in the roadmap (time-based programming axis).