MP3Tag is a popular piece of freeware.
Internet databases used are Amazon, FreeDB, Discogs, MusicBrainz
The scripting options allows you to transfer the content of one or more tags to another.
If the Band is populated, don't change it. If empty use the Artist tag
Players like WMP don't support multi volume discs.
MP3Tag offer various options to renumber the tracks.
If you have no numbering at all, look up the album in an online database.
Select all the directories by selecting a top-level one
If needed sort by album title or directory.
Select the Auto numbering Wizard
Now you have a consecutive numbering
Select a single directory and start with a value like 101 for disc 1, 201 for disc 2, etc.
After combining the albums you have them sorted by disc/track.
I have all my classical music organized by work. Therefore, if there is a problem with a track or it is simply missing, it is convenient to know its original track number
Add a disc number to all the tracks. This is the DISCNUMBER track in IDV3.
Choose Convert > Action and define an action, call it DiscSet
Choose Format value as the type of action.
The field the action is applied to is the track
The action is:
$if($less(%track%,100),$add($mul(%discnumber%,100),%track%),%track%)
$mul(%discnumber%,100) - multiply the discnumber by 100
$add($mul(%discnumber%,100),%track%) - add the track number
$if($less(%track%,100),$add($mul(%discnumber%,100),%track%),%track%) do this if the track is below 100 only.
Select all the tracks
Apply the action
Now you combine them in one album you have them ordered by CD and within a CD by track while preserving the original track number.
There are a lot of different tags, some of them even take classical music in to account.
But no tag for the opus.
WMP has a tag called SubTitle, let’s use this for the opus.
Next question: how to avoid manual typing the opus in each movement?
Open the songs in MP3Tag:
All my classical music is organized by composition.
All compositions are labeled the same way: Composer – Work – Performer
Each work has the opus number at the end.
This is the script:
$if(%subtitle%,%subtitle%,$mid(%album%,$strstr($lower(%album%),' op.'),$sub($strrchr(%album%,'-'),$strstr($lower(%album%),' op.'))))
If the subtitle is already there, don't touch it
$if(x,y,z) if x is true, y is returned, otherwise z.
X=%subtitle%
Y=%subtitle%
Z=$mid(%album%,$strstr($lower(%album%),' op.'),$sub($strrchr(%album%,'-'),$strstr($lower(%album%),' op.')))
I want to extract the opus from the album title so I need to find out where it starts and how long the text is.
$mid(x,n,i) First i characters of text x, starting at character n. If i is ommited, the nth character is returned.
$mid(%album%,$strstr($lower(%album%),' op.'),$sub($strrchr(%album%,'-'),$strstr($lower(%album%),' op.')))
n=$strstr($lower(%album%),' op.')
$strstr(x,y) Finds the first occurrence of string y in string x.
x=$lower(%album%) Opus is spelled as Op. and as op., convert to lower case
y =’ op.’ the text to look for
i=$sub($strrchr(%album%,'-'),$strstr($lower(%album%),' op.'))
I need to know the length so I have to subtract the start position form the end position
$sub(x,y) subtracts y from x.
X=$strrchr(%album%,'-')
$strrchr(x,y) Finds the last occurrence of character y in string x.
Y=$strstr($lower(%album%),' op.')
This is explained above, find the place where the opus starts.
I combined several actions.
In case of Beethoven you have Op. (Opus), Woo (Werke ohne Opus Nummer), Hess, etc.
In case of Schubert it is D. (Deutsch), Mozart is KV (Köchel-Verzeichnis), etc.
I also had some where the opus is not in the album but in the title of the movement (%title%).
It is a bit of a job to build this script but once you know the trick, you can easily adapt it.