ID3 tags and their relationship to fields

Well, I’ve been trying to figure this out but I can’t find anything in the docs nor here.

I’ve just started using beets. I imported my library of, uh, 93K files via the copy: no write: no technique. I wanted beets to know where it’s at now before I think about using it to move files or manage tags. Now I’ve traditionally done all of my tagging with the foobar Discogs tagger. (I’m aware beets won’t let me default the Discogs tagger over musicbrainz :woman_facepalming: but I disabled MB via hosts file so we’ll try that.) I’ve always used a custom ID3 tag within foobar that puts the Discogs release ID into a tag called DISCOGS_RELEASE_ID. I’d like beets to add this info to its library and then to write that in the future when I use its Discogs tagger.

As I understand it, I would need to add DISCOGS_RELEASE_ID to the fields via the modify command for beets to know of this field and write to it: is this correct?

What I am ultimately unclear on is if there is a 1:1 relationship between fields and appropriate ID3 tags. If I create a new field, will beets write that to an ID3 tag of the same name? I like having all the metadata in the files and not just in the directory.

Thanks very much!

There is a roughly 1:1 relationship, but only for built-in fields. Other ones are called “flexible attributes” and don’t necessarily correspond to ID3 tags. To do that, you’ll need to define a tag mapping as discussed elsewhere:

I have to…write…a plugin? Well, this project just ground to a halt. :expressionless:

If you want custom fields just create the flexible attributes as you have described. Then from beets you can search and organize your music directory structure by those tags if you want. That way out of beets you can still navigate your files using the metadata you added.

If that’s not what you are looking for, perhaps you should know you can create smart playlists via beet queries and that way you will have collections of playlists divided by whatever metadata values you want.

And lastly, if you want to be able to see DISCOGS_RELEASE_ID outside of beets and away from a directory structure, you can tell beets to include DISCOGS_RELEASE_ID in the filename or in the comments section of the file. It has to be one of the recognized metadata fields so VLC, mp3 players, phone apps, etc are already programmed to access and show those fields.

Like Darude - Sandstorm [132128].mp3 where 132128 is the Discogs ID. That and the directory structure solution can be found in the docs here Configuration — beets 1.4.9 documentation