I've discovered three bugs in MediaMonkey's wave file tagging, specifically related to files originally tagged with MusicMatch Jukebox or GoldWave.
The examples listed below are in this ZIP file:
WavTags.zip (217K)
1) When changing tags on wave files that were originally tagged with MMJB, MediaMonkey will append new tags to the end of the file without erasing/updating the old ones.
Steps to reproduce:
1) Drag a MMJB-tagged wave file to the MediaMonkey playlist (do not add it to the library). WavTag1.wav (from the ZIP file) is a good example. MM will read the nonstandard MMJB ID3 tags from the file.
2) Edit the tags for the wave file through Properties. Click OK to save the tags. WavTag2.wav was created during this step.
3) Delete the file from the playlist, then re-add it. This will remove the database entry for the wave file, forcing MM to re-scan the tags. Note that the tags MM displays are the ones from the original MMJB file; the changes you made are not visible.
4) Edit the tags for the wave file again through Properties. WavTag3.wav was created during this step.
5) Delete and re-add the file in the playlist. Notice that the displayed tags are still the ones from the MMJB file.
If you edit the wave file (WavTag3.wav) in a hex editor, you'll see that your previously added tags are still there, but appended to the end of the file. A new LIST INFO block is appended to the wave file every time you edit tags.
This leads into the second problem:
2) MM stops reading tags after it reaches its first tag block.
Whether the tag block is an MMJB ID3 block, or an MM-created LIST block, once MM reads it, it ignores any further data blocks. Since MM doesn't delete the original ID3 block during editing, this guarantees that changes made to the wave file are never visible when the file is rescanned. (WavTag3.wav is a good example of this -- it has three blocks of tag data, but only the MMJB tag info will ever show up.)
MediaMonkey should keep reading to the end of the file, using the latest tags from each block, until it hits the end of the file. Not only will this ensure that MM tags override MMJB tags, but it will also "fix" the bug mentioned above, allowing you to see the last tags you entered, even if you have a corrupted file.
3) MM isn't tolerant of non UTF-8 ASCII tags in wave files tagged by other players.
When MM reads a non UTF-8 ASCII tag with characters outside the normal [1-127] range, it ignores the tag, treating it as an empty string. In the ASCIITag.wav example, the artist is "Änglagård" and the song title is "Höstsejd / Rösten", both of which are valid ASCII strings but not UTF-8 strings. The artist and title will show up blank when the track is displayed in MM.
Some tag editors, including GoldWave, encode tags in wave files as pure ASCII strings. MM should be more tolerant of these strings; if a tag can't be decoded as UTF-8, it should be rescanned as ASCII. That would improve compatibility with music files created by other applications.
Any questions, let me know...
(To answer your first question before you ask it... yes, I am crazy.
--- Scott


