![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
To continue my series of obsessive musings on Apple's music stuff: I think I know what they should have instead of, or perhaps in addition to, the useless star rankings.
Any system that works well for sorting and filtering songs on the basis of what you like ought to require no special action from you; it ought to depend on play statistics. The iTunes play counts are good for sorting out your all-time favorites, but they don't account for changing tastes, or that you might just get bored with a song that you listened to a hundred times last month.
There should be a version of the play count that increases by one whenever a song is played, as usual, but is a floating-point number and decays exponentially, like a radioactive element.
The result would be something that works like a personal system of weekly Billboard rankings, only better, because it would not be susceptible to sampling and quantization errors. The user might be able to set the half-life, but that's not critical. I'm imagining something on the order of a week or two for the default. You might want to set it longer if you don't listen to music as much, shorter if you are going through puberty. Since the numbers are floating-point and scale exponentially, there's no lost information about rank order if you just go without listening to music for a long time-- IEEE double-precision floats ought to be good for years, given reasonable settings. But afterward, the rankings would heavily weight in favor of your tastes post-hiatus, since that's the whole point.
(Super-geek details: This would be pretty easy to implement since the system already knows when a song was last played. The history-blind nature of exponential decay means that mathematically that's all you need; the system wouldn't have to keep track of the times of previous listens, or even update the counts until a song is played again or you need to display or use the number. The update would consist mostly of a floating-point exponentiation and multiply, one of each per song, which could easily be done with the appearance of instantaneity by any modern CPU, even if you've got a few thousand songs. To make it easy we could stipulate that the iPod only recalculates these when a song gets played. If the portable MP3 player isn't the iPod, and therefore can't be made to do these calculations on the fly, you couldn't be 100% accurate with the rankings when faced with repeated play, but you could still get close enough to be useful even if all you know is the number of plays and the sync time. Much of the art of hackery is figuring out how to fake it.)
In related news, last night I constructed a four-hour and fifty-one-minute playlist of the awesomest music ever, so I will never be bored again.
Any system that works well for sorting and filtering songs on the basis of what you like ought to require no special action from you; it ought to depend on play statistics. The iTunes play counts are good for sorting out your all-time favorites, but they don't account for changing tastes, or that you might just get bored with a song that you listened to a hundred times last month.
There should be a version of the play count that increases by one whenever a song is played, as usual, but is a floating-point number and decays exponentially, like a radioactive element.
The result would be something that works like a personal system of weekly Billboard rankings, only better, because it would not be susceptible to sampling and quantization errors. The user might be able to set the half-life, but that's not critical. I'm imagining something on the order of a week or two for the default. You might want to set it longer if you don't listen to music as much, shorter if you are going through puberty. Since the numbers are floating-point and scale exponentially, there's no lost information about rank order if you just go without listening to music for a long time-- IEEE double-precision floats ought to be good for years, given reasonable settings. But afterward, the rankings would heavily weight in favor of your tastes post-hiatus, since that's the whole point.
(Super-geek details: This would be pretty easy to implement since the system already knows when a song was last played. The history-blind nature of exponential decay means that mathematically that's all you need; the system wouldn't have to keep track of the times of previous listens, or even update the counts until a song is played again or you need to display or use the number. The update would consist mostly of a floating-point exponentiation and multiply, one of each per song, which could easily be done with the appearance of instantaneity by any modern CPU, even if you've got a few thousand songs. To make it easy we could stipulate that the iPod only recalculates these when a song gets played. If the portable MP3 player isn't the iPod, and therefore can't be made to do these calculations on the fly, you couldn't be 100% accurate with the rankings when faced with repeated play, but you could still get close enough to be useful even if all you know is the number of plays and the sync time. Much of the art of hackery is figuring out how to fake it.)
In related news, last night I constructed a four-hour and fifty-one-minute playlist of the awesomest music ever, so I will never be bored again.
no subject
Date: 2003-07-20 08:07 am (UTC)no subject
Date: 2003-07-20 08:10 am (UTC)Further ideas
Date: 2003-07-23 01:05 am (UTC)Über-geek details: Does the iPod do floating-point? Well, it's not like you couldn't use software floating point, I guess. I am just too used to getting in trouble when trying to do floating point on portable and embedded devices.
--
Dag Ågren
Re: Further ideas
Date: 2003-07-23 10:20 pm (UTC)no subject
Date: 2003-07-29 10:25 pm (UTC)