Simple web-based DMX lights controller.
🚧 This project is still Work in Progress! 🛠️
It has been used for real events, but it's not battle-tested yet. Use at your own risk.
Check out the TODO list for the roadmap of planned features.
Feel free to fork and experiment - PRs welcome.
🎵 Also check out this project's companion app remote-mixer for remote-controlling sound mixers.
- 📱 Responsive and mobile-friendly
- 🚀 Lightweight and performant
- 🕸️ Connect multiple clients
- 🌓 Light and dark mode
- 📄 Configurable Dynamic Pages
Controls
- 🎚 DMX Channels
- 💡 Fixtures
- ꙮ Fixture Groups
- 🖼 Memories
- 🎞 Live Chases
- 🗺 Map Overview
- ✨ Universe Overview
- 🌎 Global Master / Blackout
Inputs
- 🖱 Mouse
- 📱 Touch
- ⌨️ Keyboard (partial)
- (Planned: 🕹 Physical input devices)
Supported DMX Interfaces
- ArtNet
- USB for FX5 and Digital Enlightenment
- Custom Binary protocol via TCP/UDP
You can build and run this project through Docker (in a Linux container):
> ./docker-build.sh
> ./docker-run.sh
Software needed:
Build tools for native Node.js addons are also needed depending on your platform.
Install and setup:
> yarn
Start:
> yarn start
The automatic installation of the Visual Studio Build tools does not include all features that are necessary to compile this project's addons. Find them under "Control Panel > Software / Apps & Features" and change the installation to contain the following features:
- Visual C++ ATL for x86 and x64
The base configuration is contained in the config/vlight-config.js
file. It should offer documentation and auto-completion through TypeScript - otherwise, check out the source.
To switch projects, change the project
setting. If you want to clone an existing project, just copy its folder inside the config
directory.
The rest of the configuration is available in the UI:
- Fixture types are persisted globally
- All other entities and settings are persisted on a per-project basis
Start in development mode with hot reloading:
> yarn dev
NOTE: Due to microsoft/TypeScript#32651, the backend won't rebuild automatically if there are TypeScript errors.