Data Flow
Now Playing connects your DJ software to your stream overlay through a pipeline that runs in real time. Understanding this flow can help you troubleshoot issues, set up your overlay correctly, and know what to expect when you change a track.
The Big Picture
Section titled “The Big Picture”DJ Software → Desktop App → Cloud → OverlayThe desktop app watches your DJ software for new tracks, sends that information to the Now Playing cloud service, and the cloud pushes the update to your overlay URL. Your OBS browser source loads that URL and displays whatever the cloud sends it.
Step-by-Step
Section titled “Step-by-Step”1. Your DJ software loads a track
Section titled “1. Your DJ software loads a track”When you load a track into a deck, the desktop app detects it. Depending on your setup, this happens through one of several methods:
- Database polling — the app reads the Rekordbox or Serato library file directly and watches for changes
- Network protocol — for Pioneer CDJs and Rekordbox Performance mode, the app communicates over PRO DJ LINK on your local network
- StagelinQ — for Denon hardware, the app listens on the StagelinQ protocol
- MIDI — for controllers, MIDI messages carry deck state
2. The desktop app sends the track to the cloud
Section titled “2. The desktop app sends the track to the cloud”Once a track is detected, the desktop app sends it to the Now Playing cloud service over an encrypted Socket.IO connection (WebSocket with HTTPS). The message includes the artist, title, album, deck number, and any available signal data (faders, EQ positions, play state).
The desktop app also continuously sends controller state — the current fader positions, crossfader position, EQ knob values, and play state for each channel. This happens separately from the track messages, in real time, as you move the controls.
3. The mix processor decides what is on air
Section titled “3. The mix processor decides what is on air”The cloud service runs a component called the mix processor that receives both the track messages and the controller state. It uses this information to determine which deck the audience is actually hearing.
If you have a hardware controller or mixer connected, the mix processor evaluates fader positions, crossfader position, and other signals to score each channel. The channel with the highest score becomes the current on-air track.
If you are using DJ software without hardware, or with hardware that directly reports which channel is live, the mix processor bypasses scoring and emits the track immediately.
See Play Detection for a detailed explanation of how the scoring works.
4. The track is enriched
Section titled “4. The track is enriched”Once the mix processor determines a track is on air, it sends the raw track metadata through a processing pipeline that:
- Validates and normalises the artist and title (removes feat. tags, standardises capitalisation)
- Deduplicates — if the same track was just played, it is not sent again
- Enriches — looks up additional metadata from Apple Music, Beatport, and MusicBrainz, including high-quality artwork
- Saves to your history — the track is added to your play history in the database
The enrichment step uses a layered cache. The cloud checks a fast Redis cache first, then the database, and only reaches out to external services if the track has not been seen before. This keeps enrichment fast for tracks you play regularly.
5. The overlay updates
Section titled “5. The overlay updates”After enrichment, the cloud pushes the updated track to your overlay URL. Your OBS browser source subscribes to a Server-Sent Events (SSE) stream and receives the update in real time over a persistent HTTP connection. The overlay displays the new artist, title, and artwork.
This entire pipeline — from loading a track in your DJ software to the overlay updating — typically completes in under two seconds on a good internet connection.
What the Desktop App Sends
Section titled “What the Desktop App Sends”The desktop app sends three types of real-time data to the cloud:
| Data | What it contains | How often |
|---|---|---|
| Track event | Artist, title, deck number, source | When a new track loads |
| Controller state | Fader positions, EQ, crossfader, play state | Continuously in real time |
| Desktop state | Connected hardware, available signals | Every 20 seconds or on change |
What the Overlay Receives
Section titled “What the Overlay Receives”The overlay receives a push notification each time the on-air track changes. The notification contains:
- Artist name
- Track title
- Album name (if available)
- Artwork URL (if available)
- BPM (if available)
The overlay URL is tied to your account and is the same URL you add to OBS. If you use multiple browser sources or overlays, they all receive the same update simultaneously.
Reliability and Failover
Section titled “Reliability and Failover”Now Playing runs on a primary server hosted at home on a Proxmox server, with a cloud-based failover on Google Cloud Platform. If the primary server is unavailable, traffic is automatically routed to the failover. Deployments use a blue-green process — the failover is briefly activated while the primary is updated, so your overlay stays live during upgrades.
Your track history, settings, and overlay URL are all stored in the cloud database, so they are not affected by server restarts or failovers.