So here we go, I've got this neat little idea and no real ability to logically work it out in the foobar "language," so I'm wondering if somebody here would consider attempting it...
The idea is simple: I hate repeated songs. I truly hate it. and of course, there are components like foo_shuffle which do a most excellent job of working around this, but they are far from perfect. What I am curious in is the possibility of utilizing foo_playcount along with a tag-based shuffle mechanism to go through the songs on a tag-based sorting method (such as...next song does not equal same artist), but would prioritize tracks with a lower playcount. see below for example:
System 1: Tag preference:
Currently playing: Artist A - Track 1, playcount = 5
Next options:
Artist A - Track 2, Playcount = 1
Artist B - Track 5, playcount = 6
Artist C - Track 3, playcount = 2
In the tag-based circumstance, the component would prioritize aCT3, then (assuming only this list of four entries) move to t aAT2. While the latter has a lower overall playcount, it would match those rules stated in the tags and as such would be skipped. On to the next system.
System 2: Playcount preference:
utilizing the same playlist as above, the component would start on aAT1 and would proceed to aAT2 due to aAT2 having the overall lower playcount, followed most likely by aCT3 and either aBT5 or aAT1. However, this brings up another possible feature.
Tag History:
If I had specified a tag of "no repeat: artist", the above methods would go to another artist for the second played track and would most likely come back to the original artist for the third track. But what if the component kept a history of a specified length (lets say...2 lines of history...this could be achieved by utilizing the foo_history component as a source). Using the ssytem of tag preference...upon playing aAT1 and aCT3, the component would choose aBT5 as it is not from either of the last two artists played.
That's my idea. It's a bit complicated, but little bits of music seem to always be repeated no matter what method I use to prevent it. Maybe someone with mucho coding skills could step up and take this on?
Thoughts?
Cheers,
Sanfam