Feature description:
Symfonium and other good music clients have lots of ways to add tracks to a play queue: playlists, shuffles, radios, mixes, DJs…
The feature I am requesting is not related to how tracks get into the play queue. It is a filter that decides which tracks on the play queue get dequeued and played and which never get played.
The filter definition would look very similar to a smart playlist definition.
If a track in the pay queue matches a line/block in the filter then it is dropped from the queue, with an optional probability of drop.
So you could have a filter definition like this (each line is tested separately so there is an implied OR across the entire filter.
Artist is Celine Dion drop percentage 100%
Track rating is 0 drop percentage 25%
Track rating is 1 drop percentage 100%
Track rating is 2 drop percentage 100%
Track rating is 3 drop percentage 100%
Track Rating is 4 drop percentage 75%
Track Rating is 5 drop percentage 50%
Last Played Within 2 days drop percentage 100%
Last Played Within 10 days drop percentage 50%
A Dequeue filter would be applied to a queue in a similar fashion to applying a smart flow.
Tracks that are to be dropped should be removed from the queue before downloading or pre-caching so as not to waste bandwidth or delay pre-caching of tracks that are actually going to be played.
Problem solved:
I believe that if the definition is general enough, many use cases will emerge.
My particular use case is based around how track rating affects random play. No music player I know of has a good way of handling this.
The desired result is to be able to control the proportion of low rated vs high rated vs unrated tracks that crop up.
Smart playlists do not cut it because they are deterministic in their behaviour and in any case, we want to be able to influence queues generated by other pseudo-random or automated queue generation methods. Some players have concepts like smart shuffle which apply some developer-defined idea of what track ratings mean. This does not work for three reasons: (a) everyone has a different take on the meaning of track ratings. (b) What happens is heavily influenced by the proporion of rated vs unrated tracks and the rating distribution in the library and actual output varies widely depending on relative proportions of track ratings in the library. (c) They tend to be opaque, poorly documented and unconfigurable.
Being able to define and apply dequeue filters to the output of any queue generation mechanism would give the user the power to adjust the mix based on the semantics they apply to track ratings and the ratings mix in their libraries.
Brought benefits:
Nobody else does this. This would make you a legend.
To my mind this would definitively solve the problem of how to make track ratings influence what you hear. Users could define a set of different filters and apply the one they currently wanted to their queue.
Furthermore, it would allow users to make other adjustments based on quirks in their library and quirks in their taste.
For example I have nearly 1000 tracks from Ofra Haza in my library. This means that any queue generation technique I use that allows Ofra Haza to be played plays a lot of Ofra Haza. I don’t like this but neither do I want to delete half the Ofra Haza albums, nor do I want to totally exclude Ofra Haza from play. I like Ofra Haza. With this feature I could just say “drop half the Ofra Haza tracks”.
Other application solutions:
Nobody does this. It would make you a legend.
Additional description and context:
It would be possible to define filters that produce nonsensical/perverse results.
I do not see this as a huge problem. With Symfonium you seem to have taken the philosophy of putting power in the hands of users and letting them hang themselves if they want, and hit the reset to defaults button if they paint themselves into a corner. I like that.
Screenshots / Mockup: