2009-12-01, 22:35
Like many XBMC users, I have a large music library. Recently I've been working on fixing up & standardizing the tags and stuff so that everything is "nice". I had been using a combination of tools, but in the past couple of days I figured out how to automate & streamline as much as possible so that Picard now does that bulk of the work automagically. Picard itself is an open source multi-platform tagging & naming tool. It's integrated tightly with the MusicBrainz database.
MusicBrainz is an open source music database which has been around for years. They allow for Wiki-style editing of pretty much an information stored in their database, and have APIs which allow all sorts of programs to talk to & use their information. They've become one of the best and most standard sources of music info. Some of the features:
-Version 0.12 of Picard can now generate Music IP "PUID" numbers for each track. These are basically a fairly unique string of numbers of letters generated based on the acoustic properties of a given track. In theory if you have two rips of a track in different formats, as long as they were from the same master CD, they will have the same PUID number. These ID numbers are stored in the MusicBrainz database and can be searched for, so Picard can actually identify a track even if it has no tags and the filenames are wrong, based simply on how the track sounds.
-Each "Release" (CD, Vinyl, Digital Release, etc) and each track is given its own unique MusicBrainz ID#. There are a variety of interesting ways that these can be used, and they've been adopted by other systems (like Last.fm). This also makes it fairly easy to re-tag or update the tags on stuff.
-On popular releases, there's usually tons of extra info, like the record label, ASIN #, Amazon URL, song writer credits, etc. This is the main reason I use it.
Picard checks the tracks you give it for all tagged info, plus song length, plus it tries to extract info from the file name. Then it tries to match the files you have given against the Musicbrainz database. It color-codes the results so you can tell how confident it is that the matches are correct, and also if it has found all the tracks from a particular release. You can preview what will be saved and make changes before saving the tags. Picard is also extensible via Python plugins (sound familiar?). These allow the tag info from MusicBrainz to be processed and formatted in a variety of ways. People have also written plugins to get info from Last.fm and other places.
My Settings & Changes
-First, turn on "Automatically scan all new files" in Options > General. This will immediately "scan" the files you give to Picard and begin attempting to get data for them. Speeds things up for me and saves a click.
-Options>Metadata: Enable "Translate foreign names to English where possible".
-Options>Tags: I set Tag Compatiblity to ID3v2.3 UTF-16. This is mainly to ensure all my stuff will work properly on my iPod Touch, which has some issues with ID3v2.4.
-I have turned on the file renaming and moving options.
--I have "folder.jpg, album.nfo" in my "move additional files" option.
--my Filenaming format strings look like this:
Standard Artist:
Various Artists:
Lots of scary looking code in there, I know. Picard has its own scripting language, which can be used to process your filenames. These strings result in the following filenames:
-A folder is generated per-artist using the Album Artist tag for the album. If that tag begins with "The ", then that string is removed and stuck on the end. This means "The Beatles" will get a folder named "Beatles, The". This just makes it easier to browse the library root from a regular folder browser.
-There is one folder generated for each album. The format is <Album Artist>-<Year>-<Album Title>. Leading "The "'s are NOT processed at this level and are left alone. Example: The Beatles-1963-Please Please Me.
--Multiple-Disc releases are handled as well. The Disc Number is found in the album title and removed, then inserted into the folder name.
Example: The Beatles-1968-The White Album-CD 1
--In this example, the actual Album Title tag for these files will simply read "The White Album", keeping the Albums list clean, but still allowing for intuitive browsing, like when you want to grab only the first CD and stick it on an MP3 player...
-Track titles are simple: 01-Back In The USSR.mp3
For Various Artists / Compilations, I handle things pretty simply. I still generate an "Artist Level" folder, its just named VA. This keeps the filepath short and puts all the comps together in one folder. Each compilation gets its own per-CD folder, <Album Title>-<Year>. Example: Afro Samurai Resurrection Soundtrack-2009
-Multiple discs are handled exactly the same as above, with "-CD #" appended to the end of the album title. Example: 8 Mile Soundtrack-CD 2-2002
I find this layout makes it easiest to browse for stuff at the folder level. I was using the same formatting as my standard folders, but that results in stuff like "Various Artists-2002-8 Mile Soundtrack-CD 2", which is very hard to browse through and is also a much longer filepath for no good reason.
The various artists tracks simply have the track artist inserted before the track title, like this: "03-50 Cent-'Till I Collapse Freestyle.mp3"
Plugins
I wrote a new plugin for Picard because I hate the way "Featured Artists" are handled in MusicBrainz. My plugin searches the track titles for the phrase "Feat. " and if its found, it wraps that stuff up in parentheses and replaces "Feat. " with "Featuring ". I also tweaked the Disc # plugin to be case insensitive, since some releases in MusicBrainz are tagged as "Disc" and some "disc". In addition to these tweaks, I also use the Title Case plugin to capitalize the words the way I like them.
The result of all this stuff is a tagging / renaming workflow that looks like this:
-Drag & drop the files to be processed into the Picard window.
-Picard automatically starts scanning them and generating fingerprints as well.
-the tracks are automatically matched to their results.
-When the entire album is matched, I click "Save".
-The tracks are now tagged and named properly in a way that XBMC (and any other media player) should be happy with.
Note: I still use some other tools to handle my album art, lyrics tags, and random tag cleanup. However, Picard is pretty damned good.
Links:
-Tweaked Disc # Plugin
-My Featured Artist 2 Plugin
-Picard Tagger
Does anyone else use Picard? Input? Questions?
MusicBrainz is an open source music database which has been around for years. They allow for Wiki-style editing of pretty much an information stored in their database, and have APIs which allow all sorts of programs to talk to & use their information. They've become one of the best and most standard sources of music info. Some of the features:
-Version 0.12 of Picard can now generate Music IP "PUID" numbers for each track. These are basically a fairly unique string of numbers of letters generated based on the acoustic properties of a given track. In theory if you have two rips of a track in different formats, as long as they were from the same master CD, they will have the same PUID number. These ID numbers are stored in the MusicBrainz database and can be searched for, so Picard can actually identify a track even if it has no tags and the filenames are wrong, based simply on how the track sounds.
-Each "Release" (CD, Vinyl, Digital Release, etc) and each track is given its own unique MusicBrainz ID#. There are a variety of interesting ways that these can be used, and they've been adopted by other systems (like Last.fm). This also makes it fairly easy to re-tag or update the tags on stuff.
-On popular releases, there's usually tons of extra info, like the record label, ASIN #, Amazon URL, song writer credits, etc. This is the main reason I use it.
Picard checks the tracks you give it for all tagged info, plus song length, plus it tries to extract info from the file name. Then it tries to match the files you have given against the Musicbrainz database. It color-codes the results so you can tell how confident it is that the matches are correct, and also if it has found all the tracks from a particular release. You can preview what will be saved and make changes before saving the tags. Picard is also extensible via Python plugins (sound familiar?). These allow the tag info from MusicBrainz to be processed and formatted in a variety of ways. People have also written plugins to get info from Last.fm and other places.
My Settings & Changes
-First, turn on "Automatically scan all new files" in Options > General. This will immediately "scan" the files you give to Picard and begin attempting to get data for them. Speeds things up for me and saves a click.
-Options>Metadata: Enable "Translate foreign names to English where possible".
-Options>Tags: I set Tag Compatiblity to ID3v2.3 UTF-16. This is mainly to ensure all my stuff will work properly on my iPod Touch, which has some issues with ID3v2.4.
-I have turned on the file renaming and moving options.
--I have "folder.jpg, album.nfo" in my "move additional files" option.
--my Filenaming format strings look like this:
Standard Artist:
Code:
$replace($if($eq($left(%albumartist%,4),The ),%albumartistsort%,%albumartist%)/%albumartist%-$left(%date%,4)-%album%$if(%discnumber%,-CD %discnumber%,)/$num(%tracknumber%,2)-%title%,:,)
Code:
$replace(VA/%album%-$left(%date%,4)$if(%discnumber%,-CD %discnumber%,)/$num(%tracknumber%,2)-%artist%-%title%,:,)
Lots of scary looking code in there, I know. Picard has its own scripting language, which can be used to process your filenames. These strings result in the following filenames:
-A folder is generated per-artist using the Album Artist tag for the album. If that tag begins with "The ", then that string is removed and stuck on the end. This means "The Beatles" will get a folder named "Beatles, The". This just makes it easier to browse the library root from a regular folder browser.
-There is one folder generated for each album. The format is <Album Artist>-<Year>-<Album Title>. Leading "The "'s are NOT processed at this level and are left alone. Example: The Beatles-1963-Please Please Me.
--Multiple-Disc releases are handled as well. The Disc Number is found in the album title and removed, then inserted into the folder name.
Example: The Beatles-1968-The White Album-CD 1
--In this example, the actual Album Title tag for these files will simply read "The White Album", keeping the Albums list clean, but still allowing for intuitive browsing, like when you want to grab only the first CD and stick it on an MP3 player...
-Track titles are simple: 01-Back In The USSR.mp3
For Various Artists / Compilations, I handle things pretty simply. I still generate an "Artist Level" folder, its just named VA. This keeps the filepath short and puts all the comps together in one folder. Each compilation gets its own per-CD folder, <Album Title>-<Year>. Example: Afro Samurai Resurrection Soundtrack-2009
-Multiple discs are handled exactly the same as above, with "-CD #" appended to the end of the album title. Example: 8 Mile Soundtrack-CD 2-2002
I find this layout makes it easiest to browse for stuff at the folder level. I was using the same formatting as my standard folders, but that results in stuff like "Various Artists-2002-8 Mile Soundtrack-CD 2", which is very hard to browse through and is also a much longer filepath for no good reason.
The various artists tracks simply have the track artist inserted before the track title, like this: "03-50 Cent-'Till I Collapse Freestyle.mp3"
Plugins
I wrote a new plugin for Picard because I hate the way "Featured Artists" are handled in MusicBrainz. My plugin searches the track titles for the phrase "Feat. " and if its found, it wraps that stuff up in parentheses and replaces "Feat. " with "Featuring ". I also tweaked the Disc # plugin to be case insensitive, since some releases in MusicBrainz are tagged as "Disc" and some "disc". In addition to these tweaks, I also use the Title Case plugin to capitalize the words the way I like them.
The result of all this stuff is a tagging / renaming workflow that looks like this:
-Drag & drop the files to be processed into the Picard window.
-Picard automatically starts scanning them and generating fingerprints as well.
-the tracks are automatically matched to their results.
-When the entire album is matched, I click "Save".
-The tracks are now tagged and named properly in a way that XBMC (and any other media player) should be happy with.
Note: I still use some other tools to handle my album art, lyrics tags, and random tag cleanup. However, Picard is pretty damned good.
Links:
-Tweaked Disc # Plugin
-My Featured Artist 2 Plugin
-Picard Tagger
Does anyone else use Picard? Input? Questions?