I am looking into MP3Tag as an alternative to other software I've been using for a while now, but am looking to a more efficient MP3 tagger. I'm enquiring about two things in particular:
When I use the Filename > Tag feature to tag the MP3 files based on the folder they're in and their filename, does MP3Tag leave the file alone (doesn't write to it) if it detects no differences between the tag and the folder/filename (based on the format string)? The other software I used apparently wrote to the MP3 file regardless, slowing things down. Testing MP3Tag so far, I've found it lightning fast when the filenames are equal to the tags, so I'm guessing it leaves it alone.
If I check the box to "preserve modification time", will that cause extra writes to the hard drive/flash drive, or prevent them?
This is extremely easy to test. If the Modified Time changes then you'll know that the the file was changed. If it doesn't, then it was not.
Neither. It doesn't affect whether or not the file is changed by some action in Mp3tag. What it does is copy the old Modified Time (so it 'preserves' the old time). I believe this is an extra step, but since the file itself isn't modified in any way by changing the mod time, it's an extremely fast procedure.
Speed should really only be a concern when modifying a large number of files. What make modifying files slow is when the whole file must be rewritten, rather than just a portion of it. Generally speaking, the file will be fully rewritten when Mp3tag must allocate more space in the existing tag. Very often, you'll have unused space in your tag into which some extra fields or data can be written without the need to rewrite the whole file. When you add a lot of new fields or data, it might cause the file to be rewritten. Adding artwork, in particular, will cause most files to be rewritten.
I'm using ID3v2.3 (ISO-8859-1) tags ONLY when it comes to my MP3s, but I've noticed that the total size of all the MP3s remains the same however I retag them. This was true of the old tagging software I used as well (TagScanner).
Are the fields in this format all fixed-length? And where do they occur in the file, at the start or end?
Most encoders add "padding" to mp3 files so that any subsequent edits/changes to the tags don't require the entire file to be rewritten. So in your case, the size hasn't changed because there was enough padding in the file already to handle your tag edits.
In addition to what Gary said, no, the fields are not fixed in length. I'm not sure whether it's part of the spec, but all of the files that I've examined have the ID3v2.3 tag at the beginning of the file.
"It is permitted to include padding after all the final frame (at the end of the ID3 tag), making the size of all the frames together smaller than the size given in the head of the tag. A possible purpose of this padding is to allow for adding a few additional frames or enlarge existing frames within the tag without having to rewrite the entire file. The value of the padding bytes must be $00."
And if you use the LAME MP3 encoder you can control the amount of padding added to files at the time that they're encoded. From the LAME documentation:
--pad-id3v2 same as '--pad-id3v2-size 128'
--pad-id3v2-size <value> adds version 2 tag, pad with extra <value> bytes
I think the default is 128 bytes of padding when you add an ID3v2 tag. It might be worthwhile using this option to add additional padding if you anticipate adding a lot of extra metadata later, such as lyrics. It will increase the file size slightly, but it would make modifying those files faster by avoiding having to rewrite them to expand the ID3v2 tag.