Light Wizard

Turn system audio or a local file into color on WiZ lights. Analysis and light control stay on the Mac and local network.

platform
macOS 13+
language
Rust
version
0.1.0
lights
WiZ
source on GitHub
Signal path

What it does

Light Wizard captures macOS system output through ScreenCaptureKit or decodes one local audio file. It measures volume, bass, mids, treble, spectral onsets, beats, and twelve pitch classes, then maps the result to brightness and color.

With several lights, the strongest notes in a chord are spread across the bulbs and can rotate on each beat. With one light, the chord is blended into one color. Updates are capped at 30 frames per second and small changes are dropped instead of being sent over the network.

Run

Light Wizard needs macOS 13 or newer, a Rust toolchain, and WiZ lights on the same IPv4 network. Check discovery first; this does not request audio-recording permission.

shell
git clone https://github.com/heptanal/light-wizard.git
cd light-wizard
cargo install --path . --locked
light-wizard --discover-only
light-wizard

To play and visualize a file instead of listening to system output:

light-wizard --audio-file song.flac

Configuration

Run light-wizard --config-wizard for the guided setup. It explains and validates every setting before writing light-wizard.toml. Command-line values can override the file for one run.

--dry-run prints the live analysis without discovering or controlling lights. In file mode the audio still plays, which makes it useful for tuning sensitivity, pitch tracking, and playback delay.

The main controls are sensitivity, brightness range, attack and release time, palette, pitch smoothing, beat response, playback delay, and network frame rate.

Limits

More