Autoqueue
A nice little piece of code I came across quite a while ago and have been meaning to blog about ever since I wrote some code to extend it properly to the Rhythmbox music player is a generic cross-player autoqueue project.
The idea of the project is to generate interesting tracks to queue up automatically in your player while you're listening to music based on what you're currently listening to. Put simply, seed your playlist with a few tracks of the sort you want to listen to, turn the plugin on and it will continue to populate your queue with similar tracks. It's great when all you want to do is have some non-particular music in the background (say when you're coding for example) and you don't want to bother with managing what's playing right now. If you're in the mood for some acoustic through to heavy metal, just seed with what you want and let autoqueue do the rest.
The Rhythmbox plugin for this project wasn't particularly mature when I picked it up so I've modified it so now I've got a nice little button in my player that I can use to switch the plugin on or off depending on whether I want to choose the tracks or allow the plugin to do it for me. Autoqueue attempts to be generic about the players it supports by essentially providing a library that player plugins can talk to over a dbus interface.
The autoqueue project itself currently supports 2 mechanisms to determine track similarity. There's what the project seems to hold as the primary method which is comparing the audio signal of the track you're listening to with those in your music library. It uses an external library called mirage for this which was originally written for the Banshee player. Then there's the method I prefer to use which is to call out to last.fm to ask for the similar tracks to the current one playing and queue up one from the list you already have in your library. Eventually, I'd like to extend this so it takes into account your last.fm profile such that the similar tracks picked are ones you prefer to listen to.
While it's a great little project and I love this type of idea for generating dynamic playlists, the project is fairly stale, not much activity in development and the code repository is way more up-to-date than any released zip files. However, if you're interested it's easy to get going so long as you know how to write a plugin for your player.
<edit>See comments from the project maintainer below for latest updates on project status at the time of writing.</edit>
The idea of the project is to generate interesting tracks to queue up automatically in your player while you're listening to music based on what you're currently listening to. Put simply, seed your playlist with a few tracks of the sort you want to listen to, turn the plugin on and it will continue to populate your queue with similar tracks. It's great when all you want to do is have some non-particular music in the background (say when you're coding for example) and you don't want to bother with managing what's playing right now. If you're in the mood for some acoustic through to heavy metal, just seed with what you want and let autoqueue do the rest.
The Rhythmbox plugin for this project wasn't particularly mature when I picked it up so I've modified it so now I've got a nice little button in my player that I can use to switch the plugin on or off depending on whether I want to choose the tracks or allow the plugin to do it for me. Autoqueue attempts to be generic about the players it supports by essentially providing a library that player plugins can talk to over a dbus interface.
The autoqueue project itself currently supports 2 mechanisms to determine track similarity. There's what the project seems to hold as the primary method which is comparing the audio signal of the track you're listening to with those in your music library. It uses an external library called mirage for this which was originally written for the Banshee player. Then there's the method I prefer to use which is to call out to last.fm to ask for the similar tracks to the current one playing and queue up one from the list you already have in your library. Eventually, I'd like to extend this so it takes into account your last.fm profile such that the similar tracks picked are ones you prefer to listen to.
While it's a great little project and I love this type of idea for generating dynamic playlists, the project is fairly stale, not much activity in development and the code repository is way more up-to-date than any released zip files. However, if you're interested it's easy to get going so long as you know how to write a plugin for your player.
<edit>See comments from the project maintainer below for latest updates on project status at the time of writing.</edit>