Skip to content

VirtualDJ Integration

VirtualDJ writes a running history file in M3U playlist format as tracks play. Now Playing’s virtualdj-connect package polls this file to detect new tracks. Because M3U is an open standard, the integration is lightweight and requires no configuration inside VirtualDJ itself.

The connector watches VirtualDJ’s history M3U file:

  • macOS: ~/Library/Application Support/VirtualDJ/History/
  • Windows: ~/AppData/Local/VirtualDJ/History/

VirtualDJ creates a new history file for each session. The connector detects the most recent file and polls it for appended entries.

File modification time is checked on a configurable interval. When the mtime advances, the connector reads newly appended M3U entries and emits a track event for each.

VirtualDJ M3U entries include extended information as comments preceding each track path. The connector parses:

  • The #EXTINF line for title, artist, and duration.
  • The track path line for the file URL (may be a local path or a URI for streaming sources).
  • Deck metadata where VirtualDJ includes it.

Additional metadata (BPM, key, analysis data) is retrieved from VirtualDJ’s library tables when available.

  • VirtualDJ v7 format — supported.
  • VirtualDJ v8+ format — supported (the format that has been stable since 2024-era builds).
FieldSource
Title, artistM3U #EXTINF line
DurationM3U #EXTINF line
File pathM3U path line
Deck numberM3U extended metadata
BPMVirtualDJ library tables

The M3U history file records plays after they happen — there is no real-time controller state. If you mix with a VirtualDJ controller and want on-air detection during transitions, enable the MIDI Bridge so the mix processor can evaluate fader positions.