Wow, good post. Thanks for the detailed explanation, Mark. Unfortunately, I named my files {Artist} / {Album} / {Tracknr}-{Title}.mp3 which means I don't have Genre and Year in the structure. Genre and Year are also the most mangled of my tags. I really like how you've handled the punctuation problem. That would also involve renaming files in my case. I also used underbar substitution for spaces, thinking that would be a good idea on the linux server. It's not necessary, but that is easily fixed with a shell script, too.

Unless someone has a better idea, my current thinking is to create a tag.txt file in each subdirectory that contains year & genre. Then I can write a shell script to rename everything based upon data it finds in this tag.txt file and the existing file name. If a tag.txt doesn't exist in an Album subdirectory, it inherits from the directory above. That way I can have a single tag.txt at the Artist level which contains the Genre information. I need to work out those details... Once everything is renamed, I can use MP3TagStudio to retag based upon the filename and delete the tag.txt files. I suppose I could also retag with Perl, as there are supposedly tagging libraries for Perl. I'm not very good with Perl yet, though.

I still haven't decided what to do about multi-artist compilations... Storing them in a "Various Artists" directory but tagging them with the performing artist makes sense except for what it does to the soup. The tag structure is also not adequate for classical music, where ideally one would have both composer and performing artist fields.