Rate MP3 songs and create playlists based on ratings

rateplay is a Perl script using the POE framework, a Gtk GUI and the musicus (xmms-based) MP3 player.

rateplay plays MP3s in two different phases: The training phase and the play phase. During training, it randomly plays songs from a collection and asks the user for ratings on two criteria: The energize and the schmoop level. It stores these ratings persistently in an SQLite database (automatic setup, no fiddling required).

During the play phase, it lets the user select acceptable energize and schmoop levels and randomly plays songs matching these criteria.

rateplay has been instructed to play songs with energize levels 3 through 5 and schmoop levels 1 to 2. It constructed a playlist of 287 songs and is currently playing a heavy metal song with an energize rating of 5 and a schmoop rating of 1.

What are energize and schmoop? The energize level of a song describes how fast a song is and how much energy the song emits on a scale from 1 to 5. The schmoop level, on the other end, describes how schmoopie a song is. If you're a Seinfeld fan, you'll know what schmoopie is ("You're schmoopie! No, you're schmoopie!"), for the rest of the world it's the softness of a song, the in-certain-situations-playability.

It's a personal call, but I would rate "Thunderstruck" by AC/DC at an energize level of 5 und a schmoop level of 1. On the other end of the scale, "Don't Know Why" by Norah Jones would probably get an energize level of 1 and a schmoop level of 5.

Your mileage might vary, but I think it shows the concept. This double-rating allows for useful playlist requirements later on, like "play fast songs, but none that drive my boy/girlfriend away" with allowed energize levels of 4-5 and schmoop levels 3-5.

Or, "play titles for my bachelor party", with allowed energize levels of 3-5 and schmoop levels 1-3.

It started as an article (English and German) in the UK and German issues of Linux-Magazin(e).


Released version rateplay-0.08.tar.gz


TODO list


Stable Release (05/01/2004) rateplay-0.08.tar.gz


Please send bugs reports or requests for enhancements to the author: cpan@perlmeister.com

Mike Schilli <cpan@perlmeister.com>, 2004