The Player Status Window

Overview

Beat Link Trigger can take advantage of track metadata and related information from the players to provide you a rich view of what is happening right now on all the decks. As shown in the example view below, this can be an invaluable resoure on its own for running visuals for a show, even if you don’t have any triggers set up:

Player Status Window

Only players currently visible on the network will appear in this window. The player number will be bright green if it is currently playing, and gray if it is stopped. (The playback position indicators in both the full track preview and, if you have it showing, the scrolling wave detail view, will also be white when playing and red when stopped.)

In addition to the current track time (position) and remaining time, the current playback pitch (speed, shown as a percentage change from normal speed, + meaning faster and - meaning slower), the current effective tempo (combining the track tempo with the playback pitch) and master/sync status are displayed above the track waveform preview.

Although Beat Link can do a good job of tracking the playback location for tracks that are being played normally, the only information it has available are the beat packets which tell it when the player has reached a particular beat, and which can be translated to a time using the track’s beat grid. It can combine these with the playback speed information which comes more frequently (in status packets sent several times per second), to interpolate the current playback position in between beats.

However, if the DJ is playing a track backwards, no beat packets are sent. And if the track is looping, the correct position can not be detected except if and when the loop happens to cross a beat boundary, causing a beat packet to be sent. So you can not assume time information is accurate during reverse or loop playback, especially for small loops that start or end in the middle of beats.

This also means that if the DJ uses the touch strip to “needle jump” to an arbitrary point in the track, the time may start out slighly wrong, since we can only assume playback started at the beginning of the beat that was landed on. But after that (or once the DJ changes back to playing forward without a loop), as soon as the player reaches the next beat marker, the time will resynchronize, and stay tracked well as long as normal playback continues.

The current beat playing is shown above the player number, and individual beat (white) and bar (red) marks are drawn in the waveform detail view (although if you zoom out to see more of the track, the individual beats go away, and only bars are drawn).

The white tick marks below the full-track preview waveform at the bottom of a player row are minute markers, so you can see at a glance how long the track is and how much is left.

Hot cues are shown above the waveform as green triangles (or, if the DJ has assigned them a specific color, that color will be used instead of green). Memory points as shown as red triangles, and loops as orange triangles. The loop body is shown in the scrolling waveform detail section. Only loops that are stored in the track can be displayed; loops and memory points created on-the-fly by the DJ are not visible over the network.

If the DJ has assigned a label (text comment) to a memory point, loop, or hot cue, that will also be shown in the scrolling waveform detail section (but not in the smaller full-track preview). For hot cues, both the letter identifying the hot cue, and the text comment (if any), will be drawn using the color assigned by the DJ.

If you are using a compatible mixer, and it (and the players) are all configured to display their On-Air status, and the player numbers are properly configured to match the mixer channels that they are connected to, then you can use the "On-Air" indication above the player number as an additional hint about when you need to pay attention to it.

Non-rekordbox Metadata

The Player Status window is a lot less useful if non-rekordbox tracks are being played, because no waveform information or beat grids will be available, so it will not even be possible to calculate Time Played or Remain information. So most sections of the window will be blank when such tracks are loaded.

When Beat Link Trigger is using a standard player number, it can still usually get (and display) title and artist information for tracks loaded from digital audio files, and even from audio CDs if they were burned with the CD-TEXT extension. For other audio CDs, the only information we receive from the player is the track number, which shows up as a title like TRACK 01.

In order to reliably obtain title and artist information for non-rekordbox tracks, you need to make sure that Network  Use Real Player Number? is checked. If you are already online, this will require you to briefly go offline to switch numbers. If you have four players on the network, you will also have to turn one of them off and leave it off, unfortunately.
It is also not yet possible to create metadata caches for non-rekordbox media. Since that metadata is so much less useful, this is not likely to be implemented unless you have a really compelling use case, and let us know about it.

Caching Metadata

This is probably no longer necessary with version 0.5.0 or later, since we can now get metadata for rekordbox tracks even when four players are in use. This section (and the feature) may be removed in a future release once we have some experience in the field with the new metadata approach.

To create a metadata cache, have your DJ insert her (rekordbox only) media into a player before the show begins (and before four players are in use), and then click on the gear button next to the corresponding player slot, choosing the Create Metadata Cache File option:

Create Metadata Cache option

This will open a dialog where you can choose to cache either all the tracks present on the media, or only those associated with a particular playlist. If you have limited time available, and the DJ will be using a particular playlist for the tracks that you need metadata for, the playlist option can save you a lot of time.

