Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

The ultimate guide to importing a music library to Roon

Tags: roon album music

Roon is a Music player optimised to make browing your library enjoyable. It shows your music library at its best, linking your library together and furnishing it with additional metadata to deliver a truly immersive experience.

Roon made a big splash on its release in 2015, particularly amongst audiophiles. Since then the team behind Roon have persued a strategy of developing their software while integrating it with hi-fi devices. Roon has become a (pretty-much) default playback option in hi-fi.

One of Roon’s differentiators is the way it presents an abstraction layer over your library; comprehensively augmenting and correcting it. This is great for high-end hi-fi devices, because the last thing a hi-fi manufacturer wants is their beautiful hardware being let down by less-than-beautiful music libraries.

Underlying this is a musical graph that Roon builds. That’s a ‘graph’ in the discrete mathematical sense; a way of modelling relationships between different things. Roon can build a graph of relationships between different albums, artists, genres, labels and more which makes browsing your music library not only enjoyable… but informative!

For a product like Roon that looks really… really… beautiful, I think a few pictures best describe this…

These are pages built as a result of scanning my music library, but the data itself doesn’t come from my library, it comes from Roon’s database.

All this extra data and linking-together is built up as a result of you adding your music library to Roon. Roon allows you to import your locally stored music. (It also allows combining your collection with streaming services and connecting the two, but this isn’t the focus of this article.) Note that all this is done without ever actually editing your collection; Roon scans your library, but its identification and additional data is stored in its own databases.

Roon’s abstraction layer only works, and its musical graph can only be built, if Roon can identify the music you have, so it can link it to the information it holds online about your music. This process of identification involves analysing your music library, which in turn means Roon works best if your music library is organised to its tastes.

Now, Roon is good, but it’s also expensive. To get the best value from Roon you want it to be able to work with as much of your music as possible. The fact is that many libraries are not organised in a manner that helps Roon identify all of the music within. Roon has a bunch of expectations about how music is organised; in most cases it works well, but in more complicated cases it needs help.

If you don’t organise your library for Roon, you won’t get the full benefits of Roon because it will fail to find extra information about your music.

So this means, even given Roon’s music library magic, your music library still needs cleaning, fixing and organising. By fixing your music library you are providing the foundations for enjoyable music listening, no matter which music player you use.

To write this article I analysed multiple FAQs, KBs and community discussions about best practices for importing self stored music libraries to Roon. I’ve written a bit of background about music libraries and how Roon works, given some examples of problems and then extracted some “music library maxims” you can employ to avoid these problems. Finally, I’ve written a walkthough of using bliss to implement these maxims as rules.

Oh, and there’s a final grab-bag miscellany of other import problems and fixes I’ve learnt.

TL;DR

In case you want to skip forward (this is a long article) here are some links to top-level sections below:

  • How music libraries are organised
  • Roon: a library abstraction layer
  • Roon in action: the good, the bad, the untagged
  • How Roon imports music libraries
  • Roon music library maxims
  • Using bliss to organise Roon music libraries
  • Other import problems

How music libraries are organised

It’s worth a short primer on how music libraries, independent of Roon, are structured and how Roon works with this. If you know all about this stuff, skip ahead to the next Roon specific section.

There are two key ways that music libraries are organised, and both have an effect on how Roon imports your music. The first are the internal tags stored in each music file. The second is the file and folder paths.

Internal tags contain key-value pairs. For example: TITLE=Spanish Bombs or ALBUM NAME=Funeral.

Tags may be used for any purpose by the software that reads them. Most music players (but not Roon by default, we’ll discuss this later) use them to actually display, verbatim, your albums, songs, artists and more.

The other organisation approach is using file paths. File systems are hierarchies with the metadata built into the file and folder names. As such they typically have much less data than the tags. However, they still indicate important hints about grouping; for example, all tracks for one album should be stored in the same folder.

Roon: a library abstraction layer

Roon is more subtle than most players. It does have options to prefer your tags and display them, but in default mode it simply uses these tags, plus whatever data it can find (file paths, track lengths and more) to identify your music, so it can be matched with data online. That data is used to augment and furnish your experience.

Here’s an example. Here’s an album from my music library, shown in Roon:

