Somewhere in the transition from cartridge CD players to media players to iPod style-hard-drive based players to phones with media software, our developers have forgotten how to design media-playing software that actually serves the end consumer. I can say this safely having first encountered the Sansa Clip series that would occasionally repeat the same song, and my Sweetheart fights regularly with the iTunes player on her iPhone 6 Plus. Most media players seem to be feature-light, maybe in an attempt to get people to pay more money for pro-versions…or something.
Really, big media guys, it just looks like you give no fucks, and think your customer base are mindless consumer zombies.
So, in the interest of making shuffle functions on media-players work — in in the effort of writing something light today, I’m going to offer three suggestions for shuffle-play features I’d like to see:
Do not repeat a track for X tracks (or for Y time)
Somewhere we lost this. Old CD players would create a randomized playlist of all the available tracks. Recent devices don’t bother, and just pick a random number between one and the number of available tracks in the playlist, and if that means you hear Toto’s Africa three times in a row, then three times it is. Maybe it got difficult to keep a small array of which out of 3000 songs were played (3000 tracks = the average US iTunes library), but it should be pretty easy to keep a running record of the last X many songs (say fifty) songs and not play any of those.
The other version of this (which is slightly more sophisticated but easy to algorithmize* is to register all the songs played over the last Y minutes (say 120 minutes)** and what time they ended, and not repeat those that have been played within the set interim.
Allow the user to tweak the weight of each song for randomization
I assume this is what the rating value of songs is for, yes? (And if not, why is it there?). There are a number of settings that should be available.
• Exclude From Shuffle A binary option for each song that turns it off. Lecture notes, sound effects, stupid default songs and other extraneous files that might end up in your library can be turned off with this. These can be added to custom playlists manually, but would not otherwise get selected for a shuffle.
• Personal Rating Imagining the playlist randomizer as a big lottery, does a five-star song get five tickets for every one that a one-star song gets? Or only two tickets? Or twenty tickets? This would allow the user to define weight schedule for the whole star system. An even better system would allow the user to personally customize the formula to allow the user to define how ratings are treated at all.
• Time Weight This is a problem that comes up when you have really short media files (say ones that are three seconds long) right next to really long tracks (all 56 minutes of Beethoven’s Third Symphony). A typical random selection based on a file list would weight the three-second chime evenly with the Sinfonia Eroica. Time weight would increase (or decrease!) the likelihood that a long piece would be selected based over a short piece. Balanced (1.0) time weight would make each song as likely as it is long. (So a five-minute song would be five times as likely to be selected as a one minute song.)
Links, segments and remixes
Some songs are meant to be played together. The Sergent Peppers Lonely Hearts Club Band intro† should naturally segue into With a Little Help From My Friends. Golden Slumbers and Carry That Weight are really the same song, but usually they’re filed separately.
The player should be able to link two songs, so that they’re regarded as the same song. For the sake of selection, the algorithm regards both of them as one consolidated song, playing them in order.
Then, for those songs with tedious endings (The A Day In The Life CD version comes to mind), tracks could have trim notes, to start and end at non-zero times. (This would also allow the user to just cut to the good part.) A more advanced system would allow for an internal playlist of segments within the track to be played in order.
And that would take us to remixes. A remix is an artificial song, regarded as a separate song by the player software, but is an internal playlist of track segments. This could be used to separate Beethoven’s Third (above) into its individual movements, or to combine the good bits of multiple covers of the same song into one supercover.
One might even be able to create personal… well, remixes.
* That is to say, easy to work out the logic I’d use in coding it, even if I’m not sure which language I’d be programming it in.
** Last 4320 minutes for those of you who like 72-hour no-repeat marathons. You’ll need a minimum of (about) 1500 songs (averaging 185 seconds, each) to make that work well.
† Once again Universal Music Group hates people listening to culture they claim to own. This makes me sad.
Really, UMG, it just looks like you give no fucks, and think your customer base are mindless consumer zombies.
So much for today’s post being light.