All notable changes to this project will be documented in this file. This change log follows the conventions of keepachangelog.com.
- Thanks to Dominik Stolz (@voidc), we can now
parse
exportExt.pdb
files for the tag information they contain.
- An error in interpreting a value in the database export file format could lead to some rows that were actually present in tables not being found. Thanks to @IvanOnishchenko for pointing this out, and Jan Holthuis (@Holzhaus) for identifying a flaw in the first attempt at correcting it.
0.2.0 - 2024-05-04
May the Fourth be with you.
- Upgraded Kaitai Struct to version 0.10, which includes a number of
fixes and adds linting of mapped values.
🔧 This is a backwards-incompatible change.
- Since we are already backwards incompatible with pervious releases,
changed some mapped value names to correspond to
the KSY style guide and fix linter errors reported by KSC 0.10:
- In
rekordbox_pdb.ksy
renamednum_groups
tonum_row_groups
. This means thatPage.numGroups
is nowPage.numRowGroups
in the generated Java class. - In
rekordbox_pdb.ksy
renamedautoload_hotcues
toautoload_hot_cues
. This means thatTrackRow.autoloadHotcues
is nowTrackRow.autoloadHotCues
in the generated Java class. - In
rekordbox_anlz.ksy
renamedlen_preview
tolen_data
. This means thatWavePreviewTag.lenPreview
is nowWavePreviewTag.lenData
in the generated Java class. - In
rekordbox_anlz.ksy
renamedlen_beats
tonum_beats
. This means thatBeatGridTag.lenBeats
is nowBeatGridTag.numBeats
in the generated Java class. - In
rekordbox_anlz.ksy
renamedlen_cues
tonum_cues
. This means thatCueTag.lenCues
andExtendedCueTag.lenCues
are nowCueTag.numCues
andExtendedCueTag.numCues
in the generated Java classes.
- In
- Also upgraded to Java 11 as a compilation target, in order to be able to work with the new IO API, among other things.
- New API to create an archive of all the metadata from a media export volume needed to support Beat Link (to support working with the Opus Quad, which cannot provide metadata itself).
- With the help of new linting in the latest unreleased version of KSC, changed all character encoding names to use their soon-to-be-canonical uppercase versions.
0.1.6 - 2022-03-07
- Ability to parse
PSSI
(song structure/phrase analysis) tags now exported by rekordbox 6. - Ability to parse the history playlist names and entries found in rekordbox database exports.
- Upgraded Kaitai Struct to version 0.9, which fixes a bug that
prevented us from using enums for the four-character-codes in
track analysis files. This makes the parsed values more readable
in the Web IDE, and in the generated classes as well.
🔧 This is a backwards-incompatible change.
- @Swiftb0y improved our understanding of the format of DeviceSQL strings in export files, which simplified the Kaitai Struct definitions for them, and greatly improved the documentation.
- The offset numbers in table page diagrams were incorrect (the documentation did not accurately reflect the Kaitai Struct parser).
0.1.5 - 2020-12-28
- DeviceSQL Strings with kind
90
are actually stored as UTF-16LE with an unknown00
byte between the length and text. - The structure analysis documentation and diagram for database table pages neglected a pair of unknown bytes at the end, so the locations of the row presence flags and row offsets were shown incorrectly.
0.1.4 - 2020-05-10
- The colors assigned to ordinary memory points and loops use a completely separate mechanism, which was discovered by @ehendrikd.
- Apparently some
DAT
files can be created by mixers somehow? And apparently these have incorrectly-formatted vestigialPWAV
andPWV2
tags that claim to have the normal number of preview bytes, but whose tag size is equal to their header size, so they have no actual data at all. This was causing the Kaitai Struct parser to crash. This change allows the parse to succeed, and instead these tags will returnnil
when you ask for theirdata()
. - Rekordbox 6 seems to have at least one new phrase style in it, and this was also crashing the parser. For now, until KSC can handle switching on possibly-null enum values in Java, give up on using an enum for this.
0.1.3 - 2020-02-09
- The parsing of
DAT
files would crash on some cue lists because we originally assumed the cue count was a four byte value, but it appears to actually only be two bytes (which is more than enough) and sometimes non-zero values would appear in the high bytes, causing us to try to read vastly more cues than actually existed. Thanks to @drummerclint for reporting this and sharing the problem file that enabled me to figure it out.
0.1.2 - 2019-10-25
- Some extended cue entries found in the field were missing the color
bytes which are expected to follow the comment text, and this was
causing the parsing of
EXT
files to fail. These values are now treated as optional. - Now builds properly under current JDKs, including Amazon Corretto 11 (which is a long-term support release). The minimum JDK for building is now Java 9, but the resulting build is still compatible back to Java 1.6. Building under Java 11 results in much nicer JavaDoc, with search support.
0.1.1 - 2019-08-25
- Ability to parse
PCO2
tags, which hold cues and loops along with DJ-assigned comment labels and colors, displayable on nxs2 players. - Ability to parse
PSSI
tags, which hold phrase structure analysis performed by rekord box with a Performance license. (As this is not currently included when tracks are exported to removable media, nor available through adbserver
query, it cannot be used by Beat Link.) Many thanks to @mganss for this contribution! - More explanation of the interpretation of waveform color preview tags.
- Initial release.