Now that is some nice metadata! Much of this data was not actually stored in my music library. Instead, Roon has matched my library to its metadata online, adding in all kinds of goodies as a result.

So Roon can magically augment your music library, providing more information about the library and, when used via the app, improving its navigability. However, this does mean Roon is dependent on the tagging in your music library. For it to work at its best, you need to ensure your tags are correct, consistent and complete.

In addition, it’s worth noting that different types of music are thought of, and therefore tagged, in different ways. Classical music generally follows a schema different to popular music; there are more data points.

Not all music software can handle all classical music fields. Roon can, and because of the difficulty of matching such releases it pays to put time into this. Roon actually works differently for classical releases compared to popular.

Roon’s classical support is superb, but it takes extra work to really sing. Again, by accurately organising your music library, you stand the best chance of making Roon work for you.

Roon’s library abstraction layer affords a rich user experience… when it works. And it mostly does work. But, every so often, there are edge cases. (There are always edge cases…).

Roon in action: the good, the bad, the untagged

Let’s try importing some music. To start, we’ll just import an album at a time. Normally you’d add an entire music folder, but I’m trying to make this easy to follow.

Let’s start with as simple as we can go: a single disc mainstream album release. This is an album already groomed by bliss to have complete tags and accurate file paths.

Once we Select this folder, Roon imports and we can click the album. It shows extra data from Roon’s online databases:

This shows, if the tags and file paths are accurate, Roon’s import works well. In fact, for my library Roon works well for a good 85-90% of albums. However, for a large library, that still leaves a lot of albums to fix.

Let’s dive into the kind of problems you might encounter after importing a music library into Roon. In the coming sections I’ll list each common type of problem, then link to best practices to fix the problem.

Duplicate albums

Let’s look for an example where the organisation is more compromised.

Here’s a multi disc version of 3 Feet High and Rising:

First, this multi-disc re-issue is less well known than the original release.

Secondly, you can see the layout of the files is a little strange - the second CD is separated from the first, and the disc number itself is incorrect.

Once we Select this folder, here’s what Roon imports:

So Roon added the two folders separately, duplicating the albums, although both were correctly identified.

I also tried importing some “Various Artists” compilations and… holy duplication batman!

So Roon will sometimes duplicate albums, creating multiple copies in your Albums list and making navigation more difficult.

TL;DR - quick and easy ways of fixing these problems

  • Embedded tag metadata must be consistent within an album
  • Group tracks for multi disc albums within one authoritative parent album folder

No match

What if the album is not matched online? Sometimes, no matter how mainstream your release Roon fails to find a match for it, even though it does have it in its database.

The titles of the album(s) here have been contributed by crowd sourced online CD databases which are…. errr… crowd sourced. Thus we end up with wierdly formatted titles for the albums. This can stop Roon being able to correctly identify releases.

In addition, like the previous album, the folders were separated with no consistent parent folder to group all the tracks for both discs.

TL;DR - quick and easy ways of fixing these problems

  • Group tracks for multi disc albums within one authoritative parent album folder
  • Complete accurate identification and structural data in tags

Incorrectly identified

Sometimes albums are matched, but incorrectly. This appears more common for popular artists that have a diverse range of alternate versions of releases. Here’s an example with The Beatles popular 1967-1970 compilation:

The album simply titled 1967-1970 is correctly matched. The other one is a different cassette only release. But I certainly did not rip this from cassette tape.

That said, the album title in Roon is the same as the one that is embedded in the tags. This is a case where the album both needs grouping and needs correcting of the album tags.

This means the fixes for incorrectly identified albums are broadly the same as for where there are no matches.

TL;DR - quick and easy ways of fixing these problems

  • Group tracks for multi disc albums within one authoritative parent album folder
  • Complete accurate identification and structural data in tags

Correctly identified, but with incorrect grouping data on Roon’s database.

Sometimes Roon appears to misidentify an album, but actually the correct album is found, it’s just combined with data from other incorrect releases and the incorrect metadata ends up being surfaced.

I’m guessing this is some sort of problem in Roon’s ingest of metadata. Anyhow, here’s an example:

The album is actually called Celebration 2000 (without the [Enigma]) suffix and there is not one single track from the matched album on the imported album.

