How to stream your xLights show audio to viewers' phones
Send perfectly synchronized music from your xLights sequences to every phone at your display — no FM transmitter required.
If you sequence in xLights, you can stream your show's audio directly to viewers' phones: install the PulseMesh plugin on your show player (xSchedule or FPP), link it to your display with a token, and viewers scan a QR code at your display to hear the music — synchronized to your lights within ±10ms, on phone speakers, headphones, or the car stereo. No FM transmitter, no license, no extra hardware. Here's the whole path from sequence to phone.
How it fits together
xLights is your sequencer — but sequences are played by a show player, and that's where PulseMesh connects:
- xSchedule — bundled with xLights. If you play your show from the same Windows computer you sequence on, this is your integration.
- FPP (Falcon Player) — if your show runs on a Raspberry Pi or other FPP device, the PulseMesh connector installs as an FPP plugin.
Either way, the plugin (we call it the Connector) reads timing from your show player as it plays and feeds the PulseMesh sync engine in the cloud. Every phone corrects continuously against the show clock — even on congested cellular networks — so the music stays locked to your lights.
No show player at all? The Cloud Player can run playback entirely from the dashboard — but if you're reading an xLights guide, one of the two plugins above is almost certainly your path.
Step 1 — Create your display
Register a free PulseMesh account (the Starter plan is free forever — one display, up to 5 concurrent viewers, 250 viewer sessions a year, plenty for testing before the season). In the dashboard, fill in your display's name and address — that's what viewers see when they discover your show.
Step 2 — Install the plugin on your show player
Playing through xSchedule (Windows)? Follow the xSchedule setup guide: configure OSC in xSchedule (two clicks in the Modes menu), drop the PulseMesh plugin DLL into your xLights directory, restart xSchedule, and enable the plugin from the Plugins menu. Your sequences need to be saved in fseq v2 format (xLights' default for years — only very old setups need to re-save).
Playing through FPP? Follow the FPP setup guide: the plugin installs from FPP's plugin manager on FPP 7.0 or newer and runs as a service that starts on boot — there's also a dedicated FPP walkthrough.
Step 3 — Link the Connector to your display
In the dashboard, create a Connector for your display and copy its
token. Open the Connector's web interface (http://localhost:8089 on
xSchedule, or http://<your-FPP-address>:8089), paste the token, and
save. The status flips to Connected — your show player and
PulseMesh are now talking.
Step 4 — Let the audio upload, then test
On first connection, the Connector uploads your show's audio files to the platform. Do this on your home internet, not a hotspot — with a big song library it's the one bandwidth-heavy step. After that initial upload, the Connector averages only ~2MB per hour during playback, which is why a cellular hotspot at the display is plenty for the season.
Then start a playlist and open the web player or the PulseMesh app on your phone: select your display, and you should hear your soundtrack in sync with your lights. (If a song shows as loading right after setup, the upload is likely still processing — give it 20 minutes and check "Files Pending Upload" in the Connector's web interface.)
Also running speakers or FM from the same show player? Phones can actually run slightly ahead of your show player's own audio output, because PulseMesh is immune to the player's soundcard latency. The playback offset setting lets you delay PulseMesh to match — 80ms is a good starting point.
Step 5 — Give viewers a way in
Viewers don't create accounts or set anything up. They open the web player or the PulseMesh app, which finds your display by location — you control how far away it's discoverable (up to 0.5 miles on Starter, 2 miles on Pro). Your only job is getting them to open it, and that's what QR codes on a yard sign are for:
- On the free plan, use the generic PulseMesh QR code: scanning it opens the web player, which locates nearby displays and lists yours for the viewer to tap.
- On Pro plans and up, Display Codes upgrade that experience: a custom QR code and a 4-character code that link straight to your display — no discovery step, one less tap.
And since so many viewers watch from their cars — parked at the curb of a residential display just as often as rolling through a drive-through show — know that phones connected to car stereos over Bluetooth normally drift behind the lights. On Pro plans and up, Perfect Sync measures and compensates for that delay automatically, so CarPlay and Android Auto stay on the beat.
Common questions
Does this replace my FM transmitter? It can — every phone gets the same synchronized audio with no license and no range limit. You can also run both side by side during a transition season and set the playback offset so they match — the FM alternatives guide weighs the trade-offs honestly.
How accurate is the sync, really? Playback stays within ±10ms of the show clock, with continuous correction on every phone.
What does it cost to try? Nothing — the Starter plan is free forever and handles one display with up to 5 concurrent viewers. When your audience outgrows it, Pro adds capacity, car-audio Perfect Sync, and display codes.
Does it work without an app? Yes — the web player runs in the browser and keeps playing with the screen locked. The mobile app syncs slightly better; you can offer viewers either or both.
Ready to hear it on your own lawn? Create your free display, or start with the full setup guide. Questions the docs don't answer — we're happy to help.