My iPod is quite nice for me. When set to shuffle it plays my favourite music quite often. It is not perfect however. Often it plays in succession two completly different songs. It also skips those that I haven't rated high enough.
Another annoyance is that it doesn't recognize new songs I have recently added to library - although I would prefer them to play more often. At least until I decide if I like them.
This means that better shuffling algorithm is a necessity.
Some Assumptions
Algorithm should fulfill at least those goals:
- for each song played it should know which songs should follow (less likely to pick songs that I would have to skip)
- it should play songs I like a bit often
- it should play songs I do not like not too often, but still in case I changed my mind and choose to give them higher rating
- new, unrated songs should be played often enough for me to pick them up and rate them
Also it would be nice if:
- it allow rating songs using two ratings: thumbs up or down
- it know that once I press next I do not want given song and previous to be played in succession
- it know that once I press next several times in a row I try to find a song matching the last I heard in (mostly) full
Still interesting is if and how the algorithm should react on previous button:
- should it ignore this event completly?
- or maybe it should remember that I like to hear given song several times in a row?
First Attempt
Song preferences are stored as a 2d matrix of likeness of two songs in collection. Arbitrary choice is that current song is represented as a row, next song is represented as a column.
When song is imported new row and column is added and likeness is set to default (except on the cross section where it is set to lowest - we do not like hearing the same song time after time by default.)
- When I listen to a whole song in whole, it's likeness with previous song rises.
- When I skip it it's likeness with previous song lowers.
- When I skip several songs in row their likeness to each other does not change, rather their likeness with last played song lowers.
- When I give a thumbs up song's likeness with all others rises.
- When I give a thumbs down song's likeness with all others lowers.
- When I skip a song, it's play count raises (so that it's less likely appear in near future)
- Songs with low play count are played more often

0 comments:
Post a Comment