Is there an easy way to reprocess a group of seemingly unrelated albums?

I used the following to create my directory/track naming convention:

default: $albumartist/$album ($original_year) - $format $bitdepth-$album_samplerate $media [$year $label $albumdisambig$catalognum]%aunique{}/%if{$multidisc,$disc-}$track - $title

I thought having tracks in a mult-disc set numbered 1 to N prefaced with disc number was a good idea. Example The Complete Blue Note Blue Mitchell Sessions is a 4-CD set. There are 37 tracks. CD 1 has 9 tracks and is numbered 01-01 to 01-09 as you would expect. CD 2 has the next 8 tracks but rather than starting over as 02-01 they are numbered 02-10, 02-11, 02-12 up to 02-17. The last track of the set if 04-37. All good so far as that is what I told Beets to do.

The problem is Roon expects each disc to start over at “track 01”. It is expecting CD 2 to be 02-01 through 02-08 and the last track of the group to be 04-10 not 04-37

I have almost 700 albums that are multi-disc sets and not identifiable by Roon.

Is there an easy way to change my config file and process just those multi CD sets? What would the command line call to reprocess after changing my config file look like???

Yep! That’s the per_disc_numbering config option:

Renaming your files to reflect your new configuration is the topic of an FAQ:


Good gravy I’ve shoot myself in the foot again. I was running out of drive space. So I started to delete a bunch from my “post processing directory”. I’ve been too scared to work in “real” directory even though I have backups. So after moving files, deleting and some other hoops to jump through I did:
beet remove -f a few days back.

So now I’ve got most tagged and in directories the way I want, but no way to run “move” on them. My long term plan was to run (hopefully) import at a later date without tagging to get an accurate DB with the real location of files that I could just add small numbers to as I get CDs in one or two at a time.

Is that a reasonable plan? That is, start with a blank DB, run import AsIs on the entire 9,000+ albums/100K+ files that are already tagged with MusicBrainz IDs. Once that is done run Move on them in place with the new disc numbering?

I’ve already set up my config file with numbering that Roon likes and run it on about 50 multi disc sets as a test and Roon likes what is sees.

Sure, sounds reasonable!

1 Like

Will the import go quickly since it won’t (I’m assuming) have to go out and find the version of CD, nor actually tag the files? Any tricks or suggestions for not tagging, copying or moving…just want to load the DB with library data.

That’s the deal with -A, yep. You will also want to turn of moving/copying (with the appropriate command-line flags like -M or -C, or the relevant config options) as well as metadata writing (with -W or the config equivalent), although the latter probably shouldn’t do anything anyway if you’re not autotagging.

For anyone looking to do the same this is my current config to import to a clean/empty DB and renumber tracks to Roon’s liking. After importing with below, I do a “beet move” and only the multi-disc albums get renamed.

per_disc_numbering: yes

    quiet: no #Testing this come back to it!!!
    write: no #Writes tags to files/tracks
    copy: no
    move: no
    delete: no # Be careful!!!
    resume: ask
    incremental: no
    quiet_fallback: skip
    log: /config/beet.log
    duplicate_action: skip #“remove” means remove **old** item
    from_scratch: yes

I was kind of surprised that it still had to go out to MusicBrainz and find every album…so it is in no way fast.

Is that by chance because I have from_scratch = yes??? I was thinking with everything set to “no” it would just put the file paths into the DB. Does the import actually put particular MusicBrainz data like individual release info into the DB not just tag the music files correctly?

1 Like

So how does the --search-id SEARCH_ID feature work?

I am trying with --search-id MUSICBRAINZ_ALBUMID because my large group to import has those IDs. But I always get the error message:

No matching release found for xx tracks.
For help, see:

The no match docs don’t shed any light. I must not be understanding the functionality correctly.

I was hoping it would take the proper ID from the album being currently imported and make that direct match much like when I to the -t, timid mode and copy/paste the ID directly form MusicBrainz URL.

What am I not understanding here? Thanks!

I swear there’s a way to import without querying musicbrainz.

As a workaround, maybe try with a limit of 0 candidates? searchlimit

You can also run a musicbrainz server locally, but if you’ve never messed with virtual machines (is it all docker now? even harder/worse) or linux I wouldn’t recommend it.

I’ve only seen it work on an individual album (release group) basis. i.e. import one folder, specify a MBID, repeat. I usually use a full URL but the ID alone should work as well.

1 Like

If I’m understanding you correctly that is like when you are doing an interactive session and you provide the “I” option and it prompts you for the ID and you copy/paste it in from Muiscbrainz, correct?

I was hoping since the tracks/albums already have Musicbrainz IDs in the tags Beets would pull that out and supply it. The goal would be to populate an empty DB with the values I’ve already provided on a previous import.

Example, I have over 100 Blue Note CDs ripped that are the RVG edition. These are special to me and I’d like them tagged correctly. Many have “RVG Edition” or similar in the info at Musicbrainz. BUT, the tracks often match the standard version as the remasters. So Beets will often find a 97% or higher match with the plain version not the RVG. In a prior import session I did every single album with the -t (timid) option and manually searched MBrainz for the proper ID, selected “I” from command prompt and copied/pasted the proper ID to tag them as the RVG edition. So, the album to be imported already has the proper MBrainz MUSICBRAINZ_ALBUMID in place. Based on documents below sounds like I should be able to tell Beets to do a fresh import and use the MUSICBRAINZ_ALBUMID as the “thing” to match on, not look at tracks, artist, medium, etc and incorrectly tag it as the plain version not the RVG remaster. Am I making sense?

From Docs:

  • If you already have a metadata backend ID that matches the items to be imported, you can instruct beets to restrict the search to that ID instead of searching for other candidates by using the --search-id SEARCH_ID option. Multiple IDs can be specified by simply repeating the option several times.

Maybe check the code? I’ll stress I only know what I know - maybe you can bulk match on MBIDs. I thought that’s what “as is” did in the first place (and thought I did something to that effect ages ago, but it probably did query musicbrainz to do it)

“thing” to match on, not look at tracks, artist, medium, etc and incorrectly tag it as the plain version not the RVG remaster. Am I making sense?

Check distance weights and increase everything but MBID?