Skip to content

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.

DJ Software → Desktop App → Cloud → Overlay

The 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.

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.

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.

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.

The desktop app sends three types of real-time data to the cloud:

DataWhat it containsHow often
Track eventArtist, title, deck number, sourceWhen a new track loads
Controller stateFader positions, EQ, crossfader, play stateContinuously in real time
Desktop stateConnected hardware, available signalsEvery 20 seconds or on change

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.

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.