Note that the BPM value is stored in the iTunes database, not in ID3 tags in the individual songs. I was surprised by this; I rather expected iTunes to offload as much information as possible onto the actual files. And probably that would be the best option to avoid end up slaves to iTunes' database. On the other hand, storing metadata aside saves us from absurdly bulky TimeMachine backups...
The thing is that there is a number of players and apps which calculate the BPM on the very iPhone, but every one I tried had trouble getting the right BPM values, and tended to get double, half or even absurd numbers. And of course on the iPhone you'll be wasting battery and time doing it, even more so when the songs might have already been properly tagged in iTunes! So I prefer making a better analysis on the desktop (with beaTunes for example, which is great even if sometimes a bit clumsy) and then only reading the already existing values while on the go.
Also, it's somewhat easier to show the data of an already-playing song - there is an app just for that, Song Data. But I wanted to be able to browse my playlists by BPM.
And the only apps I have found that allow me to do this are djay 2 by Algoriddim and Anytune by Anystone. djay 2 is paid. Anytune has a free version - and the pro options look amazing.
Other apps that are NOT good for this:
- Traktor DJ: Analyses BPM, gets absurd values randomly, somehow seems to use a lot of battery doing I-don't-know-what, even when I got out of the app. It stopped doing that later, so maybe it was still analysing? No way to know. In general, after a quick visit to the Traktor forums, looks like metadata sync (through Dropbox, with other Traktor software, against iTunes, whatever) is a painful subject.
- DJ Player and DJ Player Pro: Analyses BPM, gets x2 values in songs with BPM<100 but="" li="" maybe="" nbsp="" ok="" rest="" seem="" the=""> 100>
- Splyce: Analyses BPM, gets absurd values randomly. Absurdly complicated; it's interesting how it's easier to use the "full-DJ" apps than this player which I guess simply tries too hard to be stylish.