OK, first a little background:
I have a music library of a decent size: Just shy of 83 hundred tracks of CD quality FLACs. I have spent quite a bit of time standardizing the storage schema, so that all the folders are sorted uniformily and all the files are named appropriately. I then used MusicBrainz Picard to tag the albums, and EasyTag to tag the miscellaneous collections. After all of that, I can say with some comfort that my collection is at least uniform and that it's tags are correct.
The next big thing for me is to be able to create playlists that are good for working out. I have been reading about how matching your music's beats to your workout will help you workout longer and more efficiently, and I have installed a couple apps on my phone that will match music to your jogging pace automatically, IF your music is already tagged for such magic.
And so this brings me to my problem: Tagging upwards of 8 thousand songs BPMs by hand isn't a task for the feint of heart, or for those who have jobs. As such, I have spent several months questing for the very best BPM counter for linux. I have tried various products, such as a plugin for Amarok, a hidden feature of Banshee, etc. but none of them ever worked for me. In all my research, people kept pointing towards a product called BPMDJ (http://bpmdj.yellowcouch.org), but it's not available in binary form.
This leads to the extended problem: I spent MONTHS not able to compile the stupid thing. Well, today, hours of fiddling and a very decently worded bug report later, I was successful, and this is the process:
1. I installed all the dependencies months ago, and so this list may be incomplete... If anyone finds a problem, please let me know and I will update this post. Basically, the following command (as root) should get the job done:
yum install qt-devel alsa-lib-devel fftw fftw-devel mpg123 lame vorbis-tools mplayer
2. I downloaded the source from http://bpmdj.yellowcouch.org/
3. Per the instructions on their home page, and because Fedora is always just a little bleeding edge with their packages, I had to patch symbol.h to be compatable with the QT packages included:
Change:
Symbol() : text(NULL)
{
};To:
Symbol() : text((const char*)NULL)
{
};4. Because of a bug in the BPMClock driver (http://bpmdj.yellowcouch.org/bugzilla/show_bug.cgi?id=1298), you also have to patch bpmclock.cpp to include the following include line:
#include
5. You can now move on with the steps as intended. Create a defines file, mine looks like this:
CPP = g++ -g -O3 -Wall
RCC = rcc
UIC = uic-qt4
MOC = moc-qt4
CFLAGS += -D COMPILE_ALSA
LDFLAGS += -lpthread -lm -lasound -lrt -lfftw3
QT_INCLUDE_PATH = -I/usr/include/QtGui/ -I/usr/include/QtCore/ -I/usr/include/Qt/
QT_LIBRARY_PATH = /usr/lib64/libQtCore.so.4
QT_LIBS = -lQtGui
BITS = 646. Run the make command, and everything should play nice. I then moved bpmdj, bpmplay and bpmdjraw to/usr/bin, and added it to my Application Launcher, and it seems to be working... Now on to the original goal and question: Will this read and tag all my files? Only time will tell.
These instructions successfully build the program and get it installed. In my next post, I will explain how to setup and use the program.