For some activities such as running it is important to know how many BPM a song has. I know that Banshee can do this but I couldn't figure out how to do this for a selected range of songs.
Which tool can I use to detect the BPM and immediately tag this in the ID3 fiels of the corresponding files?
bpm-tools are command-line tools for detecting and tagging BPM.
Here's the man page of the package in Ubuntu 14.04 LTS.
You could use a loop or
xargs
in a shell script to run this on a library of songs.There is a thread (Any beat detection software for Linux?) on SuperUser dealing with the same problem.
It uses a combination of commands (
bpmcount
,mid3v2
,vorbiscomment
,metaflac
) compiled into a neat shell script.Mixxx has a built-in analyser that will let you select a bunch of songs from your library to analyse their BPM.
I recommend using the latest version of Mixxx (1.11 at the time of writing) to make sure you get the most reliable analysis (it has been enhanced recently). You can use their PPA to always have the latest stable version.
However, as mentioned by naught101 in the comments, the value is not yet saved in the file's tags as the development team needs to fix a memory corruption problem before it is enabled. Therefeore, my answer is only partial.
SongKong (pro version) can calculate the BPM of over a million songs as they are matched to MusicBrainz. It updates your iTunes folders in real time.
Banshee has an option for detecting BPM.
And if you only want to detect the BPM for a select range of songs, open their proprties dialogs, go to the Extra tab and click on the Detect button.