Package org.deepsymmetry.beatlink.data
Class CueList
- java.lang.Object
-
- org.deepsymmetry.beatlink.data.CueList
-
public class CueList extends Object
Provides information about each memory point, hot cue, and loop stored for a track.- Author:
- James Elliott
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CueList.Entry
Breaks out information about each entry in the cue list.
-
Field Summary
Fields Modifier and Type Field Description List<CueList.Entry>
entries
The entries present in the cue list, sorted into order by increasing position, with hot cues coming after ordinary memory points if both are at the same position (as often seems to happen).List<ByteBuffer>
rawExtendedTags
The bytes from which the Kaitai Struct tags holding the nxs2 cue list information (which can include DJ-assigned comment text for each cue) were parsed from an extended ANLZ file.Message
rawMessage
The message holding the cue list information as it was read over the network.List<ByteBuffer>
rawTags
The bytes from which the Kaitai Struct tags holding cue list information were parsed from an ANLZ file.static Comparator<CueList.Entry>
SORT_COMPARATOR
The comparator used for sorting the cue list entries during construction, which orders them by position within the track, with hot cues coming after ordinary memory points if both exist at the same position.static Comparator<CueList.Entry>
TIME_ONLY_COMPARATOR
A comparator for sorting or searching entries that considers only their position within the track, and not whether they are a hot cue.
-
Constructor Summary
Constructors Constructor Description CueList(List<ByteBuffer> rawTags)
Constructor for when recreating from files containing the raw tag bytes if there were no nxs2-style extended cue tags.CueList(List<ByteBuffer> rawTags, List<ByteBuffer> rawExtendedTags)
Constructor for when recreating from files containing the raw tag bytes and raw nxs2-style cue comment tag bytes.CueList(Message message)
Constructor when reading from the network or a file.CueList(RekordboxAnlz anlzFile)
Constructor for when reading from a rekordbox track analysis file.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object o)
CueList.Entry
findEntryAfter(long milliseconds)
Returns the entry whose track position comes most closely after the specified number of milliseconds, if any.CueList.Entry
findEntryBefore(long milliseconds)
Returns the entry whose track position comes most closely before the specified number of milliseconds, if any.static Color
findRekordboxColor(int colorCode)
Look up the color that rekordbox would use to display a cue.int
getHotCueCount()
Return the number of entries in the cue list that represent hot cues.int
getMemoryPointCount()
Return the number of entries in the cue list that represent ordinary memory points, rather than hot cues.int
hashCode()
String
toString()
-
-
-
Field Detail
-
rawMessage
public final Message rawMessage
The message holding the cue list information as it was read over the network. This can be used to analyze fields that have not yet been reliably understood, and is also used for storing the cue list in a file. This will benull
if the cue list was not obtained from a dbserver query.
-
rawTags
public final List<ByteBuffer> rawTags
The bytes from which the Kaitai Struct tags holding cue list information were parsed from an ANLZ file. Will benull
if the cue list was obtained from a dbserver query.
-
rawExtendedTags
public final List<ByteBuffer> rawExtendedTags
The bytes from which the Kaitai Struct tags holding the nxs2 cue list information (which can include DJ-assigned comment text for each cue) were parsed from an extended ANLZ file. Will benull
if the cue list was obtained from a dbserver query, and empty if there were no nxs2 cue tags available in the analysis data.
-
entries
public final List<CueList.Entry> entries
The entries present in the cue list, sorted into order by increasing position, with hot cues coming after ordinary memory points if both are at the same position (as often seems to happen).
-
TIME_ONLY_COMPARATOR
public static final Comparator<CueList.Entry> TIME_ONLY_COMPARATOR
A comparator for sorting or searching entries that considers only their position within the track, and not whether they are a hot cue.
-
SORT_COMPARATOR
public static final Comparator<CueList.Entry> SORT_COMPARATOR
The comparator used for sorting the cue list entries during construction, which orders them by position within the track, with hot cues coming after ordinary memory points if both exist at the same position. This often happens, and moving hot cues to the end ensures the waveform display components identify that position as a hot cue, which is important information.
-
-
Constructor Detail
-
CueList
public CueList(RekordboxAnlz anlzFile)
Constructor for when reading from a rekordbox track analysis file. Finds the cues sections and translates them into the objects Beat Link uses to represent them.- Parameters:
anlzFile
- the recordbox analysis file corresponding to that track
-
CueList
public CueList(List<ByteBuffer> rawTags)
Constructor for when recreating from files containing the raw tag bytes if there were no nxs2-style extended cue tags. Included for backwards compatibility.- Parameters:
rawTags
- the un-parsed ANLZ file tags holding the cue list entries
-
CueList
public CueList(List<ByteBuffer> rawTags, List<ByteBuffer> rawExtendedTags)
Constructor for when recreating from files containing the raw tag bytes and raw nxs2-style cue comment tag bytes.- Parameters:
rawTags
- the un-parsed ANLZ file tags holding the cue list entriesrawExtendedTags
- the un-parsed extended ANLZ file tags holding the nxs2-style commented cue list entries
-
CueList
public CueList(Message message)
Constructor when reading from the network or a file.- Parameters:
message
- the response holding the cue list information, in either original nexus or extended nxs2 format
-
-
Method Detail
-
getHotCueCount
public int getHotCueCount()
Return the number of entries in the cue list that represent hot cues.- Returns:
- the number of cue list entries that are hot cues
-
getMemoryPointCount
public int getMemoryPointCount()
Return the number of entries in the cue list that represent ordinary memory points, rather than hot cues. The memory points can also be loops.- Returns:
- the number of cue list entries other than hot cues
-
findEntryBefore
public CueList.Entry findEntryBefore(long milliseconds)
Returns the entry whose track position comes most closely before the specified number of milliseconds, if any. If there is a cue which falls exactly at the specified time, it will be returned (and it will also be returned byfindEntryAfter(long)
). If there is more than one entry at the exact time as the one that is returned, the one chosen will be unpredictable. All times are rounded to half frame units, because that is the resolution at which cues are stored.- Parameters:
milliseconds
- the time of interest within the track- Returns:
- the cue whose start time is closest to the specified time but not after it
-
findEntryAfter
public CueList.Entry findEntryAfter(long milliseconds)
Returns the entry whose track position comes most closely after the specified number of milliseconds, if any. If there is a cue which falls exactly at the specified time, it will be returned (and it will also be returned byfindEntryBefore(long)
). If there is more than one entry at the exact time as the one that is returned, the one chosen will be unpredictable. All times are rounded to half frame units, because that is the resolution at which cues are stored.- Parameters:
milliseconds
- the time of interest within the track- Returns:
- the cue whose start time is closest to the specified time but not before it
-
findRekordboxColor
public static Color findRekordboxColor(int colorCode)
Look up the color that rekordbox would use to display a cue. The colors in this table correspond to the 4x4 grids that are available inside the hot cue configuration interface.- Parameters:
colorCode
- the color index found in the cue- Returns:
- the corresponding color or
null
if the index is not recognized
-
-