Skip to the content.

VirtualDJ Module

This fork integrates VirtualDJ through three selectable modes:

Why This Approach

The default integration now starts with VirtualDJ’s local history/tracklist files because that works without requiring the Pro-only Network Control plugin. Network Control remains available as an optional advanced mode.

History File mode was chosen as the default for three reasons:

Network Control remains useful when available for three reasons:

Runtime Model

Beam supports two runtime paths.

History File

By default, Beam reads the newest VirtualDJ history source it can find:

Beam auto-detects common VirtualDJ home locations:

Beam strips common timestamp prefixes such as 22:45 : Artist - Title, parses the most recent non-empty line, and treats it as active only while the file is still fresh enough.

Default history settings in Beam:

You can also set history deck to -1 to accept entries from any deck.

Current limitations of History File mode:

Recommended VirtualDJ history settings:

Recommended tracklistFormat example:

deck=`get_deck` artist=%author genre=%genre title=%titleremix year=`get_year` filepath=`get_filepath`

With that format, VirtualDJ writes lines such as:

22:45 : deck=1 artist=Oscar Larroca genre=Tango title=Remolino year=1941 filepath=C:\Music\Oscar Larroca\Remolino.flac

See other formats or text in VirtualDJ wiki:

Beam only cares that the history line contains a final labeled field such as filepath=.... If you prefer a different VDJScript expression that resolves to the loaded track path, Beam will read it the same way.

Beam reads that as:

If a later history line is written for another deck, Beam skips it instead of replacing the current Beam song with a prelisten deck entry.

Backward compatibility:

Important behavior note:

Network Control

When enabled, Beam polls the VirtualDJ Network Control /query endpoint and reads plain-text responses.

Current query modes:

Beam first checks whether the selected deck is audible and then enriches the current SongObject with one composite metadata query.

Current metadata mapping:

Current limitations of Network Control mode:

Auto (Network -> History)

When enabled, Beam tries the Network Control plugin first. If the plugin is unavailable or refuses the connection, Beam falls back to the configured history-file workflow.

This mode is useful when:

User Setup

History File

VirtualDJ requirements:

Beam setup:

  1. Open Preferences -> Basic Settings.
  2. Select VirtualDJ as the media player.
  3. Choose History File as the integration.
  4. Leave History File Path blank for auto-detection, or enter a specific tracklist.txt path or History folder.
  5. Choose the history deck Beam should follow when VirtualDJ writes deck=... markers. Use -1 if you want Beam to accept any deck.
  6. In VirtualDJ, make sure history recording is enabled, set tracklistFormat to deck=get_deck artist=%author genre=%genre title=%titleremix year=get_year filepath=get_filepath``, and lower HistoryDelay if you want Beam to react faster.
  7. Adjust Recent Track Window (sec) if you want Beam to forget stale entries faster or slower.

Network Control

VirtualDJ requirements:

Plugin setup in VirtualDJ:

  1. Open the Master panel.
  2. In the Auto-Start section, enable Network Control.
  3. Open the plugin settings with the cog wheel.
  4. Configure the port Beam should use.
  5. Optionally configure an authentication token.

Beam setup:

  1. Open Preferences -> Basic Settings.
  2. Select VirtualDJ as the media player.
  3. Choose Network Control as the integration.
  4. Enter the host, port, and optional bearer token.
  5. Pick the track source Beam should follow. Beam supports Master, Deck 1, Deck 2, Left, and Right.

Default Network Control settings in Beam assume:

Auto (Network -> History)

Beam setup:

  1. Open Preferences -> Basic Settings.
  2. Select VirtualDJ as the media player.
  3. Choose Auto (Network -> History) as the integration.
  4. Configure the Network Control host, port, bearer token, and track source.
  5. Configure the history file path, history deck, and recent track window for fallback behavior.
  6. In VirtualDJ, keep history recording enabled even if you normally rely on the Network Control plugin.

Diagnostics

Beam now writes a debug log line on each VirtualDJ poll showing the selected route:

The VirtualDJ section in Preferences -> Basic Settings also includes a Run test button. It executes the current VirtualDJ integration immediately and shows:

Files Involved

Future Extension Points

If Beam needs better non-Pro fidelity later, the next likely step is to improve the history-file parser around timestamp handling, stale detection, and alternate tracklistFormat layouts.

If Beam needs more metadata in Pro mode later, the safest next step is still to stay on /query rather than introducing a native plugin. The current implementation already uses a single composite get_text script for metadata.

Potential follow-up work: