Beta Notice: ASLS Studio is in active beta development. All features are provided as-is. Please report any bugs or unexpected behaviour on the issue tracker.
- What is ASLS Studio?
- Features
- Requirements
- Getting Started
- Streaming to Hardware
- Tech Stack
- Contributing
- License
- Acknowledgements
ASLS Studio is a self-contained show control environment and DMX lighting control platform that covers the full workflow: patching fixtures into universes, grouping them, composing scenes and effects, sequencing cues into chases, and visualising everything in real time inside a 3D WebGL viewport. Studio can run entirely in the browser as a static web app, or be packaged as a native desktop application for Linux, macOS, and Windows via Electron.
Live show data can be streamed out to physical hardware via the WSC (Web Show Control) protocol — a compact binary protocol with a gateway that translates to industry-standard downstream protocols.
Create and manage DMX universes, patch fixtures from a built-in library (XML fixture definitions parsed via xml2js), assign DMX addresses and operating modes, and adjust per-fixture settings at any time through the Universe Modifier. Channel faders allow live manipulation of any patched fixture's output including color, pan/tilt, zoom, intensity, strobe, and more.
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.
Scenes are snapshot-style cues that drive a set of fixtures to predefined channel values. Each scene supports configurable fade in/out curves based on Bézier easing (linear, ease, ease-in, ease-in-out, or fully custom), relative or absolute start points, loop and trigger modes, and precise multi-fixture editing — including a unified channel view when multiple fixtures are selected simultaneously.
Effects modulate fixture channels over time using waveforms (sine, triangle, square). Per-channel and per-fixture parameters include frequency, min/max boundaries, phase shift, and directional spread across the fixture group — enabling smooth fan-like animations with minimal setup.
Chases are timeline-based compositions of group cues (scenes and effects) arranged across a bar grid. They support independent quantization, BPM-synced durations, loop and single-shot modes, and parallel cue lanes per group. The timeline editor supports drag-to-resize cue blocks, vertical zoom, and fold-to-hide empty lanes.
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.
In addition to running as a static web app, Studio can be 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/ASLS-org/studio
cd studionpm 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:winStudio 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 Studio 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, opening a Discussion first is encouraged to align on direction before writing code.
ASLS Studio is released under the GNU General Public License v3.0. See the COPYING file for full terms.
ASLS Studio grew out of the ASLS research project and was made freely available to the lighting and open-source communities. Third-party library credits are listed in CREDITS.html.