However, look beneath the covers (no pun intended) and the correct metadata can be found for the matched releases - the additional cover art is correct.

Here’s the correct release data on a database that Roon uses and here’s the incorrect data that appears to have been combined with the correct data. This does appear to be a quirk of the way Roon is grouping releases. I’ve particularly noticed this with “Greatest Hits” compilations where there are multiple albums with the same titles and artist names.

This is possibly the worst case - achieving a correct match, and yet displaying incorrect data from that match, is a situation that is most difficult to avoid. In some cases, manual overrides are the only fix.

TL;DR - quick and easy ways of fixing these problems

  • Group tracks for multi disc albums within one authoritative parent album folder
  • Complete accurate identification and structural data in tags
  • Manually override metadata in Roon

Not identified

The final case is where there’s no data in Roon’s database. This can always crop up of course; some sort of user generated album, extreme rareties, your child’s Christmas nativity recording… none of these can be expected to be matched.

However, here’s a surprising example - a (fairly) mainstream release that isn’t in Roon’s database:

When Roon can’t find matches online it uses existing data in your library.

Roon isn’t magic; you need to give it some help to identify music, particularly music of more challenging structures, or that is less mainstream. Roon also tries to keep on the safe side to avoid incorrect matches.

But this safety-first approach is also a strength. You can still add plenty of metadata into your library so that if you have a well organised library your library in Roon can still look great.

TL;DR - quick and easy ways of fixing these problems

  • Complete accurate identification and structural data in tags
  • Complete non-structural or identification data judiciously

So give me some solutions!

Where possible, it’s best to fix these problems in our library rather than within Roon. This means such fixes can be used by other software, and we can reliably re-import our music into other Roon instances and our fixes should re-apply.

Roon is software, not magic. It uses algorithms to import our music. We need to work with Roon’s algorithms to increase our chances of a pleasing result.

How Roon imports music libraries

So lets dive in more detail about how Roon imports your music. We know that Roon looks at your internal tags and music folder and file structure. But we need to know how it analyses your music library so we know how best to organise our library.

It’s easiest, and most informing so as to build a good mental model of what is happening, to start with an overview.

Broadly, Roon works in two steps:

  1. Roon groups tracks (files) into clusters (representing albums)
  2. Roon then identifies those clusters (albums), before looking up metadata given the albums it has found.

This makes sense - it’s only possible to match information about two albums - your local one and one online - if the album is as complete and representative as possible as the ‘canonical’ album.

It’s important to realise that these two stages are not shown in Roon, it’s just what happens in the background. All you see in Roon is a beautifully formatted display of the album you have (assuming the two stages above worked).

We’ll take each of these stages in turn, and then we’ll develop the guidance online into some best practice ‘maxims’ for organising music collections for Roon.

Clustering albums

When you add a music folder to Roon, it walks its way over your files, reading them in and storing all the metadata about the music contained therein.

Once it has done this (or, more accurately, as it is doing this) Roon executes its own algorithms to group the tracks it finds into albums.

Recall what we discussed in How music libraries are organised. Music libraries contain metadata in the form of embedded tags and information inferred by the files’ folders and filenames. It’s these metadata that Roon reads to group your tracks.

For example, if there are bunch of files in the same folder, and all have the same ALBUM NAME field, there’s a good chance they are from the same album. Roon applies heuristics to decide what makes up an album and what doesn’t.

This means, by editing these tags and file paths, we can help Roon to make sure albums are grouped together, which improves the chances of your music being recognised.

Identifying albums

So clustering is crucial. Only if Roon has a representative model of our current albums can we expect it to work well in the next stage: identification.

This identification process is where Roon sends the metadata it has found to its online database which replies with what data matches that query.

The aggregated information provided from each ‘cluster’ (each album) is what is used to identify the music. That includes the embedded tags and file paths that were also used to group the cluster.

The clustering defines the data that is sent - for example, an album cluster is likely to have a consistent ALBUM NAME and this is passed as part of the query.

If the metadata for an album isn’t complete then it can make identification less likely. More data means more confidence in the identification candidates.

This means, to increase your chances of Roon successfully identifying your music and match to albums online, your tags need to be both present and accurate too, so the identification algorithm using tags works.

But Roon has another trick up its sleeve which is probably more significant still than the tags and file paths.

