Shuffle is broke, but instead if complaining, here are my thoughts on a unique shuffle algorithm that follows the media, no matter what playlist it is in.
I feel it should be a revolving modifier of 3 cycles.
Each time the media is played, it moves into the next cycle.
Each cycle it progresses through, it loses probability of being played again.
After the 3rd cycle, the media gains the original probability rate.
Every media’s probability rate is tracked individually, this way a shuffle one playlist carries over to another playlist. For example you shuffle in a SpongeBob Squarepants playlist, the likelihood of seeing the same episode too recently in your cartoon playlist would be low.
A media file will have metadata similar to the following: RotationCount - 1, 2, or 3 (3 being the original rotation)
Adding to probability, a user can choose to shuffle with a higher probability based on the media’s user/critic rating. Making more popular Songs/ TV Show Episodes/Movies more likely play.
This could be tracked by: RatingModifier - 0, 1, 2, 3, 4 (4 being the highest).
The RatingModifier can be toggled by user preference, which could be tracked by: RatingModifierStatus - True, False (Boolean)
The likelihood of a media file to play would be based on a score.
This score would be calculated by RotationCount, and RatingModifier.
A calculation would look like the following:
RotationCount = 3
RatingModifier = 2
RatingModifierStatus = True
if RatingModifierStatus = False
RatingModifier = 0
Probability = RotationCount + RatingModifier
In this scenario this media item would have a score of 5.
Each media item in the playlist is then built into a temporary list, duplicated x Probability.
So in the above example the media would appear 5x in the temp list.
This list is then shuffled.
Now the shuffle Que list is built off of the temporary list in order.
The list can be built with duplicates or without duplicates, base on the user’s preference. This could be tracked by: DuplicateStatus - True, False (Boolean)
Can anyone else think of a different approach, or another variable to consider to increase or decrease probability?
I really hope you really like my unique approach to shuffling a playlist, that can carry across every playlist.