I have a rather extensive collection of digital music on my computer. What I would like to do is to play songs from it randomly but without replacement. That is, if I hear a song once I don’t want to hear it again until the player has played every other cut in the collection. I would also like to do this even if I close the Media Player. If I close it and open it again I want it to pick up where it left off, not start over again picking songs randomly from the whole list.
I usually use VLC Media Player, but I also have Windows Media Player. Both are frustratingly uninformative about how they handle random play of playlists. I believe that they both play randomly with replacement, that is, any song is equally likely to be played next, even if it’s recently been played. My perception is that I hear certain songs over and over again, and others almost never. (However, I know that evaluating whether something comes up more or less frequently from a random list can be difficult.)
Does anyone know how these Media Players actually determine their random order, and whether that can be altered? (I have looked around under Tools/Preferences and so forth. If there’s info there it’s well hidden.) Is there some other Media Player that has the capability I am looking for?
This is a very common complaint, but addressed somewhat haphazardly by the programmers. It seems to be a recurring issue on the VLC bug trackers, but I’m not sure if they ever fixed it.
One old-school player, Foobar2000, explicitly addresses this with different modes (shuffle vs random). Maybe give that a try?
I’ve been annoyed by this too. I found a solution using MediaMonkey. Instead of setting Shuffle on, load a playlist (it doesn’t have to be a predfined play list. I usually right-click my desired genre and choose Play Now. That loads all the songs in that genre into the current playlist.
Then, in the Now Playing window, at the bottom, click the Edit item. One of the options in the resulting menu is Randomize List. This is the key to this. Every time you click this, it will randomize all of the songs in the Now Playing window. It will then play every song once, in the now randomized order. I usually click Randomize List several times to get everything nice and mixed–like shuffling a deck of cards.
The other nice things, as you requested, is when you shut down the player and restart it, it retains the last randomized order and picks up at the last song played.
Not exactly the behavior you’re asking for, but in iTunes you can set up a Smart Playlist that will exclude tracks that have been played within a specified number of days in the past.
I remember reading some time ago that Apple had to change their shuffle algorithm to prevent several tracks from the same artist playing one after the other - as would be possible in a truly random shuffle.
In JRiver Media Center, if you add “everything” to a playlist, then randomize and play that list, it will not repeat anything.
There is also a rules engine. You can make a “remove duplicates” rule which you can setup, to remove from a playlist (duplicate artist, duplicate song name, duplicate album, duplicate composer, any other tag or any combination of tags).
To do the fancy removes, you have to use the rules engine, there’s no simple ‘one button’ setting. The rules engine is powerful and there’s a bit of learning curve. If you really get fancy you can use regular expressions in the rules, to match your playlist entries.
It’s not a perfect fix, but if your media players have an iTunes equivalent to “smart” lists, you can set it so that it doesn’t play songs you’ve heard in the last x days. This has been a good fix for one of my favorite play lists. It contains about 120 hours of music, and I set it so that I won’t hear anything that’s been played in the last month. At the amount I use that list, it actually doesn’t fulfill the original request perfectly, but it solves the issue of getting a song from yesterday played again today.
For the record, iTunes is random without replacement for as long as iTunes is running. If you close the application, though, it’ll start over by picking randomly from the entire play list. For small play lists (like a single album) this means you hear each song once and then it stops.
You don’t have to use regular expressions. There’re a lot of “rules atoms” built in, so you can easily say “songs older than 1974” or “songs from this list of genres/artists” or “Songs I’ve rated 3 or more stars”. But the rules can come in handy if you want to get geeky.
“Playing music randomly but without replacement using Media Players” The easiest way to implement this is to make a list of all tracks, randomize that, then play in that order.
When you’ve got 20,000+ tracks, that can take a while, and I suspect programmers are averse to having people complain about slow software.
I’ve written a picture slideshow viewer that works this way, and it’s amazing what a difference it makes in perception of the size of the library.
It’s like fermions vs bosons.