Help - Search - Members - Calendar
Full Version: Linear rating/hotness of tracks
Hydrogenaudio Forums > Hosted Forums > foobar2000 > 3rd Party Plugins - (fb2k)
Anonym001
Hi there,

I searched a little through the forums and saw all those rating plugins and "hotness" plugins and so on..
Some may are nice plugins, but they all have the downside that they treat a track's rating as an objective rating dependend on the listener. Thats wrong imo, because, it totally ignores the current mood of the listener.

A track should have different ratings for different moods.

the algorithm should rate the track as all the other hotness algo's do: depending on listening time, frequency and length and so on, but additionally it should try to group tracks that get similar ratings in a certain time window, so for example if s.o. likes a track (as in he/she listens to the whole track) and likes an other track right after that one, the algo would add the rating "good" to mood-group A for both tracks.
The user could later see all tracks for mood A and rename A to what mood he things this tracks represent for him/her.
The tricky parts here would be to figure out when the mood changes, this could be done based on the previous ratings.

Well thats just the basic idea, there are a lot of other points to figure out, to make this work properly.

I wrote this in the hope s.o. might catch this idea up and write a plugin. I would do it myself, but its not that easy to recreate the production enviroment in linux.

--Ano
odyssey
It's not the first time I've seen this mood-rating proposal, and generally I think it's a good idea, but I seriously think that it need some standardization - AND a fingerprint database!

This proposal would be good if you have a small collection and narrow music taste. I myself, has a very large music taste, I listen to music all the time, and my music collection has grown excessively the past few years (more than 25.000 tracks atm). In this collection there are music for almost every extreme mood I might have, but it's completely impossible for me to manually tag this to something near perfect.

Some people say that it's impossible to rate music this way, but i tend to disagree - It might need a difficult and advanced algorithm but with proper guidelines and widespread knownledge I think that it could become a success.
carpman
Hi Anonym001

It's an interesting area. But a very problematic one.

1) First problem is the temporal nature of mood.
2) Second problem is the unqualifiable / uncategorical nature of mood. By that I mean, regardless (or perhaps because of) the fleeting nature of mood, mood is not a consistent amalgam of feelings, so it is not discrete and this makes categorisation very troublesome.
3) Third problem is that the subject has a massive effect on the experiment. Good music will affect the mood you're in, so measuring a song by its proximity to a prior song is not helpful.

What for example happens if:

a) I'm using shuffle play, b) it stumbles upon a Joy Division song that brings me down, so next I listen to "What A Wonderful World" to cheer me up.

In that scenario, the song prior to the Joy Division song is random and linking it to Joy Division is likely a mistake. Listening to the Joy Division song affected my mood, so the previous song is now connected to a song from another mood category, and then I cheered myself up with Louis Armstrong, so my mood has changed again, but again Louis Armstrong is lumped in with Joy Division. Often people, unless they are feeling sorry for themselves, listen to music to alter their mood.

Here's another illustration of the problem:

Make a number of playlists that "categorise" certain "moods". As long as you are not an automaton, you'll likely hit problem no.2. However, when you are in "one of those predefined particular moods" add all the music you are currently (from the beginning of that discrete bunch of feelings until they transmute) listening to.
When you next find yourself in "that particular mood" listen to the playlist and see how satisfying it is.
Personally, I found it a profoundly frustrating, unsatisfying and entirely futile experience.
All it told me was what music I listened to at a particular moment in time, because that precise mood clearly never revisited me. Thus, I find cancelling out mood, by measuring listening behaviour across all moods, a more instructive and worthwhile activity - as at least with such "linear" approaches, you find out what you like, and thus to some extent what you are like.

That said, I'm sure if you really want a mood rating algorithm, you'll no doubt write one.

C.

EDIT: Your title: "Linear rating/hotness of tracks, is not really realistic" is inaccurate, the so-called linear ratings schemes like hotness and foo_DAR "realistically" measure the same thing, but in different ways; you are talking about one more way of measuring the same thing - no better, just different.
Anonym001
Hey there carpman,

For your case a), it is more likley that you would skip the song that would bring you down and thus the song gets a negative rating for for the current mood.

For case c) i think this even is a positive effect, because then a song will most likley make the listener hear similar songs.

