Heisenberg (programmatic) music shuffle feature request

As a feature request for Plexamp specifically, but any Plex player generally, I’d like to ask for a programmatic shuffle, where each song from a playlist is evaluated against some filter logic as it’s added to the queue. The goal is to create a quasi random queue of songs that go together, but avoids clumps of songs that don’t feel random. For example, the playlist level would select the pool of tracks to play from like it does today. Then the shuffle filters would build a queue like:

Track last queued OVER 4 weeks →

(Artist name begins with “Various”

OR

(Artist name is NOT “Various Artists”

AND

Artist last queued OVER 4 days)) →

Track queue is LESS THAN 12 hours →

Sweet Fade →

Add track to queue

The key is that each song in the queue has been evaluated against the previously queued songs to ensure that clumps are broken up. There may come a point while building the queue where the logic breaks and nothing can be queued, but as songs are played and time passes, more songs are added back into the pool to select from. Using this method, there are lots of other ways to build quasi random shuffles that would be fun to experiment with. I also think this feature would be best hosted on the client side. This way it could be applied to downloaded files.

2 Likes

I think it’s an interesting idea! I’m not sure I understand your examples that well, and why a typical smart playlist couldn’t do much of this. We also don’t have data like “last queued OVER 4 days” but we do have “last PLAYED over 4 days ago”.

I’m using the smart playlist, and it doesn’t work the same way as I’m proposing. The act of including a song on the playlist doesn’t re-evaluate the library against the logic. That logic is only called once, when the playlist is refreshed. Without the re-evaluation per song, you can get chunks of songs from the same artist (for example) that otherwise wouldn’t be picked for a while. I suppose if the playlist were only one song deep, “last played” would work because that field would have just been updated. But a one-song-deep playlist has other limitations. I used the “queued” term to differentiate the song state, implying “set to be played” instead of “has been played”.

Yes, that is true. We hope to allow doing something like “group by artist” in the future which would prevent an artist from appearing twice. I know it’s still not the same as what you’re proposing, and I am intrigued by the notion of a player-side eval on the queue.

While we’re on the subject of shuffling, there are other UI tools that may be useful:

  • an easy server interface to view and reset last played dates on a per-library, per-user or per-client basis
  • Forcing a number of songs to play in sequence when they’re added to a playlist (Pink Floyd is a good example of an artist that breaks up tracks that should go together)
  • Grouping an artist and their bands to filter them together (Phil Collins and Genesis, Don Henley and The Eagles, etc.)