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



Thanks for the reply, Alexandre,

You're definitely right in terms of relating similarity - it seems like a very subjective task, and even if signal analysis could detect similarities, it'll never be able to relate things like "we listened to those songs on our first date".  The song skipping/neural network idea is a good one too... Maybe something along the lines of keeping track of which song was skipped, looking at which similarity metric dominated that song's similarity decision, and perhaps re-weighting accordingly.  Of course, people skip songs for many reasons, so it might not be a good idea to make any permanent changes to the similarity factors.

I downloaded your last.fm plugin and while I haven't used it extensively, I'm really impressed with it.  It definitely seemed to be a more cohesive group of music than just plain "random".  However,  I think the behaviour is a little different than the plugin I'm proposing - last.fm seems to choose songs based on "people who like x tend to like y", but it does come up with things that aren't really similar musically (for example, if I start with "Ben Folds Five - Brick", the next song I get is "Weezer - Say It Ain't So").  I was hoping to make something that would allow you to say "I'm in a mellow acoustic mood", and get a random playlist of mellow acoustic songs, even if they're from a band that typically does harder songs, or if they're from a relatively unknown band (something that last.fm seems to have a hard time with - if I put on a Bonnie Prince Billy song, last.fm can't come up with any suggestions that are in my library).

It's definitely a challenging task, and it'll be interesting to see whether a music analysis method would come up with any results that mean something to discerning human ears.  If I do end up working on this project, would you mind if I included your last.fm information as a similarity option?  It does seem to be more consistent with respect to genre, at least for artists if not individual songs.  Thanks again,

Charlotte

On Sun, Apr 6, 2008 at 7:02 PM, Alexandre <airmind gmail com> wrote:
Hey there,

I'm the author of the Last.fm 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 Last.fm. 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.

Bye,
Alexandre


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 last.fm plugin, it sounds pretty cool.  I think there still might be room for a plugin that bases similarity on signal analysis in addition to last.fm'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.

Charlotte


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 last.fm.

Actually, Alexandre Rosenfeld has already issued a plugin based (quite)
on the same principle: Last.fm 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, ;)
giopas

--
"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
http://mail.gnome.org/mailman/listinfo/rhythmbox-devel


_______________________________________________
rhythmbox-devel mailing list
rhythmbox-devel gnome org
http://mail.gnome.org/mailman/listinfo/rhythmbox-devel




--
Alexandre Rosenfeld

EngComp 06 - USP São Carlos



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