Roon generates something called a TOC for each album. A TOC is a description of the tracks on an album, their positions and durations. The advantage of TOCs is that they are a very representative way of the contents of an album and so they are a good indicator of what the underlying album is.

The downside of a TOC is that they are not unique. When you think about it this isn’t that surprising given how many musical releases have been made, but if two albums have the same number of tracks all with the same length then you can get clashes.

This is particularly a problem on releases with small numbers of tracks. For example: singles.

These clashes are where other tags come in. With the extra data in the query, Roon can ‘settle’ arguments about which release is being referred to. In addition they can highlight examples where the data is so divergent that just relying on a TOC might give a false positive; what if the TOC and album simply isn’t recorded in Roon?

Note that a TOC is dependent on the ordering of tracks being known. So this still means your tracks need to have positional metadata recorded, either in the tags or the file paths. It’s also dependent on the amount of tracks being known; complete albums work better.

So while TOCs are probably the most significant single part of an identification query, they don’t work as well without the essential metdata stored in your music library’s tags and file paths.

Roon music library maxims

Now we understand an overview of how music libraries are organised and how Roon reads your music library to identify your music, we can start to tease out a set of maxims to music library management for Roon.

Each maxim is a statement with evidence and examples as to how the maxim should be applied to your music library management. Later on we’ll step through the import problems described above, encode the maxims in bliss and use them to solve these problems.

Using these maxims, we can work out how to use tags to fix Roon music libraries.

1: Embedded tag metadata must be consistent within an album

Description

When storing metadata in embedded tags, the values must be consistent.

Tags are used by Roon to group tracks into albums and match albums with its data online.

As an album is typically made up of multiple files, this means there are multiple tags; one in each file. To group an album, each tag should have consistent values for its album-level fields. For example:

1 Up All Night.flac

TRACK NAME    Up All Night
ALBUM NAME    A Deeper Understanding
ALBUM ARTIST  The War On Drugs
ARTIST        The War On Drugs

2 Pain.flac

TRACK NAME    Pain
ALBUM NAME    A Deeper Understanding
ALBUM ARTIST  The War On Drugs
ARTIST        The War On Drugs

Note that ARTIST generally refers to the track artist. In the presence of ALBUM ARTIST fields they are considered track level fields and are exempted from this consistency consideration. However, note that it’s common to have albums with only track level ARTIST fields, in which case these fields should be consistent (or supplemented with an ALBUM ARTIST field).

For multi-disc releases the album level tags must be the same across all discs. It’s quite common for disc number artifacts like “CD 2” to be inserted by CD ripping software. For Roon to correctly structure a release, such artifacts must be removed from the title and the disc number normalised into the DISCNUMBER field.

Having contradictory fields will confuse the grouping process. Roon may split albums into multiple separate albums because there are not enough hints to suggest the files should be clustered.

Sources and references

We use both ALBUMARTIST and ARTIST tags. Ideally for compilations you’d have the overall artist name (or perhaps Various Artists) in former and the specific track artist in the latter; however, this data is typically overridden by richer data from our metadata services, so I wouldn’t go to the effort of grooming these tags, aside from ensuring they are consistent amongst the files of an album.

@jeremiah - https://community.roonlabs.com/t/roons-meta-queried/772/4

2: Organise file paths consistently with tags

Description

When storing metadata in both embedded tags and inside file or folder names, the values must be consistent.

Both file paths and embedded tags are used by Roon to cluster tracks into albums and match albums with its data online.

If either contain contradictory metadata this will confuse these processes and lead to unidentified albums or false positives. However, in cases of contradictions, tags are seen as more authoritative.

Note that case sensitivity and whitespace are broadly ignored; the limitations of file systems mean that sometimes you may prefer to adopt no-spaces or enforcing case sensitivity.

Sources and references

These might occur in the file names (e.g. “05-03 Summer ‘68.flac”) or in the file’s tags. We check both but in general the tags are more authoritative. If things aren’t identifying, you might look for a mistake in the tags or a disagreement between the tags and filenames.

If you separate the discs, make sure the subdirectories include a parseable indication of the disc number […] and that it agrees with the media number in the tags and/or filenames.

