codeberg edestcroix/Recordbox v0.11.0-beta.1
0.11.0 Beta Release

pre-release8 hours ago

The first major step towards 0.11.0 is complete with this beta release, featuring a major rework of the database and library parsing modules.

What Has Changed

This beta release primarily contains changes to the database and library parsing code, along with some minor changes and fixes. While the synced lyrics support is almost done, it is not included in this beta in order to focus first on potential issues with the library management code. Also, these release notes do not cover all changes, only the major ones that this beta is aimed at testing.

Porting to diesel

The database has been ported to use diesel and in the process the database schema has been completely replaced. The new schema is more organized and better represents the actual structure of the music, with proper tables for albums, tracks, etc, rather than constructing the albums at query-time. As a result, the complexity of the database has been reduced and in combination with the reworking of how music libraries are parsed should reduce the amount of incorrectly grouped albums or tracks.

New Parsing

In tandem with the database rework, the library parsing code has also been overhauled to parse music on a directory-by-directory basis. Previously, the parser would parse every music file individually in a thread pool. This allowed for faster parsing but also meant the parser had no context for the directory structure of music when trying to organize albums. Now, instead of parsing each track on it's own, the parser keeps tracks grouped by directory and parses them asynchronously, allowing for more context when parsing tracks without losing performance. Now, when deciding how to group music or identify primary artists, the parser will consider only tracks in the same directory. Since albums are generally stored in their own directories, this should help prevent distinct albums or tracks with similar or identical metadata from being grouped together. Albums now use the directory they are contained in as their primary key as well.

Special Cases

The parser also has conditions it uses to check for singles and multi-disc albums to ensure they are organized correctly. There are currently two special cases apart from the default album parsing behavior:

Singles

If a track does not have an "album" tag, it will be interpreted as a single instead of being put under "Unknown Album" if it is either a) the only music file a directory, b) tagged as being track number 1 out of a total of 1, (has both track number and track total tags set to 1 or 1/1 is in the track number tag) or c) in a directory titled "singles". In this case, it will appear in the library as an album with the same title as the track and with the single as the only track.

Multi-Disc Albums

The other special condition is to check for multi-disc albums that are organized into separate directories for each disc. To avoid splitting each disc into a separate album, the parser checks for directories that contain sub-directories titled something like disc_n, disc-n, disc n, where n is a number, and cd is also matched in place of disc. (all case-insensitive) In this case, the directory containing the disc sub-directories is considered the top-level directory for the album. It is likely that this check will have to be updated to expand the regex which matches these directories with names I have not considered. If an album gets split up into separate albums for each disc after updating, this is probably why and I will update the check to match any other name patterns as necessary.

Installing

This release is currently not available on Flathub. I may add it to the flathub-beta repository in the future, but for now the release can be built from source or installed from the flatpak file linked on this release page. It can be installed with flatpak install ca.edestcroix.Recordbox.Devel.flatpak. This will install a development version of Recordbox alongside the stable version to prevent potential version conflicts and make updating to the stable version of 0.11.0 easier when it is ready. It is also compiled with debug support so changing the RUST_LOG=recordbox=warn variable in flatseal to RUST_LOG=recordbox=debug will enable debug logging output.

- Note that because this is compiled in debug mode, it will not be as performant as the release version. When compiled in debug mode startup and parsing times are noticeably slower, among other things.

Next Steps

With this beta release, the next step is to focus on resolving any outstanding issues with the database and library organization. My hope is that the changes made in this release will address the majority, if not all, of the reports of incorrectly organized music. Realistically, this will likely not be the case, and I'm sure some new organizational issues will appear, which is why this is being released now as a beta instead of waiting until the full release. The other major change for 0.11.0, the synchronized lyrics support, is almost over the finish line as well, with only a bit of polishing and improvements to the workflow for adding new lyrics remaining. While working on these two steps, I'll will also try to fix as many of the recent papercuts, cosmetic bugs, and other issues that have been reported recently as well.

Don't miss a new Recordbox release

NewReleases is sending notifications on new releases.