Shuffle is a very old concept by now and in the days that CD’s only held about 12 songs it was great. When you got bored with the songs on the CD you just changed it. Now, with iPod’s containing thousands of songs, it somehow just doesn’t cut it any more. You don’t change your entire music collection so easily. The problem I have is that my iPod contains a lot of great songs but I want to hear some more than others. Shuffle however treats all songs equal, it just randomly selects them and plays them.
What I think we need therefore is a new kind of shuffle that learns our likes and dislikes. What I suggest we do is to use the meta data of the songs so that shuffle will prefer some songs over others. Meta data is data that is added to a file, to a song for instance you can add a title, author, album etc. What it currently also contains if the number of times a song has been played. Songs played more often are probably more popular so you could make shuffle select them more often than songs who aren’t played that often yet. There are two problems with that however:
- If I add a new song to my iPod I want to hear it more often. However a new song won’t have many plays and therefore would be selected less often.
- Songs you have heard too often will loose some of there appeal, at least for a while. The high play rate would make shuffle select them more often making and you eventually grow so tired of the song you can’t stand to hear it any more.
The solution is to also add how often a number gets skipped. This makes it possible to calculate a play to skip ratio (between -1 and 1). a rating of 1 would mean the song gets played every time while a rating of -1 would mean it gets skipped every time. This would solve the second problem instantly because if you heard a song too often you start to skip it and it’s rating would go down making it less prominent in your play list.
To solve the problem of new songs I think you should give new songs a ratio of 1 until they have been played a few times, somewhere between 5 and 10 for instance. This would make a new song on your iPod more prominent until a real ratio can be established.
Now to keep it manageable for an iPod to handle I think that the ratio needs to be divided into categories. How it should be divided I don’t know. Ideally you want to have a pyramid of the number of songs in each category. The best songs are in a small category while the least favourite songs should be in a relatively large category. Each category could be played as often but because the lesser favourite songs are in a larger category they get played less often.
You could divide a thousand songs for instance like this: 500 – 250 – 125 – 75 – 50. Maybe you’d want more categories and divide it like this: 350 – 250 – 150 – 100 – 75 – 50 -25. In the first example a song with the best ratio would be played once every 250 songs while the least favourite song would be played only once in every 2500 songs. In the second example the most favourite song would be played once every 175 songs while the least favourite songs would be played once every 2450 songs. Which is better I cannot say of course, some research might need to be conducted to decide that. Maybe you could even let the user decide between balanced (smart shuffle turned off) versus heavy preference, top categories are smaller making the songs in it more likely to appear (for instance 325 – 275 – 175 – 100 – 55 – 35 – 20 – 10 – 5).
The last problem to solve is when you say a song is fully played or when it is skipped. The trouble is that I sometimes ‘skip’ the song in the last seconds, for instance to play it again. I think that a ratio between 75 – 25 or 85-15 would be acceptable (skipped in the last 25% or 15% of the song would register it as played not skipped).
I have no programming skills so I am not able to build the software needed. It would be great if others would use my idea and make it a reality.