One problem I had was I wanted beets to keep the duplicate check logic, but only within a given format family. In the end, I found I had to use multiple beets libraries to accomplish what I wanted. It’s not super difficult, I just added the following aliases to my .bashrc:
alias fbeet='beet -l ~/.config/beets/flac.blb'
alias mbeet='beet -l ~/.config/beets/mp3.blb'
As for keeping everything organized, here’s my path configuration:
paths:
# Albums/A/ASCI Artist Name, The/[YEAR] ASCI Album Name, The [EP]/01 - Track Name.mp3
default: '$format/Albums/%bucket{%upper{%left{%the{$albumartist},1}}}/%the{$albumartist}/[%if{$original_year,$original_year,0000}] $album %aunique{albumartist album year, albumtype label catalognum albumdisambig}/%if{$multidisc,$disc-}$track - $title'
# Singles/ASCII Artist Name, The - Track Name.mp3
singleton: '$format/Singles/%%the{$artist} - $title'
# Compilations/[YEAR] ASCI Compilation Name, The/01-01 - Track Name.mp3
comp: '$format/Compilations/[%if{$original_year,$original_year,0000}] %the{$album%if{%aunique, %aunique{albumartist album year, albumtype label catalognum albumdisambig}}}/%if{$multidisc,$disc-}$track - $title'
# Sountracks/[YEAR] ASCI Soundtrack Name, The/01 - Track Name.mp3
albumtype:soundtrack: '$format/Soundtracks/[%if{$original_year,$original_year,0000}] %the{$album%if{%aunique, %aunique{albumartist album year, albumtype label catalognum albumdisambig}}}/%if{$multidisc,$disk-}$track - $title'
# Artifacts
ext:cue: '$albumpath/$album'
ext:CUE: '$albumpath/$album'
ext:log: '$albumpath/$album'
ext:LOG: '$albumpath/$album'
ext:m3u: '$albumpath/$album'
ext:m3u8: '$albumpath/$album'
ext:pls: '$albumpath/$album'
ext:nfo: '$albumpath/$album'
ext:sfv: '$albumpath/$album'
ext:ffp: '$albumpath/$album'
ext:accurip: '$albumpath/$album'
# Inline plugin multidisc template
item_fields:
multidisc: 1 if disctotal > 1 else 0
There’s a lot happening there, but if you focus on the default path we can break down how I used the format and disambiguation:
# Albums/A/ASCI Artist Name, The/[YEAR] ASCI Album Name, The [EP]/01 - Track Name.mp3
default: '$format/Albums/%bucket{%upper{%left{%the{$albumartist},1}}}/%the{$albumartist}/[%if{$original_year,$original_year,0000}] $album %aunique{albumartist album year, albumtype label catalognum albumdisambig}/%if{$multidisc,$disc-}$track - $title'
Right away I split the path based on the $format. I only care about MP3 vs FLAC, so this is good enough. If you want to identify bitrates, you may need the inline plugin solution described by @adrian and then you can reference that. There’s some stuff album type and the bucket plugin, and then I put the year before the album, so that artist directories are sorted chronologically based on original release date. Finally, there’s the album name, and a disambiguation field if it’s a duplicate - you can see that I specify the order of fields to use for disambiguation. Finally, I use my own item level inline, multidisc, to keep multi-disk albums sorted corrected within a single folder.
You could move the $format to somewhere else in the path if you wanted different formats to be in the same parent folder. As long as it’s in the folder path somewhere the two beets libraries shouldn’t conflict. If the format is in the filename though, the other file types (nfo, cue, log, etc) might clobber each other.