for case b)
I talked a little with Neptune in IRC about this.
It may is better to not do it by mood, but by correlation of songs to each other.
I like to think of it in this way: Imagene a 2d or 3d space. you give your song a position within that space. the next song gets a position near that one if it won't be skipped, or even more near if it was choosen directly instead of beeing in the playlist as next item.
If you now listen a 3. song which has already a rating or - in space terms - a position and this position is far away from the first track, but the second track is near the first track, then you would alter the position of the second and the third track to be more near each other.. a proper interpolation is needed here..

for my title: yes you're right, but i can't edit it anymore..

i think the a real problem is to detect mood changes to avoid correlations that are purley random. A possible solution for this would be to use existing values and interpolate with them.. A mood change happens not that often, so i think it would have a minor effect if you interpolate the rating acordingly. See also what i wrote to case b) here


@ odyssey: a fingerprint .. like the genom project at pandora.com ?
why would it be good for a small database with narrow music taste?

--Ano
odyssey
QUOTE(Anonym001 @ Jul 9 2008, 00:08) *
For your case a), it is more likley that you would skip the song that would bring you down and thus the song gets a negative rating for for the current mood.

I agree. If I'm in a "any-mood", I usually hit my entire collection with random and skips until I find something I want to hear - After that it frustrates me that I have no real categorization that will keep the particular genre/mood/rating. I still think this could be narrowed into simple elements, such as BPM, key genre, some kind of mood and yes the brilliant idea of a 3D correlation of other similar tracks.

I think the key here is, which elements would people usually describe a song with? I'm sure that one could describe a song in a way that most people would agree with, and that's why I propose a central DB to store such data in smile.gif

QUOTE
why would it be good for a small database with narrow music taste?
No sorry, I should have been more precise: I mean, that it's easier to specifically tag a music collection that is small in contrary to a huge one like mine. That's why I propose a DB and algorithm that lets users submit their analysis of songs. Pandora is a great example, and the old outdated MoodLogic had some good ideas too. MoodLogic was primary based on the presence of different instruments in a track.
Anonym001
QUOTE(odyssey @ Jul 9 2008, 00:46) *

I agree. If I'm in a "any-mood", I usually hit my entire collection with random and skips until I find something I want to hear - After that it frustrates me that I have no real categorization that will keep the particular genre/mood/rating.

Thats exactly my feeling and the reason why i came up with this smile.gif

QUOTE(odyssey @ Jul 9 2008, 00:46) *

I still think this could be narrowed into simple elements, such as BPM, key genre, some kind of mood and yes the brilliant idea of a 3D correlation of other similar tracks.

