Every light flashes on the same beat
The new beat tracker lands on 91% of beats in the test songs, up from 64%. Each light gets its own delay, so Hue, WiZ and WLED flash within a few milliseconds of each other.
Tempolight hears the beat, the build-up and the drop, picks one look for the song, and plays it across every light in your room.
Free and open sourceRuns on a Raspberry PiMIT licence
kinds of lights, from WLED strips to Hue, Nanoleaf and DMX
dependencies: Node.js 20 and nothing else
effects that work on every layout
places to run it: Windows, macOS, Linux, Raspberry Pi, Home Assistant
Most music-reactive lighting reacts to how loud the music is right now. Tempolight knows where the beat is, which part of the song you are in, and what comes next.
The new beat tracker lands on 91% of beats in the test songs, up from 64%. Each light gets its own delay, so Hue, WiZ and WLED flash within a few milliseconds of each other.
When a song is analysed, Tempolight picks one effect and palette that fit it and keeps it on the beat, getting stronger through build-ups. Try another look swaps it; Keep this look locks it in.
While listening live, Tempolight hears a drop coming 3 to 5 seconds ahead, even in a song it has never heard. The lights get brighter and faster, dip on the last beat, then flash.
The Stage draws the playing song: its sections, its drops and a moving playhead. The sync meter says Locked, Finding the beat or Not hearing, with one plain hint when something is off.
The dashboard asks you one thing at a time. The Stage shows what the lights do right now; Songs, Looks and Lights hold the rest, and everything else waits under More.
Your room, live and big, with the song, the beat and the song map on its bottom edge. Below it: the look, Punch and Drama, and the pads.
#/stagePick how Tempolight hears your music, then find every song it knows in one list: your folder, songs it learned and songs played here.
#/songsEvery effect as a small live preview, grouped into drops, build-ups and calm. Tap one to play it, heart the ones you like, hide the ones you don't, and save a look to bring back.
#/looksYour room layout with every light on it, each light's status and delay, Find lights and Add a light, and the one-tap timing fix.
#/lightsBring the music you already have, the smart home you already run, and the gear on your desk.
Each chord gets its own shade of the palette, stepping on the bar line. With a stereo source, the side of the room a hit came from lights up.
Stage → FeelAdd a folder and every song in it is analysed ahead, so it is followed exactly from its first play in VLC, Music on a Mac and other players.
Songs → Add a music folderHome Assistant finds it through MQTT discovery. It is a HomeKit bridge too, so Siri and the Home app work without Homebridge.
Home Assistant · HomeKitMap OBS scenes to looks, run scenes and pads from a Stream Deck, and let Twitch chat commands and alerts flash the room.
OBS · Stream Deck · TwitchDrive pars, dimmers, strobes and moving heads through an Art-Net or sACN node. Lasers stay off until you turn them on, and fire only in drops.
Art-Net · sACNGuests scan a QR code and their screen joins the show, as one more light or as a remote for the pads. Each phone shows its own part of the room, so a crowd moves with it.
Stage → All pads and MIDIEvery way runs the same app and keeps your settings in the same place. Start it and the setup wizard takes you through five steps.
With Node.js 20 or newer. No download and nothing else to install.
npx tempolight --open
One file with Node.js inside, for Windows, macOS (a .dmg) and Linux. Download the latest release, or use a package manager:
brew install d4rkgeek/tempolight/tempolight
winget install D4RKGEEK.Tempolight
Images for amd64 and arm64. Host networking lets it find your lights and stream to them.
docker run -d --name tempolight --network host -v tempolight:/data --restart unless-stopped ghcr.io/d4rkgeek/tempolight
Flash the image from the releases with Raspberry Pi Imager, join the Tempolight-Setup hotspot from your phone to pick your Wi-Fi, then open tempolight.local. Pi 5, 4, 3, Zero 2 W, 400 and 500. Already on Pi OS:
curl -fsSL https://raw.githubusercontent.com/D4RKGEEK/tempolight/main/install/install.sh | sh -s -- --service
In Home Assistant: Settings → Add-ons → Add-on store → ⋮ → Repositories. Add this repository, then install Tempolight. With the Mosquitto add-on it shows up by itself.
https://github.com/D4RKGEEK/tempolight
Paste one prompt into Claude Code, or the Claude desktop app with access to your terminal. Claude installs Tempolight, finds your lights, picks how it hears your music, sets the room and plays a test song.
It asks before it installs anything for the whole computer or changes your sound settings.
Set up Tempolight on this computer for me. Tempolight is open-source, music-reactive lighting for WLED and other lights: https://github.com/D4RKGEEK/tempolight. Its HTTP API (docs/api.md there) runs at http://localhost:8080/api.
Work one step at a time and tell me what you do in plain words. Ask me before you install anything system-wide (Node.js, BlackHole, ffmpeg, a service), change my sound settings or open the firewall.
1. Check for Node.js 20 or newer. If it is there, run "npx tempolight --open" and keep it running. If not, ask me whether to install Node.js or to download the one-file app for this computer from the latest GitHub release.
2. Wait until GET /api/health answers.
3. Find my lights with POST /api/discover {"scan": true} and add each one with POST /api/devices. Ask me about lights it missed, such as Philips Hue, Nanoleaf or an IP address.
4. Set how Tempolight hears music. Read GET /api/hearing and explain the choices: this computer's sound (BlackHole on a Mac, the output monitor on Linux, Stereo Mix on Windows) or the microphone. Follow its checklist, then POST /api/hearing/use.
5. Ask me how my lights are placed in the room, then pick the closest layout from "presets" in GET /api/state with POST /api/room/preset.
6. Ask me to open Music and press "Play the demo track".
7. Explain the "In sync" meter on the Music page: Locked, Finding the beat, Not hearing, and the hint under it.
End with a short summary of what is set up and what I can try next.
No. Stock WLED works. Tempolight streams with DDP, which WLED supports out of the box.
Yes. Sync with Spotify follows Spotify's exact position. For anything else it listens to this computer's sound or a microphone, and remembers songs it has heard.
Use the one-tap timing fix on the Lights screen: it plays clicks and listens with the microphone. Bluetooth speakers usually need −150 to −250 ms.
Thousands. About 7% of one CPU core drives 700 LEDs at 60 frames a second. Wi-Fi is usually the limit, so big rooms do best on wired controllers.
Turn on Photosensitive-safe mode: at most three big flashes a second (WCAG 2.3.1). Night mode turns strobes off.
No. Everything runs on your network. Spotify's Web API, shared beat maps, Twitch and Discord connect only when you turn them on.