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.
What It Reads
Section titled “What It Reads”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.
Polling Behaviour
Section titled “Polling Behaviour”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.
M3U Entry Decoding
Section titled “M3U Entry Decoding”VirtualDJ M3U entries include extended information as comments preceding each track path. The connector parses:
- The
#EXTINFline 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.
Version Support
Section titled “Version Support”- VirtualDJ v7 format — supported.
- VirtualDJ v8+ format — supported (the format that has been stable since 2024-era builds).
What Data Is Extracted
Section titled “What Data Is Extracted”| Field | Source |
|---|---|
| Title, artist | M3U #EXTINF line |
| Duration | M3U #EXTINF line |
| File path | M3U path line |
| Deck number | M3U extended metadata |
| BPM | VirtualDJ library tables |
What It Does Not Provide
Section titled “What It Does Not Provide”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.