well i am not even sure if genre is such a good choice, i tend to ignore the genre completly..
you may have a look at last.fm they have a database which shows 'similar' songs there based on what the submiter listen to
(i also submit there: http://www.lastfm.de/user/anonym001 )

QUOTE(odyssey @ Jul 9 2008, 00:46) *

I think the key here is, which elements would people usually describe a song with? I'm sure that one could describe a song in a way that most people would agree with, and that's why I propose a central DB to store such data in smile.gif

maybe the last.fm song tags are a good example.. maybe not.. no idea
QUOTE(odyssey @ Jul 9 2008, 00:46) *

No sorry, I should have been more precise: I mean, that it's easier to specifically tag a music collection that is small in contrary to a huge one like mine. That's why I propose a DB and algorithm that lets users submit their analysis of songs. Pandora is a great example, and the old outdated MoodLogic had some good ideas too. MoodLogic was primary based on the presence of different instruments in a track.

alright, got you know.
while reading up about MoodLogic i stumbled over MusicBrainz ( http://en.wikipedia.org/wiki/MusicBrainz ) they would provide such a fingerprint


--Ano
odyssey
As a simple "solution" for now, I'm planning to code a script that will capture the cloud-tags from last.fm - HOWEVER, when I look at most of them, I find many of these useless. I.e, for many danish songs there is just tagged "DANISH", which is not very descriptive IMHO!

Sometimes I may agree with you that genre is irrelevant, but not always - Again it depends on the mood wink.gif I think that the more elements from a song that can be described the better, and then it could be up the user itself to create maybe some kind of autoplaylist depending on choice.

An example is that, I prefer that songs are played harmonically compatible (look at the Camelot system). This is a set of rules combined with the detected key of a song. Also I might prefer a song that is no faster/slower than 15-20% of the previous.

The only reason I mentioned fingerprinting is that I think that such a valuable DB should be consistent, and the best way to do that is to ensure that the songs submitted has the correct fingerprint. I guess i'm too much of a technician when I speak of this idea, but I've had in in my head for a long time smile.gif


Elements that I feel are important for each song in a database is:
- Mood: Sad, Mellow, Happy - More? (Notice that a song can be sad but have high energy - A previously discussed dilemma)
- Energy: How much energy has a song? In many cases this is proportional with BPM/tempo
- Key: Important is user wants harmonically compatible playlists
- BPM: Describes the tempo
- Primary genre
- Subset of styles
- Plays (from last.fm to identify popular songs?)
- Theme: In a similar way that AMG uses. I.e. many users can have general ideas of which songs is great for partys etc.
- More advanced analysis of a songs instrumental properties and energies. I will try to find the way that moodlogic incorporated it.

If anyone has more ideas of which things can be registered of songs, please let me know. Also if anyone are familiar of the professional techniques used in Pandora, i'm very interested.
carpman
@ Anonym001
QUOTE(Anonym001 @ Jul 8 2008, 23:08) *
For your case a), it is more likley that you would skip the song that would bring you down and thus the song gets a negative rating for for the current mood.

Skip counting is problematic, we had a long and somehow interesting discussion on the meaning of %skipping% over on the General HA forum. If you haven't seen it already you may find this thread interesting.

QUOTE(Anonym001 @ Jul 8 2008, 23:08) *
For case c) i think this even is a positive effect, because then a song will most likley make the listener hear similar songs.

Just to be clear case A, B and C where all part of the same scenario.

QUOTE(Anonym001 @ Jul 8 2008, 23:08) *
It may is better to not do it by mood, but by correlation of songs to each other.

Good idea. I certainly don't want to discourage; rather I wish you well with finding a solution. It's a tricky problem, and certainly one made harder by the introduction of something so nebulous as "mood".

QUOTE(Anonym001 @ Jul 8 2008, 23:08) *
the next song gets a position near that one if it won't be skipped, or even more near if it was choosen directly instead of beeing in the playlist as next item.

Problems relating to these measurements are also discussed here.

QUOTE(Anonym001 @ Jul 8 2008, 23:08) *
A mood change happens not that often

I disagree, and would suggest it's happening constantly, it's just a constant flow of subtle and less subtle shifts of an unquantifiable range of feelings that defeat language.

Have a look at that thread on skipping because as you'll see, the very intelligent input from the HA members certainly changed my view on the whole skip issue. Part of what came out of that is what I believe to be a good playcount solution, but whether that will help you I'm not so sure.

Good luck!

C.
carpman
QUOTE(odyssey @ Jul 8 2008, 23:46) *

I think the key here is, which elements would people usually describe a song with? I'm sure that one could describe a song in a way that most people would agree with

I'm not so sure. Unless its objective, i.e. BPM, Strings, Acoustic, Dynamic Range, KEY.
But happy can be slow.
Sad can be major key.
Strings can be anxious or soothing
Acoustic can be disonant or mellow
A Bach organ fugue can have very little dynamic range (as the Sparkle meter seems to be showing, in its early days)
Etc ...

And the idea of a democratic republic of mood, whereby everyone asigns mood labels and votes, will not produce results that satisfy complex individual human beings. The problem is language and categorisation; not "moods" per se.

C.
Walterrrr
In this, our digital age, we would be wise to discover new and more clever ways of organizing music than the strict ways of the past. I have read two interesting articles on the subject I think you might find enlightening:

"Alphabetization Is Not Fit for Music Libraries" from KiloBits Per Second
and
"How the Internet Disorganizes Everything", an interview from 10 Zen Monkeys with 'Everything Is Miscellaneous: The Power of the New Digital Disorder' author David Weinberger

