Alpha. Beam is early software under active development. Things move, break and get renamed. Please report anything odd on the issue tracker.
Beam is a sandbox for building and previewing lighting rigs in three dimensions. You place fixtures where they will really hang, address them to real DMX universes, and watch them respond live to Art-Net from whatever is driving your show. It is a place to design a rig, prove the patch and rehearse content without a truck, a truss or a venue.
It is not a photo-realistic renderer, and it is not trying to be. There is no ray tracing, no measured photometrics and no attempt to predict exactly how a beam will look on a hazy stage. What it gives you is a fast, honest picture of which fixture is doing what, where - accurate in position, address and colour, and quick enough to sit alongside the software actually running your show.
It is also not a lighting desk. Beam does not want to replace the thing you already program with. It listens.
Beam is a fork of ASLS Studio by Timé Kadel, whose patching, scene, effect and chase engines it still carries. See Acknowledgements.
Patch fixtures from a built-in library (XML fixture definitions parsed via xml2js), assign DMX addresses and operating modes. Troubleshoot DMX issues.
Fixtures from different universes can be combined into logical groups. Groups are the unit of cue programming: scenes and effects are defined at the group level and can span the show's entire rig.
Group your reusable creations and store it as a structure for later re-use or when you require several of them.
Lightning fast organize your fixtures in neat lines, arcs or grids.
Export fixture definitions and layout to files that can be imported in MadMapper. Patching is done in Beam once. MadMapper will just work.
Complex 3D light layouts in Beam can be flatted to 2D by a range of projections and also ported to MadMapper leaving you with perfect 2D layouts in MadMapper ready for use.
A WebGL 2.0 viewport powered by Three.js r170 and the postprocessing library renders the full rig in three dimensions. Fixtures respond to live channel data — position, color, beam angle, zoom, strobe, and color wheel slots are all emulated in real time. The visualizer includes volumetric beam rendering, simulated atmospheric fog with turbulence, physically-accurate or simplified light attenuation, in-viewport fixture transform controls (translate, rotate, discrete), and adjustable global scene illumination.
Beam is packaged as a native desktop application via Electron. Distribution targets are configured for Linux (arm64), macOS (arm64), and Windows (x64).
| Minimum | Recommended | |
|---|---|---|
| RAM | 4 GB | 8 GB or more |
| GPU | WebGL 1.0 support | Dedicated GPU with WebGL 2.0 |
| Node.js | v16.15.1 | Latest LTS |
| Browser | Chrome, Firefox, Opera (latest) | Chrome |
| OS | Any OS with Node.js support | — |
git clone https://github.com/dinther/Beam
cd Beamnpm installnpm startThen open http://localhost:5173 in your browser.
npm run buildBuilt files are placed in ./dist and can be served by any static file host.
# Linux (arm64)
npm run dist:linux
# macOS (arm64)
npm run dist:mac
# Windows (x64)
npm run dist:winBeam sends live show data using the WSC (Web Show Control) protocol — a compact, binary, transport-agnostic protocol designed for real-time control of performance and show systems.
WSC carries multiple message types over a single connection: bulk channel data (DMX universes), linear timecode (SMPTE/MTC), cue lifecycle commands (GO, STOP, PAUSE…), typed parameter writes, and opaque binary tunnels to downstream systems. Every packet includes a Transport Descriptor that tells the gateway which downstream protocol to use — so the browser never needs to know about the physical layer.
The reference gateway (@asls/wsc-server) runs as a Node.js process alongside Beam and translates incoming WSC packets to the appropriate downstream protocol. Forwarding targets include Art-Net, sACN, DMX512, MIDI, MIDI Show Control, MIDI Timecode, OSC, and others.
Refer to the WSC repository and its JavaScript implementation guide for gateway setup instructions.
| Layer | Technology |
|---|---|
| UI Framework | Vue 3 |
| 3D Visualizer | Three.js r170 + WebGL 2.0 + GLSL + postprocessing |
| Build Tool | Vite |
| Desktop Shell | Electron v41 via electron-vite + electron-builder |
| Show Output | WSC via @asls/wsc-client / @asls/wsc-sdk |
| Fixture Definitions | XML parsing via xml2js |
| Event Bus | mitt |
Contributions of all kinds are welcome — bug reports, feature requests, fixture library additions, documentation improvements, and code.
- Fork the repository and create a branch off
develop. - Make your changes and test them locally (
npm start). - Open a Pull Request against
developwith a clear description of the change and why.
For larger changes or new features, come and say so on Discord first — it is easier to align on direction there than in a pull request that has already been written.
Beam is released under the GNU General Public License v3.0, the licence it inherits from ASLS Studio. See the COPYING file for full terms.
Copyright (c) 2026 Paul van Dinther. Portions copyright (c) ASLS-org / Timé Kadel, 2021.
Beam is built on ASLS Studio by Timé Kadel, which grew out of the ASLS research project and was made freely available to the lighting and open-source communities. Its patching, scene, effect and chase engines, its UI kit and the first version of its visualizer are the foundation everything here stands on.
Beam adds Art-Net input, a rebuilt visualizer, generic LED fixtures, per-group export mappings, and the MadMapper layout and fixture-library export. Third-party library credits are listed in CREDITS.html.
