SkillAgentSearch skills...

DMXRouter

DMXRouter is a high-performance, cross-platform application written in C++ with Qt6 for DMX512 routing, merging, monitoring, and show management across Art-Net, sACN, and RDM. Designed for production environments where reliability and sub-millisecond timing are non-negotiable.

Install / Use

/learn @fiverecords/DMXRouter

README

DMXRouter

Latest Release GitHub Downloads Platform C++17 Qt6 License

Professional DMX512 lighting control router for live entertainment and architectural installations.

DMXRouter is a high-performance, cross-platform application written in C++ with Qt6 that handles DMX512 data routing, merging, and show management across the major industry protocols. Designed for production environments where reliability and sub-millisecond timing are non-negotiable.


Vlan Manager

Features at a Glance

  • Multi-protocol routing — Art-Net 4, sACN (E1.31 2018), with full cross-protocol bridging
  • Internal routing — cascade process engines for multi-stage merge topologies without physical loopback
  • Universe merge engine — 8 merge modes including HTP, LTP, Backup, X-Fade, Switch, and Custom per-channel policy
  • sACN per-channel priority — full E1.31 0xDD support in merge and monitoring, with color-coded priority visualization
  • Dockable panels — all panels detach into floating windows for multi-monitor setups; drag, double-click, or use Alt+1–0
  • Show cue system — snapshot and sequence recording, crossfade with selectable curves, autopilot auto-advance, loop/ping-pong playback, DMX remote triggering, and per-show import/export
  • RDM device management — full E1.20 with device discovery, parameter control, sensor monitoring, self-test discovery and triggering, fixture templates with per-model DMX address assignment, operating hours tracking, Fixture ID (E1.37-5), automatic status message drain, customizable device tree columns, and large installation support (100+ fixtures)
  • RDM device emulator — capture a real fixture's RDM profile, create virtual fixtures from scratch, or edit existing profiles — impersonate them on the network for pre-programming, controller testing, or equipment replacement
  • RDMNet / LLRP — E1.33 broker connection, LLRP device discovery with network recovery (E1.37-2), and identify management
  • Show Mode — live-show protection lock that blocks destructive and caution-level operations across the desktop GUI, web interface, and REST API while keeping playback fully available
  • Channel-level patching — per-channel remap, scale (0–200%), min/max limits, CSV import/export
  • Channel history — oscilloscope-style real-time waveform display for any DMX channel
  • Network discovery — live Art-Net node and sACN source discovery with protocol-aware remote node configuration. Optional WiFi interface support for preprogramming scenarios without Ethernet
  • VLAN management — cross-platform virtual adapter management for production network segmentation (Windows Hyper-V, Linux NetworkManager, macOS networksetup). No need to run as root — each platform prompts for the admin password only when needed. VLANs and IPs persist across reboots on all three platforms.
  • Real-time statistics — per-interface and per-universe throughput metrics with live event log and pop-out log window
  • Universe monitor — real-time DMX data and sACN priority viewer with per-interface filtering for multi-NIC environments
  • Bulk workflow tools — Reroute (swap interfaces across multiple engines at once), Rename with auto-increment, Uni −/+ quick universe adjust for Forward engines, Engine Templates for rapid setup, Absolute universe addressing across all panels
  • Profile manager — save and recall complete configurations, profile preview before loading, preserve IP/VLAN option on recall, import/export profiles between machines, optional startup profile auto-load
  • Update checker — automatic new version detection via GitHub Releases, with persistent status bar button and per-version dismiss
  • Web remote control — built-in HTTP + WebSocket server with a responsive web interface. Control playback, manage engines, operate RDM devices, and monitor stats from any phone, tablet, or browser on the network. Optional PIN authentication, PWA support (add to home screen), zero external dependencies
  • Cross-platform — identical look and feel on Windows, Linux (x86-64 and ARM64), and macOS from a single codebase
  • ~57,000 lines of production C++17 — zero compiler warnings with strict flags (-Wall -Wextra -Wpedantic / /W4)

Table of Contents


Architecture