I like the idea of organizing songs in a two dimensional plane or three dimensional space based on criteria. For example, say you wanted a love song. You could assign coordinate axis based on optimism/pessimism, and another for tempo and you could also turn it into a three dimensional space by adding another axis for, say, acoustic/electronic. A song may not stick to the same coordinates for its duration, so viewing the space over time you could see a slow sad electronic ditty move into a fast happy acoustic one. You could perhaps view several songs moving through this space, time-dilated to account for different lengths.

You would need to develop new forms of metadata to do these things. Some could be analyzed by the computer, like tempo, loudness, dynamic range, but most of these criteria would best be hand created and then peer reviewed or submitted to a database for averaging. One of the biggest roadblocks I've had in assigning metadata is the precision questions related to creating a criteria for categorization. If there was a program where you could add tags to a song and view tags that other people have used you would be able to both "properly" categorize a song due to wisdom of the masses and also share personal tags with others that might not occur. On Last.FM I've started tagging some songs with "only know the melody, not the words" for those kinds of songs where much of the words don't really matter. I'm thinking of starting to use "dumb, but I like it"

It seems that I like to conceptualize the possibilities of computing today when I don't have the skills to implement it.
Anonym001
well the idea of defining a song by its correlation to other songs tries to work around the problem of an objective definiton of a song.

I see some problems with your way carpman, you write yourself "Strings _can_ be" and so on, so its nothing that is valid for all songs and it may even differs from person to person (e.g. s.o. who grow up with a mother playing strings might has a little disfavour for strings), you can't conclude a song's mood by this. i don't think you can conclude a song's mood at all.. just in combination with a person.

But you can do the same thing by just measuring the correlation of songs to each other like Neptun suggested in IRC. You could then create a new UI Panel that provides sth like this
http://www.kilobitspersecond.com/stuff/mus...y-histogram.png
(taken from the article Walter linked)
an infinity zoomable svg grafic that groups similar songs..

Just finished the second article you linked. Very interesting yes.

now with the thinking of that article in the head, seeing you trieing to come up with a way do describe the nature of the song based on instruments, beats und so on is again the categorization.. what about using different kind of links of songs to each other? like, the link "same band", "same album", "similar mood", "similar length"..
You could implement this using a n-Dimensional space, for every type of correlation one dimension. Some of these can be done automatically, like same artist and length. Mood needs to be either done by hand or by an algo that watches the listeners behaviour.. that is what last.fm does and it does it on a very large scale and thats why it works pretty well for them.. in a way at least.. they only provide similar artist, not artist that provide similar mood influences...


--Ano
odyssey
I completely fail to see how Dynamic Range would have an effect on mood blink.gif

I stumpled across this article. It might be good to have some of it's concepts in mind:
http://ismir2007.ismir.net/proceedings/ISM...47_govaerts.pdf
Walterrrr
I wasn't just talking about rating according to mood. tongue.gif

But some of the best crescendos could not be possible without dynamic range
incunabula
Here is a cool example of using the data returned by the Echo Nest API to visually represent different types of music. There analysis engine claims to detect time signature, beats, onsets, loudness, key and melody within music files. It looks like getting a license for the API is free although i admit I haven't had time to take a look for myself to see if there is potential for integration with Foobar. I think it returns XML data for each analyzed song which could then be parsed and added to ID3 tags.

http://the.echonest.com/analyze/
odyssey
QUOTE(incunabula @ Jul 11 2008, 01:06) *

Here is a cool example of using the data returned by the Echo Nest API to visually represent different types of music. There analysis engine claims to detect time signature, beats, onsets, loudness, key and melody within music files. It looks like getting a license for the API is free although i admit I haven't had time to take a look for myself to see if there is potential for integration with Foobar. I think it returns XML data for each analyzed song which could then be parsed and added to ID3 tags.

http://the.echonest.com/analyze/

http://developer.echonest.com/docs/analyze/xml
Yummy stuff to put in my tags tongue.gif

One thing I would like in particular, is (if it is what I think it is) the ability to determine if a song is faded out, the BPM and Pitch.

I'm still looking into the possibilities of the results, but it would be great if the colorcodes that flyingpudding is demonstrating, corresponding to values could be used to flatten out large mood-variations in shuffle play. It's a longshot, and not perfect, but DEFINITELY better then nothing!

Edit: I've seen this a few places now, with HTTP API's there's an API-token - What's it's used for and how do I get one?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.