First of all let me say that I don't know how I can begin to thank you guys for this wonderful free program. There is no other application out there that would allow me to tag and write filenames nearly as fast and as automated as this program. Being able to write scripts that check against invalid charachters as well as check to see if a year exists and what not are simply amazing. Short of sitting down and writing something similar in perl I don't know how I would begin to automate such tasks.
I've managed to tag over 7000 songs in a relatively short period of time. I don't know if I am the typical user, but all of my music is sitting on a linux samba share with multple hardrives. This means that I have been editing thousands of tags over ethernet. Typically I like to get the basics sorted out first. I usually start out with static tags and set the album, year, artist and I make sure the comments are blank because comments are pretty useless to me. Then I get the titles from the file names and I tend to throw all the useless crap in the filename into comments, which now need to be blanked again. If I do a freedb query, a lot of times I have to set the year and get rid of the useless comments. As you can see, every step requires a long slow write to the filesystem. Even with local files this waiting can slow you down.
Here is what I propose. Why not simply cache all of your tags until the user is finally done making changes to them and then execute a write incorporating all of those changes to the files? People would be able to tag their files probably at least 2-3x faster than they would be the way it is now. No more of this "set year".......wait.....check....wait...."set song titles"......wait......check.....wait.....
Sometimes it takes 10-15 minutes of waiting just to get the tags arranged how I would like them to be. Unless someone has a faster way of going about these things I find it kind of annoying the way it is for me. I mean, would it be that hard to code in an array and store all of the tag information there until you write it out? It would seriously make your program a whole lot better. The pieces are all there. Instead of immediately committing the changes to the files, just cache them until the user can say, write out the cache. Just record the tag fields that are to be changed (can't be more than like 5-10 or so) and then commit them to the files in one big swoop. Even the ability to define the tags in a text file (like someone said earlier) would be a good move towards writing the files out just once.
Granted now, I do run this program on a lot of blank oggs that I have converted from FLAC. And these files take a WHOLE lot longer to tag than MP3. I don't know if it is because the tags are all blank when I start or what. The MP3s definately write pretty fast for the most part. I use highbitrates with my oggs, so an album is roughly 150 megs or so. That's a lot of data to parse over ethernet repeatedly and my bandwith from the samba share isn't all that great. (Are network disks ever fast?)
Anyways, I do indeed love your program. I just thought I had to share my only real problem that I've had so far with it.