One does not simply listen to music. Sure, you can listen to a whole album at a time, old-school, or just throw everything into the shuffle blender, but the vicissitudes of statistics lead to things getting neglected. In addition, one wants to listen to new stuff, and listen to it more often in order to become familiar with it. How to balance listening to neglected stuff with the need to listen to new stuff more often?
After various attempts that were eventually unsatisfying, i developed a Fibonacci-based approach; songs are added to a list according to how many times they've been played, and each list has a backoff value where a song isn't allowed to show up until it has been Fn days since it was last played. These lists are aggregated into a master list. Another list is created for songs above a minimum number of plays that have not been played for a number of days that is larger than the largest value from the previous lists. The value varies in an attempt to balance the amount of tracks in the latter list with those of the former aggregated list.
As it stands now, I have lists for tracks played up to 11 times, aggregated in the ‘lessthan12’ playlist, which itself is bound to the ’Not Recently Played’ playlist in ‘listen’. I recently ran through the entire playlist, so I am back to playing my entire catalog on shuffle, in order to allow the lists to repopulate.