See: Description
| Interface | Description |
|---|---|
| AlbumArtListener |
The listener interface for receiving updates when the album art available for a track loaded in any player
changes.
|
| BeatGridListener |
The listener interface for receiving updates when the beat grid available for a track loaded in any player
changes.
|
| DatabaseListener |
The listener interface for receiving updates when
CrateDigger has obtained the rekordbox database
that was just mounted in a player slot, or when that slot has unmounted so the database is no longer relevant. |
| MetadataCacheCreationListener |
The listener interface for receiving updates on the progress of creating a metadata cache file.
|
| MetadataCacheListener |
The listener interface for receiving updates when the set of attached metadata caches changes.
|
| MetadataProvider |
A class that is able to provide metadata for a loaded track without the need to query the source player can
implement this interface and register itself with the
MetadataFinder.addMetadataProvider(MetadataProvider). |
| MountListener |
The listener interface for receiving updates when the set of mounted media slots on the network changes.
|
| OverlayPainter |
In order to make it easy for applications like Beat Link Trigger to overlay selections or cues on the GUI
components offered by Beat Link, they allow an overlay painter to be registered with them, and it will then
be invoked after the component has done its own painting.
|
| RepaintDelegate |
Supports delegation of Swing repaint calls to a host component.
|
| SignatureListener |
The listener interface for receiving updates when the signatures available for a track loaded in any player
change.
|
| TrackMetadataListener |
The listener interface for receiving updates when the metadata available about a track loaded in any player
changes.
|
| TrackPositionBeatListener |
The listener interface for receiving updates when a new beat has occurred during track playback, when you want
to know the actual new beat number (the beat packet itself does not carry this information, but the
TimeFinder integrates it for you). |
| TrackPositionListener |
The listener interface for receiving updates when there are significant changes to the movement through
a track on a player (for example, to send time code that represents the progress of playing the track).
|
| WaveformListener |
The listener interface for receiving updates when the waveforms available for a track loaded in any player
change.
|
| Class | Description |
|---|---|
| AlbumArt |
Represents album artwork associated with tracks loaded into players on a DJ Link network, and provides a
convenience method for getting a buffered image for drawing the art.
|
| AlbumArtUpdate |
Provides notification when the album art associated with a player changes.
|
| ArtFinder |
Watches for new metadata to become available for tracks loaded on players, and queries the
appropriate player for the album art when that happens.
|
| BeatGrid |
Provides information about each beat in a track: the number of milliseconds after the start of the track that
the beat occurs, and where the beat falls within a measure.
|
| BeatGridFinder |
Watches for new metadata to become available for tracks loaded on players, and queries the
appropriate player for the track beat grid when that happens.
|
| BeatGridUpdate |
Provides notification when the beat grid associated with a player changes.
|
| ColorItem |
Represents a track color label.
|
| CrateDigger |
Uses the Crate Digger library to
provide an even more reliable source of track metadata, even when there are four players in use on the network
and the
VirtualCdj is forced to use a non-standard player number. |
| CueList |
Provides information about each memory point, hot cue, and loop stored for a track.
|
| CueList.Entry |
Breaks out information about each entry in the cue list.
|
| DataReference |
Uniquely identifies a track, album art, beat grid, or waveform currently available on the network, by the player
and media slot in which it is mounted, and its rekordbox ID.
|
| DeckReference |
Uniquely identifies a place where a track can be currently loaded on the network, either the visible deck of one
of the players, or one of the hot cues on a player.
|
| MenuLoader |
Provides support for navigating the menu hierarchy offered by the dbserver on a player for a particular media slot.
|
| MetadataCache |
A ZIP-file based cache of all the kinds of track metadata that we need, so we can operate with full functionality
even when metadata requests are difficult or impossible because four CDJs are all using the same media.
|
| MetadataFinder |
Watches for new tracks to be loaded on players, and queries the
appropriate player for the metadata information when that happens.
|
| PlaybackState |
Captures the playback state of a single player that has the track loaded, as an immutable value class.
|
| SearchableItem |
Represents an item with an ID and label that can be used as a way to select tracks in a dynamic playlist request,
and on which playlists can be sorted.
|
| SignatureFinder |
Watches for new metadata to become available for tracks loaded on players, and when enough elements have been
loaded, calculates a signature string that uniquely identifies the track, based on its title, artist, duration,
waveform, and beat grid.
|
| SignatureUpdate |
Provides notification when the track signature associated with a player changes.
|
| SlotReference |
Uniquely identifies a media slot on the network from which tracks can be loaded, by the player and slot type.
|
| TimeFinder |
Watches the beat packets and transport information contained in player status update to infer the current
track playback position based on the most recent information available, the time at which that was
received, and the playback pitch and direction that was in effect at that time.
|
| TrackMetadata |
Represents rekordbox metadata (title, artist, etc.) about tracks loaded into players on a DJ Link network.
|
| TrackMetadataUpdate |
Provides notification when the track metadata associated with a player changes.
|
| TrackPositionUpdate |
Keeps track of the most recent information we have received from a player from which we have been able to compute
a track position.
|
| WaveformDetail |
Gives a detail view of the audio content of a track, and offers a Swing component for rendering that view
as part of a user interface, along with annotations showing the current playback position, beats, and cue points,
if the appropriate metadata is available.
|
| WaveformDetailComponent |
Provides a convenient way to draw waveform detail in a user interface, including annotations like the
location at the current time, and cue point markers (if you supply
TrackMetadata so their location
can be determined), and beat markers (if you also supply a BeatGrid). |
| WaveformDetailUpdate |
Provides notification when the waveform detail associated with a player changes.
|
| WaveformFinder |
Watches for new metadata to become available for tracks loaded on players, and queries the
appropriate player for track waveforms when that happens.
|
| WaveformPreview |
Gives a birds-eye view of the audio content of a track, and offers a Swing component for rendering that view
as part of a user interface, along with annotations showing the current playback position and cue points, if the
appropriate metadata is available.
|
| WaveformPreviewComponent |
Provides a convenient way to draw a waveform preview in a user interface, including annotations like the
current time and minute markers (if you supply
TrackMetadata so the total length can be determined),
and cue markers (if you also supply a CueList). |
| WaveformPreviewUpdate |
Provides notification when the waveform preview associated with a player changes.
|
Offers rich information about the tracks loaded in players on the network.
The classes in this package can augment the low-level information offered by the packet listeners with
rich details about track metadata, including album art, cue point locations, beat grid, and waveforms, both
the whole-track preview, and full detailed waveform for scrolling through. The
MetadataFinder is the main coordinator for obtaining and caching this
information, and it keeps track of the track metadata for all tracks loaded on decks, either for current playback,
or as hot cues. It also supports creating metadata cache files to avoid the need to query players for this
information during busy shows with a full complement of four CDJs.
The metadata queries are performed with the help of the org.deepsymmetry.beatlink.dbserver package,
which knows how to locate and communicate with the database servers running on the players.
For shows in which four players are in use, the dbserver interface cannot be relied on, since we are not able
to use a real player number ourselves. The CrateDigger class allows us to
still obtain metadata in those situations, by downloading entire rekordbox database export files from the players
using their NFSv2 servers, which do not care about player numbers. By parsing the database it can also find and
download the files containing track analysis information like waveforms, beat grids, artwork, etc.
This project is based on research performed with dysentery, and the packet analysis resulting from that project (also available as downloadable PDF).
Raw database access is provided by the Crate Digger project.
An good example of an application built using this library is Beat Link Trigger.
Copyright © 2016–2019 Deep Symmetry, LLC. All rights reserved.