Creating a cache from a playlist means that only tracks in that playlist will have metadata available when you attach the cache. Beat Link Trigger will not attempt to query the player directly for tracks that are not present in an attached cache file. So only use this approach when you have prearranged with your DJ to be certain that you only need the metadata for tracks on the chosen playlist.

Also choose the file where you want to save the cache:

Create Metadata Cache window

When you click Save, Beat Link Trigger will download the metadata, artwork, cue list, beat grid, and waveform information about all the tracks you specified, creating a zip file that can be used to retrieve them when needed, instead of querying the player itself. This takes a couple of seconds per track, so it can be a time-consuming operation for large amounts of media.

If you are creating a cache while a performance is taking place, you should check the Performance Priority checkbox in the middle of the cache creation dialog, to tell Beat Link Trigger to pause a second between adding each track to the cache. This greatly slows down the process, but it avoids interfering with the players. Failing to do this can cause playback to stutter if the DJ jumps directly to the middle of a track, for example. Don’t check the box if the player is idle and you want to quickly cache a lot of tracks.

Creating Metadata Cache

Once the cache is created, it will automatically be attached to that player slot, so Beat Link Trigger will use the cache instead of asking the player for metadata. If the media is ejected from the slot, the cache is automatically detached. You can also manually detach or attach caches using the gear button next to any player media slot. The gear will be filled in when a cache is attached, and the cache file information displayed next to it, as shown here:

Metadata Cache Attached

If the media seems to have changed since the cache was created, you will see a warning about that when the cache is attached. If the cache was created by a version of Beat Link Trigger older than 0.4.1, this check cannot be performed, nor will you be prevented from attaching a cache to the wrong media, but you will be given a warning that suggests you re-create the cache using a current version of Beat Link Trigger to avoid these risks.

Auto-Attaching Metadata Caches

If you have created a metadata cache and want it to automatically be attached to the appropriate player slot whenever your DJ inserts the corresponding media (since it can be hard to predict where it will end up in a busy show), you can ask Beat Link Trigger to watch for media that matches the cache, and automatically attach it. To do this, choose Auto-Attach Metadata Caches in the File menu.

Auto-Attach option

This will open a window where you can configure the cache files that should be watched for. Click Add File to add one:

Auto-Attach window

This will open a file chooser dialog you can use to find the file or files that you want to be watched, and they will appear in the window. Whenever a new media stick or SD card is inserted into one of the players, it will be checked to see if it has the same number of tracks as one of the caches (or, if the cache was created from a playlist, if the media has a playlist with the same ID and the same number of tracks). If so, a random sampling of the tracks will be examined in both the cache and the player, and if the metadata of those tracks match exactly, the media cache will be attached to that slot.

The playlist (or all tracks) must match exactly, so if the media has been modified in rekordbox since the cache was created, an all-tracks cache will need to be re-created. A playlist cache will continue to match unless that specific playlist has been altered.

Auto-Attach window with some files

If you no longer want one of the files to be watched for, simply click the Remove button next to it.

The icon next to the Remove button lets you see information about the metadata cache file. If the file was created by Beat Link Trigger 0.4.1 or later, the icon will be an “i” in a blue circle, and clicking it will give you information about the media from which the cache was created as well as the contents of the cache itself:

Metadata Cache Details

If you have any older metadata cache files, it would be a good idea to re-create them using a current release of Beat Link Trigger so you can benefit from the new media-detection abilities.

If the file was created by an older version of Beat Link Trigger, you will be warned when adding it to the auto-attach list that it is missing the media details information, which will make it harder to match with mounted media, and the icon will be an exclamation point inside a yellow triangle. Clicking that brings up the warning again, which also shows information about the contents of the cache itself.

It does not make sense to try to auto-attach multiple files created from the same media, for example from different playlists. Beat Link Trigger will always give priority to files created from all tracks over files created from a playlist when considering matches, but it is unpredictable which file will be chosen if more than one playlist cache from the same media is being matched. Starting with version 0.4.1, Beat Link keeps track of the media that was used to create a cache, and uses that for more reliable matching; it will only allow you to have one file from a given piece of media on the auto-attach list at a given time. When you try to add a second, it will replace the first. If you are using older caches, though, you might run into this kind of unpredictability.

Viewing Metadata Cache Contents

If you want to work on trigger definitions while you don’t have access to CDJs or the media containing the tracks that you want to base them on, you can look at the contents of a metadata cache to find out the rekordbox IDs of the tracks you want your triggers to match.

To do this, choose View Metadata Cache Contents in the File menu.

