Lighting console bringing advanced features to solo performances.
⭕️ Halo is a real-time lighting console, designed to bring modern, immersive experiences into the hands of solo performers. Traditional consoles are typically deployed at front of house (FOH) and require a dedicated lighting designer. On the other hand, software designed for solo performers is often limited in features and is difficult to operate during a live show. Halo bridges this gap through a combination of pre-defined cues, and beat-synchronized effects and allows for live improvisation through the concept of overrides. This enables performers to elevate their shows with immersive lighting that responds to their performance.
Warning
This project is still in heavy development and unsuitable for production use (even though I'm using it for shows).
The current version of Halo operates purely in the terminal and requires shows to be defined inline in code, but our next goal is to build a UI that is both powerful and easy to operate on the fly during a live performance. Eventually, we will expand the lighting engine to handle SMPTE timecode so performances can be precisely synchronized.
- Programmer. Control lighting fixtures using a programmer interface.
- Ableton Link. Create dynamic lighting effects that synchronize with your music.
- MIDI Integration. Control your show with MIDI devices (currently supports an Akai MPK49)
- Fixture Library. Built-in support for various lighting fixtures. Will support other libraries over time.
- Cue System. Create, save, and recall lighting scenes using cue lists and cues.
- Effect Engine. Various effect patterns (sine, sawtooth, square) with customizable parameters
- Art-Net Output. Output DMX over Art-Net to control lighting fixtures.
As of now, you will need the following:
- Rust toolchain (cargo, rustc)
- Network interface for Art-Net output (I use an Enttec ODE MK2)
- Optional: MIDI controller
- Optional: Ableton Link compatible device/software
git clone https://github.com/robmorgan/halo.git
cd halo
cargo build --release
Basic usage (Art-Net Broadcast):
cargo run --release -- --source-ip <SOURCE_IP>
With Unicast Art-Net settings and MIDI enabled:
cargo run --release -- --source-ip 192.168.1.100 --dest-ip 192.168.1.200 --enable-midi
Command line options:
USAGE:
halo [OPTIONS]
OPTIONS:
--source-ip <IP> Art-Net Source IP address
--dest-ip <IP> Art-Net Destination IP address (optional)
--artnet-port <PORT> Art-Net port (default: 6454)
--broadcast Force broadcast mode even if destination IP is provided
-m, --enable-midi Enable MIDI support
Here is the current roadmap (to be expanded upon later):
# | Step | Status |
---|---|---|
1 | Terminal-based lighting engine | ✅ |
2 | Functional UI with basic show features | ⌛️ |
3 | Timecode support | ❌ |
4 | Pixel engine | ❌ |
5 | Better MIDI Support (full control) | ❌ |
6 | Richer UI features -- RDM, config, pixel effects | ❌ |
7 | OSC / Web Support? | ❌ |
N | Fancy features (to be expanded upon later) | ❌ |
Halo is licensed under the Fair Core License, Version 1.0, ALv2.
Contributions are welcome! Please feel free to submit a Pull Request.