@jeremiah - https://community.roonlabs.com/t/what-can-i-do-to-improve-my-metadata-matches/218/6

3: Group tracks for multi disc albums within one authoritative parent album folder

Description

Tracks within multi disc albums should be grouped in one of two ways:

  1. All tracks for all discs within one album folder, named after the album. The disc number should appear in the filename in a consistent place.

     George Harrison/All Things Must Pass/
       1-1 I'd Have You Anytime.flac
       1-2 My Sweet Lord.flac
       ...
       2-1 Beware Of Darkness.flac
       2-2 Apple Scruffs.flac
       ...
    
  2. All tracks for each disc within one disc folder, named after the disc (with optional disc artifact) and contained within the album folder.

     George Harrison/All Things Must Pass/
       CD 1/
         1 I'd Have You Anytime.flac
         2 My Sweet Lord.flac
         ...
       CD 2/
         1 Beware Of Darkness.flac
         2 Apple Scruffs.flac
    

Multi disc albums cause particular problems for clustering. It’s common to have album-level folders in a music library that are named after the disc, rather than the album itself, e.g:

George Harrison/All Things Must Pass (CD 1)/

The reason for this is twofold.

First, when ripping CDs a metadata lookup is typically made, but only for the CD being ripped. Online CD databases only record information on a per-CD basis and so each record is distinguished with a different CD number in the title (furthermore, the disc artifact can vary, “Disc”, “CD”, “Disk” and even “Volume” being used for different discs).

Second, when CDs are ripped, they are done so in isolation of any context of other CDs being ripped. So, the ripping software simply uses the disc number artifact in the title of the folder for the album.

It’s important to reflect the grouping of discs in the file system. If there are multiple disc folders at the same level it’s more difficult for Roon to parse. In this case, the hierarchy of files and folders is a stronger indicator of grouping.

Sources and references

make sure the files for a given album (or album set) are together in a directory

Whether the files of a multi-disc set are together in one directory or separated into subdirectories is a matter of preference.

@jeremiah - https://community.roonlabs.com/t/what-can-i-do-to-improve-my-metadata-matches/218/6

4: Complete accurate identification and structural data in tags

Description

Ensure that fields used for the identification of albums and tracks are completed. In addition, structural fields must be completed.

As per Organise file paths consistently with tags, the file paths must contain identical information, where the tag data is replicated.

“Structural” data is the metadata that conveys the position of tracks within the media of a release, and the position of the media within the release.

The fields that should be completed for single disc recordings are:

ALBUM NAME
ALBUM ARTIST
TRACK
TITLE

More optionally:

YEAR
UPC

In addition, for multi disc recordings:

DISCNUMBER

Structural, and some identification data, is used for clustering. Roon can more easily group tracks into albums by having consistent and complete album titles alongside correctly positioned tracks.

Identification is aided by the correct structuring of an album, because it’s only with track and media positions that an accurate TOC can be formed.

Finally, it’s still important to have correct and complete tag data for your library, especially when there is no possibility of identifying an album (for rarities or user-created albums) or the user intends to override Roon’s identification.

Sources and references

Roon uses tag information, such as your album and track titles, artist names, unique product codes (UPCs), year of an album release, etc. to match up your music content to Roon’s own metadata database.

Try to tag the files as accurately, specifically, and completely as possible, and work out how far you need to go to get results that communicate the needed information. This may require a different mindset than other software, which treats tags more literally.

With version 1.3, we pull even more information from your file tags, allowing you to finely tune various aspects of how Roon presents your metadata. You can use file tagging to help improve album and track identification, but also to fill in the gaps when Roon falls short

https://help.roonlabs.com/portal/en/kb/articles/file-tag-best-practice#Roon_and_file_tags

In particular, if you don’t have media numbers we’ll assume each disc is a separate entity while if you have correct media numbers we’ll be able to identify the entire box set.

@jeremiah - https://community.roonlabs.com/t/what-can-i-do-to-improve-my-metadata-matches/218/6

The tags we use for clumping and identification are: album, artist, albumartist, track name, track number, and media number.

@jeremiah - https://community.roonlabs.com/t/roons-meta-queried/772/4

The way I handle this scenario is to make sure the AlbumArtist and Artists are populated

