Re: [Rhythmbox-devel] Summer of Code Proposal: A predictive playback plugin for Rhythmbox

Hey there,

I'm the author of the recommendation plugin. I find this kind of program very cool, and very useful. I spent a lot of time thinking about this kind of problem, and it seems the problem always goes back to how do you know two songs are similar, and to whom they are similar.
For instance, two songs very different can be closely related to someone, but that relationship only makes sense to that person. No automated tool could find that relation. But there is no way a user can show these relations to their entire music library.
That was the reason I used tags in I used only public tags, but the concept could be extended to personal tags. The problem, of course, is the need for an internet connection. The performance hit is actually very small.
The Rhythmbox database can support keywords, that could act the same way tags do. There is no UI for it yet, but it could be used to hold the most common tags in each song, and those tags could be updated only when a song is played, for instance, so there would be no problems with the size of the library.

An automated tool can only go so far in detecting how a song is related to another. But the user is the ultimate chooser. The user could want to hear only rock for a while, and the automated tool could work well in that situation, but then he wants to hear only romantic songs, and then the automated tool has no way to know which of the songs are romantic or not (the tempo is not very useful here, and the genre could never tell this kind of thing, even when set correctly, which is also very subjective if the genre is correct or not).

I once used a tool that related how a song is similar to another by relating if you skipped to another song when playing random songs. Say you heard 10 random songs without skipping any of them, so those songs are somehow related. But them you skip the next song, so that song is not related to the last 10.
This kind of system would work very well in very diverse situations, but it would also require a lot work. Some kind of IA could help here (neural networks come to my mind). Could be a good experiment.

But anyway, something that can help you is the system used in the Listen Music Player. I dont know how it works but might be similar to what you want.

Good luck with your project, and if you ever need some help, feel free to contact me.


On Sun, Apr 6, 2008 at 12:14 PM, Charlotte Curtis <c f curtis gmail com> wrote:
Hi giopas,

Thanks for the reply.  Perhaps I wasn't quite clear enough - I would only use the id3 tag info as supplementary, so if a user has put a great deal of effort into organizing their tags and wanted to weight similarity based on tags, that effort would not be wasted.  My main focus would be in signal analysis of the songs themselves to extract features such as tempo, dynamics, specific instrument types, etc.  The idea would be to determine the similarity based on the actual music, rather than tags or other external information.

Thanks for pointing me towards the plugin, it sounds pretty cool.  I think there still might be room for a plugin that bases similarity on signal analysis in addition to's scrobbling, but it's also possible that it might be too slow and resource intensive to be really practical, especially if you have a big library and are constantly adding new music.


On Sun, Apr 6, 2008 at 8:44 AM, giopas <linux giopas eu> wrote:
Charlotte Curtis ha scritto:
> I am interested in developing a predictive playback plugin for
> Rhythmbox.  Based on a combination of music feature extraction (such
> as beat) and id3 tag information, the plugin would detect which songs
> are most similar to the song or set of songs currently selected.

Hi Charlotte,

I find your project interesting, especially for the "tempo" variable.
However I think that such plugin can't be really rely on id3 tag
informations, most because everybody class its music in a different way.
I give you an example, U2's music genre could be "Pop/Rock", "PopRock",
"Pop" or just "Rock" or whatever...

Therefore, I think that genre variable should bettere be relied on an
external source like

Actually, Alexandre Rosenfeld has already issued a plugin based (quite)
on the same principle: Dynamic Tracks (have a look on rhythmbox
site). I suggest you to have a look at it in order to see if you can use
some features from it.

enjoy, ;)

"The paradigm of competition is a race: by
rewarding the winner, we encourage everyone
to run faster. When capitalism really works
this way, it does a good job; but its defenders
are wrong in assuming it always works this way.
If the runners forget why the reward is offered
and become intent on winning, no matter how, they
may find other strategies--such as, attacking
other runners. If the runners get into a fist
fight, they will all finish late."
(GNU manifesto/R. Stallman)

rhythmbox-devel mailing list
rhythmbox-devel gnome org

rhythmbox-devel mailing list
rhythmbox-devel gnome org

Alexandre Rosenfeld

EngComp 06 - USP São Carlos

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]