DMXRouter runs on a single-threaded event-loop architecture driven by Qt's event system. This is a deliberate design decision: crossfade calculations and merge operations complete in microseconds per tick even at high universe counts, while a multi-threaded worker queue would introduce latency through queued connections. The result is consistent sub-millisecond output timing — critical for live shows.

┌───────────────────────────────────────────────────────────┐
│                       Qt Event Loop                       │
├───────────────┬──────────────┬──────────────┬─────────────┤
│ UDPTransport  │ MergeEngine  │ ShowCueEngine│ DiscoveryMgr│
│ (Art-Net /    │ (8 modes,    │ (cue record/ │ (Art-Net /  │
│  sACN RX/TX)  │  512 routes) │  playback)   │  sACN scan) │
├───────────────┼──────────────┼──────────────┼─────────────┤
│ RDMManager    │ RDMNetManager│ PatchManager │ RdmEmulator │
│ (E1.20 RDM)   │ (E1.33/LLRP) │ (ch remap)   │ (virtual fx)│
├───────────────┼──────────────┴──────────────┴─────────────┤
│ WebServer     │          Qt6 GUI (MainWindow + Widgets)   │
│ (HTTP + WS)   │                                           │
└───────────────┴───────────────────────────────────────────┘

Key design invariants:

  • Per-universe sequence counters (Art-Net and sACN) — compliant with Art-Net 4 §ArtDmx and E1.31 §6.2.6
  • Output rate limiter (token bucket at 44 fps / 22.7 ms) — prevents receiver overload per E1.31 §6.6.1, with dirty-flag optimization to skip identical frames and keep-alive emission every ~850 ms
  • Socket send/receive buffers at 2 MB — absorbs burst traffic from 40+ simultaneous universes
  • Packet rate calculations normalized by actual elapsed time — eliminates jitter from QTimer imprecision under event loop load
  • Defensive bounds checking throughout — stale indices and corrupted fade states produce log warnings, never visible artifacts on a live rig

Protocol Support

Art-Net 4

  • Receive and transmit ArtDmx on any local network interface
  • ArtPoll / ArtPollReply discovery with manual trigger (no background polling traffic on production networks)
  • Remote node configuration via ArtAddress and ArtIpProg
  • Multi-bind node merging (combines replies from the same IP across ports)
  • Correct per-universe sequence numbering (1–255, wrapping, independent per universe)
  • Paced ArtAddress command queue (20 ms between packets) to prevent node RX buffer overflow on multi-port configurations
  • ArtSync frame synchronization — buffers ArtDmx and releases on ArtSync for glitch-free output, with 4-second timeout fallback
  • Correct broadcast routing on dual-NIC setups — packets go out on the correct interface instead of always using the system's default route

sACN — ANSI E1.31 2018

  • Full multicast and unicast support
  • Per-universe per-source priority (0x64 default, 0xDD per-channel override fully supported in merge and monitoring)
  • Per-channel priority 0 correctly handled — sources with priority 0 on a slot are excluded from the merge per E1.31 §6.2.3
  • Universe Synchronization — E1.31 Extended Sync packets (vector 0x00000001) for glitch-free multi-universe refresh on LED walls and large installations
  • Configurable monitor range — by default, universes 1–1024 are joined for multicast reception so incoming sACN traffic is visible immediately in the monitor and available for routing. Adjustable via a spinner in the Monitor tab toolbar (0–63999). Universes required by process engine inputs are always joined regardless of this setting
  • Universe Discovery (10-second cycle with pagination)
  • Stream termination handling
  • Protocol-aware sequence validation (0 is a valid wrap value in sACN, unlike Art-Net where seq 0 means "disabled")
  • Self-send detection via CID — prevents processing our own multicast packets on loopback

Cross-protocol bridging

Any input protocol can be routed to any output protocol. Art-Net → sACN, sACN → Art-Net, or same-protocol universe remapping — all configurable per route.


Internal Routing

The output of one process engine can be fed as the input to another, enabling cascading merge topologies without requiring physical network loopback.

  • **Engine-to-eng

Related Skills

View on GitHub
GitHub Stars71
CategoryOperations
Updated23h ago
Forks0

Security Score

85/100

Audited on Mar 27, 2026

No findings