I just diagnosed some problems someone had using the »Mixmeister BPM Analyzer« and found that it always stores the ID3v2.3 TBPM tag in UTF-16 format—even in a file that otherwise uses ISO-8859-1. Sadly enough, if the TPBM tag is nonexistant, Mixmeister will rewrite ALL tags as UTF-16. (If TBPM was there before, only TPBM will be re-saved using UTF-16, all other tags will be left as they are, resulting in a mixed ISO/UTF tagged file.)
This can be quite some hassle on larger collections using ISO tags—after spending days for Mixmeister to calculate all BPM values, you’d have to rewrite the whole collection back to ISO-8859-1 using MP3Tag (which, in turn, will also take some days).
Since ideally one should have only ONE kind of encoding in any one file (or the whole collection, at best), I now used MP3Tag to »detect« if files were corrupt. I set up two extra columns containing %_tag% and %_id3v2_character_encoding% to do that.
It turns out that for any given file that had ID3v2.3 ISO-8859-1 encoding before and got the TPBM tag updated using Mixmeister BPM Analyzer the %_id3v2_character_encoding% still shows ISO-8859-1. Since, in ID3v2, all Text Frames have an encoding flag, I assume that MP3Tag just detects the encoding from the first text frame found, not by checking ALL text frames.
For diagnosing problems with mixed character encoding, I’d very much like if there were some means of detecting that. Maybe just some flag that states »mixed encoding« or the like, just to be able to check for which files the tags should be re-saved using MP3Tag (which it does beautifully).
Any chance, Florian?
In the meantime, for all of us using Mixmeister BPM Analyzer AND ID3v2 ISO-8859-1 tags, here's the recommended procedure:
- Use Mixmeister BPM Analyzer to calculate and save the BPM.
- Open all changed files in MP3Tag, have it set to write ID3v2 with ISO-8859-1 encoding, and re-save all tags (mark all using Ctrl-A, right-click the selection and select »Save Tag« (or press the diskette button in the toolbar).
- Re-read the tags into any applications that have their own »media libraries«, i.e. cache the data. (Windows Media Player, newer Winamp versions, SAM, MusicIP Mixer, etc.)
- Be aware that we knowingly violate the standard: TBPM is supposed to hold a numeric integer value but BPM Analyzer (and other tools) write a xxx.xx float value into this field! (Then again, as any good DJ will tell you, we need about .05 BPM precision to make real good mixes …)