@Stampie - https://community.roonlabs.com/t/roon-album-various-artist-grouping-doesn-t-work-properly/49001/12

5: Complete non-structural or identification data judiciously

Description

Make sure that standard classification or categorisation tags are completed, but consider only doing this on a case-by-case basis.

Roon’s matching algorithms, and database breadth, do not work 100% of the time. In some cases it is important to provide more metadata so that Roon’s user interface can be fully utilised, and the music metadata graph built by Roon can be integrated.

It’s also important to understand there’s a cost to this. Metadata management is not a zero cost activity.

First, consider only adding fields that are necessary. Of the non-structural/identification album-level tags, those used in Roon for non-classical recordings are:

ORIGINAL RELEASE DATE
VERSION
GENRE
LABEL
COUNTRY
CATALOG NUMBER
YEAR

For classical, also consider:

ENSEMBLE
CONDUCTOR
COMPOSER

Also, for tracks extra metadata can be provided to separate track listings:

WORK
PART
SECTION

In addition, PERSONNEL can be used repeatedly to add credits to a track.

Second, consider only adding these fields to albums that need fixing. This reduces the amount of metadata to manage.

Sources and references

You can use file tagging to help improve album and track identification, but also to fill in the gaps when Roon falls short

https://help.roonlabs.com/portal/en/kb/articles/file-tag-best-practice#Fully_Loaded_Tagged_Album_Example

6: Avoid missing or extra tracks

Description

Albums should be complete; all tracks within the release should be present, in the same folder, and no more.

Although sometimes it is tempting to remove duplicate tracks across your collection, data storage is cheap. Ensure albums are acquired and stored in a complete state.

To properly identify albums, Roon sends information about the locally stored album including track positions, duration and more. It also builds a TOC. If tracks are missing, the TOC is compromised and the missing track will make any potential match less likely to be picked.

If you know some of your albums aren’t complete, the best fix is to attempt to re-acquire (from ripping or re-downloading) the tracks.

If this is not possible, and you have some “odd tracks”, tagged with ALBUM NAME but with few or no other tracks from the album, it’s best to remove album level tags such as ALBUM NAME and just treat this as an odd-track. This way, the containing release won’t be misidentified. The track can still be accessed via Roon’s Tracks section.

Sources and references

When something doesn’t identify, the first thing I look for is Are there any files missing? Are there any extra files that don’t belong with this album?

@jeremiah - https://community.roonlabs.com/t/what-can-i-do-to-improve-my-metadata-matches/218/6

7: Remove duplicate tracks

Description

Duplicate tracks within an album should be removed so that there is only one track, correctly numbered, for each position.

Similarly to Avoid missing or extra tracks, the album should be clustered to as-close-to the accepted release structure. If tracks are duplicated with the same track position, Roon does not know which one is authoritative and so can be less sure of correct matches.

In general, it’s best to remove duplicates within an album. That doesn’t mean across a library. It’s common to have the same tracks on multiple releases; although this seems like a waste it remains important for Roon to correctly identify an album.

To choose which duplicate to remove, you can apply heuristics. Some to consider are:

  • Audio quality or bitrate
  • Keeping the file with the most consistency with other files in the album (e.g. same format, metadata etc)
  • Keeping the most recent file

Sources and references

make sure […] no files have duplicates.

@jeremiah - https://community.roonlabs.com/t/what-can-i-do-to-improve-my-metadata-matches/218/6

Following these maxims will help us ensure a clean, navigable, attractive Roon experience.

Now it’s time to get practical! In the next section I’ve written a walkthrough of using bliss to implement each of the maxims above. You can use whichever tag editor you like, although note that in most cases you can’t encode maxims in tag editors like you can encode rules in bliss.

Using bliss to organise Roon music libraries

bliss is a music library organiser; it assesses and fixes your tags and file paths to make your library more consistent, correct, complete… all the things that will help Roon import your library successfully. bliss will improve your Roon experience!

If you want to follow along, you’ll need to download and install bliss first. We’ve got versions for all the major OSes, plus NAS drives:



This post first appeared on Music Library Management, please read the originial post: here

Share the post

The ultimate guide to importing a music library to Roon

×

Subscribe to Music Library Management

Get updates delivered right to your inbox!

Thank you for your subscription

×