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.
The metadata queries are performed with the help of the
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.
Raw database access is provided by the Crate Digger project.
An good example of an application built using this library is Beat Link Trigger.
- James Elliott
Interface Summary Interface Description AlbumArtListenerThe listener interface for receiving updates when the album art available for a track loaded in any player changes. AnalysisTagListenerThe listener interface for receiving updates when requested analysis information available for a track loaded in any player changes. BeatGridListenerThe listener interface for receiving updates when the beat grid available for a track loaded in any player changes. DatabaseListenerThe listener interface for receiving updates when
CrateDiggerhas 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.
MetadataProviderA 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
MountListenerThe listener interface for receiving updates when the set of mounted media slots on the network changes. OverlayPainterIn 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. RepaintDelegateSupports delegation of Swing repaint calls to a host component. SignatureListenerThe listener interface for receiving updates when the signatures available for a track loaded in any player change. TrackMetadataListenerThe listener interface for receiving updates when the metadata available about a track loaded in any player changes. TrackPositionBeatListenerThe 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
TimeFinderintegrates it for you).
TrackPositionListenerThe 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). WaveformListenerThe listener interface for receiving updates when the waveforms available for a track loaded in any player change.
Class Summary Class Description AlbumArtRepresents 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. AlbumArtUpdateProvides notification when the album art associated with a player changes. AnalysisTagFinderWatches for new metadata to become available for tracks loaded on players, and queries the appropriate player for any desired track analysis sections (identified by the analysis file extension and four-character tag type code) when that happens. AnalysisTagFinder.CacheEntryWraps values we store in our hot cache so we can keep track of the player, slot, track, file extension, and type tag the analysis section was associated with. AnalysisTagUpdateProvides notification when requested track analysis information associated with a player changes. ArtFinderWatches for new metadata to become available for tracks loaded on players, and queries the appropriate player for the album art when that happens. BeatGridProvides 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. BeatGridFinderWatches for new metadata to become available for tracks loaded on players, and queries the appropriate player for the track beat grid when that happens. BeatGridUpdateProvides notification when the beat grid associated with a player changes. ColorItemRepresents a track color label. CrateDigger CueListProvides information about each memory point, hot cue, and loop stored for a track. CueList.EntryBreaks out information about each entry in the cue list. DataReferenceUniquely 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. DeckReferenceUniquely 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. MenuLoaderProvides support for navigating the menu hierarchy offered by the dbserver on a player for a particular media slot. MetadataFinderWatches for new tracks to be loaded on players, and queries the appropriate player for the metadata information when that happens. PlaybackStateCaptures the playback state of a single player that has the track loaded, as an immutable value class. SearchableItemRepresents 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. SignatureFinderWatches 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. SignatureUpdateProvides notification when the track signature associated with a player changes. SlotReferenceUniquely identifies a media slot on the network from which tracks can be loaded, by the player and slot type. TimeFinderWatches 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. TrackMetadataRepresents rekordbox metadata (title, artist, etc.) about tracks loaded into players on a DJ Link network. TrackMetadataUpdateProvides notification when the track metadata associated with a player changes. TrackPositionUpdateKeeps track of the most recent information we have received from a player from which we have been able to compute a track position. WaveformDetailGives 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 WaveformDetailUpdateProvides notification when the waveform detail associated with a player changes. WaveformFinderWatches for new metadata to become available for tracks loaded on players, and queries the appropriate player for track waveforms when that happens. WaveformPreviewGives 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 WaveformPreviewUpdateProvides notification when the waveform preview associated with a player changes.