Author Topic: How to automate song title capitalization  (Read 6639 times)

redwing

  • Guest
One of the routine tasks with a digital music collection is keeping proper cases for song titles and album names. MB is equipped with "Capitalise" command (Tools> Tagging Tools), but it can only capitalize first word of a given string. If you install Additional Tagging Tools plugin, then you can use "Change case" command that allows you to perform almost every kind of task in handling cases. Now this task can be automated with MB thanks to a recently released Advanced Search and Replace (ASR) preset.

What You Need

- Install the latest version of Additional Tagging Tools plugin (http://getmusicbee.com/forum/index.php?topic=3833.0) and enable it in plugin settings
- Update MB to the latest version (first topic on the forum)

Understanding How the Preset Works

1. Go to Tools> Tagging Tools> Advanced Search and Replace.
2. Import all presets and find "TOY: 'Change case' command - Title Case" preset.
3. You can either use the preset as is or modify its settings as you like. What it does is basically, when applied to a track, it capitalizes first word, last word, and all other words except those words listed in <Custom Text 1> box. Thus a title of "you are the sunshine of my life" will be converted to "You Are the Sunshine of My Life", and "god put a smile upon your face" will be changed to "God Put a Smile upon Your Face" if the exception word setting contains such words as "a", "of", "the" and "upon" in the list.
4. If you want to apply the preset not only to Title field but Album field as well, then use the following setup by duplicating settings for <Tag 1> to <Tag 2>.





5. If you tick the box in front of the preset name, the preset will be auto-applied to all tracks in your library. If you want to auto-apply it to a certain subset of your library, you could filter it through a playlist using the filtering setting on the preset dialog. We will discuss it later in more details.





What Exception Words to Use?

As you now understand how the preset works, the key task in configuring this preset is to decide what exception words to include in the list. For doing this properly, you need some knowledge on title case in general and song title case in specific. There's no absolutely agreed upon rules about this, and many part should be determined by personal choices. The following guides could be helpful for learning the rules:

MusicBrainz Style Guide (http://musicbrainz.org/doc/Style/Language/English)
Wikipedia Style Guide (http://en.wikipedia.org/wiki/MOS:CT#Composition_titles)

Here's my personal choice of 25 words: a an and as at but by feat for from in into mid nor of off on onto or over per the to via with

Among short-letter prepositions, "out" and "up" are intentionally omitted because they are used more often as adverb than as preposition as MusicBrainz style guide suggests. "upon" is also omitted from the list since it's more often used as a part of mostly capitalized idiomatic phrase "Once Upon" than as preposition.

How to Handle Exception Tracks?

As always there are exceptions to general rules, and title case rules are not an exception to this. For instance, when a preposition is used as part of phrasal verb, it should be capitalized as in "Wake Up" and "Move On". Also because my exception word list intentionally omits "upon" I need to take care of titles where "upon" is used as preposition. For some songs and albums, you might want to stick to the artist's intentional unconventional use of capitalization. To handle these exceptions systematically, you need to create a static playlist that will contain all exception tracks in it.

For instance, I created "Case (Auto)" auto-playlist and "Case (Manual)" static playlist. You can define rules for the auto-playlist however you like but be sure to include a rule <"playlist" "is not" "Case (Manual)">. Now make the auto-applied preset filtered to "Case (Auto)" auto-playlist. Then whenever you notice a track, the title of which needs to be handled manually, add it to the "Case (Manual)" playlist. Why? As you may already know, once the preset is auto-applied, you cannot edit tracks' title case in a different way from the preset rules as long as those tracks belong to the filtering auto-playlist.

Recommended Workflow

Now let's sum up.

1. Create a static playlist named "Case (Manual)".
2. Create an auto-playlist named "Case (Auto)" and define rules to include all tracks you want to automate song title capitalization. Be sure to add a rule <"playlist" "is not" "Case (Manual)"> when defining the auto-playlist.
3. Go to Tools> Tagging Tools> Advanced Search and Replace. Import all presets and find "TOY: 'Change case' command - Title Case" preset.
4. If you want to use it as is, then you could (1) apply it manually to selected tracks, or (2) auto-apply it to all tracks, or (3) auto-apply it filtering through a playlist.
5. If you want to modify it, click on Copy and edit the setting as you wish. (the following part is now fixed Note that you cannot use keys assigned to MB hotkeys when working on the plugin's dialog. Use right-click mouse menu instead when you need to copy and paste a string to modify the preset setting.)
6.  Auto-applying a preset does not automatically change titles of existing tracks. You need to apply it to existing tracks manually first. To do this, open "Case (Auto)" playlist, select all tracks, select the preset, click on Preview, and then Apply. Now make it auto-applied filtering through the "Case (Auto)" auto-playlist.
7. Now whenever you spot a track with "wrong" capitalization (as a result of the defined preset rules), add it to "Case (Manual)" playlist and edit its title manually. Then check the playlist once in a while to make sure those tracks have correct cases.

Feel free to add and share any tips you found out regarding this feature.
Last Edit: April 12, 2014, 01:00:08 PM by redwing

redwing

  • Guest
This preset now converts acronyms such as "U.F.O." and "L.A. Woman" to uppercase when a single letter comes before a period. But the caveat is that you now have to omit a period for exception words (like "feat" for "feat.") and if that word needs to be capitalized in title, handle those as exception tracks.

redwing

  • Guest
Adding Exception Word List

As multiple search & replace function was recently implemented, now it's possible to search and replace multiple words in the given string in one step. So you can handle exception words with particular case after case conversion is done.
For instance, title case conversion change all Roman numerals to title case like Iii and Vii instead of III and VII. Also DJ becomes Dj, USA changes to Usa.

To handle such exceptions, add an additional step to the preset.
Add the following code to Step 4.

search for
Code
^(.*)
replace with
Code
\@replace[[$1;;\@2]]

And add the multiple search and replace word list to <Custom text 2> box and tick the box.
To handle Roman numerals, DJ, and USA case:

Code
iv/IV|vi/VI|xi/XI|ix/IX|xv/XV|xx/XX|xxx/XXX|ii/II|iii/III|dj/DJ|usa/USA
Of course, you can add/modify any words in the list.
Last Edit: September 11, 2018, 01:54:22 AM by redwing