Automatic music rating based on listening habits

I would track all of your users' listening habits in a central database, so you can make recommendations based on what other people like too ("people that liked this song, also liked these other songs")

some other metrics to consider:

  • proportion of times that the song was immediately replayed (ex. this song was immediately replayed 12% of the times it was played)

  • did they turn on the "repeat this song" button during play?

  • times played per hour, day, week, month

  • proportion of times this song was skipped. (ex. this song was played, but immediately skipped 99% of the time)

  • proportion of song listened to (the user listened to 50% of this song on average, versus 100% of some other song)

also:

listen in on the user's microphone. do they sing along? :D

what volume do they play the song? do they crank it up?

Put in a "recommend this song to friends" button (that emails song title to friend or something). Songs they recommend, they probably like.

You might want to do some feature extraction on the audio stream, and find similar songs. This is hard, but you can read more about it here:

"Automatic Feature Extraction for Classifying Audio Data " http://www.springerlink.com/content/g71368g57x013j48/

"Understandable models Of music collections based on exhaustive feature generation with temporal statistics" http://portal.acm.org/citation.cfm?id=1150523

"Collaborative Use of Features in a Distributed System for the Organization of Music Collections" http://www.idea-group.com/Bookstore/Chapter.aspx?TitleId=24432


Measure how long a song was played on average (minutes).

I don't think this is a good metric, because a long song would gain an unfair advantage over a short song. You should use a percentage instead:

avg. time played / total song length


Please let degrade likeliness over time. You seem to like songs better if you heard them often during the last n days, while older songs should only get a casual mentioning, since you like them but heard them way too much, probably.

Least but not last you could add beat detection (and maybe frequence spectrum) to find similar songs, which could provide you with more data than the user inputted by hearing the songs.

I would also go for grouping songs having the same MP3-Id Tag here, since this also gives a hint what the user is currently on. And if you want to provide some autoplay function, it would also help. After hearing a great Goa song, switching to Punk is strange, even if I like songs of both worlds.