View Cache option

This will open a file chooser dialog you can use to find the file containing the cache that you want to examine. Once you choose one, a window will open containing a row for each entry in the metadata cache, showing its rekordbox ID, title, and artist:

Example cache contents

Loading and Playing Tracks

Unless you are using a real player number, this feature will not work well for non-rekordbox media. Although Crate Digger can be used to provide a simplified and faster view of a player’s rekordbox media, browsing other kinds of media uses menu requests to the players, which will likely fail unless you are using a real player number.

During pre-show and after-show situations, when there is no DJ on stage, it can be convenient to cue up and play tracks from Front of House. If you can ensure that the tracks are inserted into one of the players’ media slots before the show (or at the end of the show), you can use Beat Link Trigger to accomplish this, either by choosing Network  Load Track on Player, or using the popup menu associated with a particular media slot in the Player Status window as shown in the screen shot below:

Load Track from Player Status Window

Either method opens the interface shown below; the advantage of starting from a media slot’s popup menu is that the corresponding section of the loader interface will be automatically opened for you. If there are any computers running rekordbox on the network, they will also show up as places that you can tell players to load tracks from.

Load Track Window

This window allows you to drill down through the menu hierarchy associated with the media mounted in any player slot, just as if you were on the player itself. The top-level elements are the mounted media libraries themselves, showing the media name and, for rekordbox media, the total number of tracks and playlists present on the media.

The actual sections available for each media library will depend on what the DJ chose to enable when configuring it within rekordbox. (Non-rekordbox media will only have the FOLDER menu, which shows the raw filesystem. That is also available on rekordbox media, in case there are some non-rekordbox tracks in there.) And if you are not using a real player number, the sections available are a simplified subset offered by Crate Digger, but they are faster and more reliable than asking the players.

You can click on the + icon to expand a section, or double-click anywhere in that row of the tree. The same actions will collapse an already-expanded section (although the icon will be labeled - in that case). Selecting a row that corresponds to an individual track enables the Load button:

Load Track Button

Clicking that button tells the player chosen in the Load on menu to load the selected track. (The button will also be disabled, with an explanation next to it, if that player is currently playing a track.)

If the chosen player is currently stopped at the Cue point, the Play if Cued button will be enabled; pressing it tells that player to start playing. If the player is currently playing, the button will be labeled Stop and Cue, and clicking it will tell the player to stop and return to the Cue point, so it will be ready to start playing again.

Limitations in the Fader Start protocol, which is used to start and stop players, make it impossible to start a player that is stopped anywhere other than the current Cue point.

The easiest way to find a track, if you know its title, artist, or album name, is to use the Search interface. As soon as you click on the SEARCH section of a media entry, the search interface opens at the top of the window, and you can start typing. As you add to your search string, the results are narrowed down. Once you can see what you are looking for, you can expand and load it.

Load Track: Searching

If there are more than 25 results matching your search string, only the first 25 will be loaded and shown to begin with. You can use the Load button to load more, in larger and larger batches, although your best bet is probably to use a longer and more selective search string instead:

Load Track: Searching

Keeping Player Status Always Visible

Some users have expressed an interest in making the Player Status Window always be visible, no matter what window is active in their operating system. This can be arranged by creating a global variable entry with the key :player-status-always-on-top and the value true before showing the window. In other words, add the following form to your Global Setup Expression:

(swap! globals assoc :player-status-always-on-top true)

If the window was already open when you set up this entry, you can make it take effect by choosing Network  Show Player Status again.

Automatically Opening Player Status

If you always want the Player Status window to open when you launch Beat Link Trigger, add the following form to your Came Online Expression, and whenever Beat Link Trigger successfully connects to a DJ Link network, it will also try to open the Player Status Window. It does this the same way as when you choose Network  Show Player Status, so you will get all the necessary error dialogs and coaching if the environment isn’t correct to support the window:

(beat-link-trigger.triggers/show-player-status)

Learning More

License

Deep Symmetry logo Copyright © 2016–2019 Deep Symmetry, LLC

Distributed under the Eclipse Public License 1.0, the same as Clojure. By using this software in any fashion, you are agreeing to be bound by the terms of this license. You must not remove this notice, or any other, from this software. A copy of the license can be found in LICENSE within this project.

Library Licenses

Remote Tea, used for communicating with the NFSv2 servers on players, is licensed under the GNU Library General Public License, version 2.

The Kaitai Struct Java runtime, used for parsing rekordbox exports and media analysis files, is licensed under the MIT License.