iTunes 7 Destroys Beats Per Minute (BPM) Data

But only in the Mac version!


Short story: iTunes 7– only the Mac version– is setting my BPM to huge numbers (as high as 65324!) in a seemingly random fashion. If you care about your BPM values, don’t use iTunes 7!!!

Fellow iTunes geeks, read on for the long story.

Ed’s Note The rest of you can go back to your regular duties. Nothing to see here.

I have probably spent over a hundred hours fine-tuning my iTunes music library so that I can enjoy my tunes exactly how I want to. This includes playing by genre, rating, and especially by tempo or “beats per minute” (BPM) as it is called in iTunes.

In order to establish the tempo of all of my songs, I downloaded a program called “MixMeister” to analyze and update all of my MP3s. It kinda worked: the BPMs were reasonably close, but in updating the files, MixMeister also removed any album art that was stored in the ID3 tags for the song. Not cool, but I lived with it.

I downloaded CoverTunes (a program so good, Apple bought it) to get my album art back. I loved this program, and soon my entire library was up to date.

When I upgraded to iTunes 7, I was ticked to find that the integrated CoverFlow functionality ignored my previously set CoverFlow album art. So I turned on the iTunes feature to automatically download album art. It was horribly inaccurate, but better than nothing.

After a couple of days of playing, I noticed something very strange: thousands of my songs has ridiculously incorrect BPM values. They seemed evenly distributed from 300 up to over 65000; that is, there were no ranges of values where large numbers of songs appeared. I was furious. I wondered if maybe iTunes was doing the reverse of MixMeister: setting the album art but destroying the BPMs!

I hunted around the internet and found beaTunes to automate the process of fixing the BPM values. It worked very well, and for the few that didn’t analyze properly, I used iTunes-BPM from Blacktree to manually tap out the tempo (you can do this in beaTunes apparently, too). Finally all 4500+ songs in my library had the correct BPM value, and I could use my smart playlists to listen to songs with similar tempos, depending on my mood.

Wrong. Within minutes, I noticed that when iTunes would switch to some songs, the BPM value would get changed to an enormous arbitrary number. I would literally be looking at the line in iTunes, and as the song became highlighted, the BPM of 85 would change to 32451!

In my home network, I have two PCs and a MacBook. All my music is stored on a shared drive on one of the PCs. My MacBook iTunes library references this location, as do both my PCs. iTunes is never running on more than one machine at a time, so there’s no threat of some kind of write corruption going on (that I can imagine). I wondered if the same thing would happen with the PCs?

I tried skipping through a playlist on the PC with the shared drive. Over the first 25 songs, nothing strange happened. I tried the same thing with the same playlist on the other PC, again no problems. I switched to the MacBook, and at song number 13, boom: the BPM jumped from 121 to 39874. When I went back to the other computers, they now read the BPM as 39874, which makes me think that this error is being written to the ID3 tag, not just the iTunes XML file.

Once I manually change the BPM value, I can play the song on the MacBook without the value jumping. However, seeing as how this strange behaviour seems to be random, and that I had previously used MixMeister, beaTunes, and manual entry to update every single file, I don’t think any of my files are “fixed” or safe.

Could this be caused by the fact that the MacBook is accessing the MP3 files over the network using SMB? This behaviour is a show-stopper!

Just for more info: all my computers are updated to iTunes 7. Does anybody else see weird BPM values? Leave me a comment and let me know!

, , ,

  1. #1 by Hendrik Schreiber - December 6th, 2006 at 10:51

    The TBPM field in ID3 is meant for integers (i.e. no fractions, see section 4.2.3 in http://www.id3.org/id3v2.4.0-frames.txt). Some programs choose to ignore this and instead of properly rounding to the next integer write the fraction as well. So a field that should read 125 now reads 125.34. Many programs can handle this gracefully and still function correctly. iTunes is unfortunately not one of them. In fact, iTunes stumbles really hard and misinterprets something like 125.34 to be an integer way beyond the 10,000s. For those who are interested, http://home.fuse.net/honnert/hundred/UltraID3Lib/offenders/ offers a list of ID3 offenders, specifically the ones that illegally write fractions to the TBPM field. beaTunes (http://www.beatunes.com/) is not one of them, since it uses iTunes for writing the tags.

    The fact that your BPM field changes back to the 10.000’s may be caused by read-only files. Have you verified that you can actually write the ID3 tag to the file, i.e. that you have the proper file permissions?

    And, yes, I am affiliated with beaTunes.

  2. #2 by Mark Walters - December 30th, 2006 at 01:09

    Hello.. I have same problem and it sucks.. i really depend on BPMs for DJing and sorting my songs.

    Pleas let me know if you have found a fix. i will keep searching. Some mentioned that the tags in itunes are source with the field names not matching the software that added the BPMs.

(will not be published)
  1. No trackbacks yet.