Implementing "Play higher rated songs more often" in iTunes 11

I think I've found a solution. It's not perfect, but it's pretty close to the old behavior.

My goal:

  • Play recently-added songs most often;
  • Also include a selection of older songs;
  • Play higher rated songs of each set more often;
  • Only play un-checked or un-rated songs if they are recent.

I used to be able to accomplish this with 2 playlists. Now I need 11.

To make ratings mean anything, you need one playlist for each rating level, weighted accordingly. I gave 1 through 5 stars the weights of 12%, 16%, 20%, 24% and 28% respectively. I pulled that out of my butt, but it seems sensible. So if you wanted to end up with 250 songs, weighted, you'd need playlists of 30, 40, 50, 60 and 70 songs, respectively. Likewise, 750 songs is 90, 120, 150, 180 and 210.

Create playlists like so:

  1. File / New / Smart Playlist: "Shufflable"
    (This one is for the settings common to all sub-playlists.)

    • Kind • is • MPEG audio file
    • Media Kind • is not • Podcast
    • Last Played • not in the last • 7 • days
    • Last Skipped • not in the last • 14 • days
    • Playlist • is not • "Bored with"       ← or whatever
    • Match unchecked items
    • Live updating

  2. File / New Folder / "75% Recent, 25% Library"

  3. Make the five "25% Library, 250 tracks" sub-playlists inside that folder:

    1. File / New Smart Playlist / Library 30 ★
      • Playlist • is • Shufflable
      • Rating • is • ★
      • Limit to • 30 • items • selected by • random
      • Match only checked items
      • Live updating

    2. File / New Smart Playlist / Library 40 ★★
      • Playlist • is • Shufflable
      • Rating • is • ★★
      • Limit to • 40 • items • selected by • random
      • Match only checked items
      • Live updating

    3. File / New Smart Playlist / Library 50 ★★★
      • Playlist • is • Shufflable
      • Rating • is • ★★★
      • Limit to • 50 • items • selected by • random
      • Match only checked items
      • Live updating

    4. File / New Smart Playlist / Library 60 ★★★★
      • Playlist • is • Shufflable
      • Rating • is • ★★★★
      • Limit to • 60 • items • selected by • random
      • Match only checked items
      • Live updating

    5. File / New Smart Playlist / Library 70 ★★★★★
      • Playlist • is • Shufflable
      • Rating • is • ★★★★★
      • Limit to • 70 • items • selected by • random
      • Match only checked items
      • Live updating

  4. Make the five "75% Recent, 750 tracks" sub-playlists inside the same folder:

    1. File / New Smart Playlist / Recent 90 ★
      • Playlist • is • Shufflable
      • Rating • is less than • ★★     ← include both ★ and ☆
      • Limit to • 90 • items • selected by • most recently added
      • Match unchecked items         ← include un-checked
      • Live updating

    2. File / New Smart Playlist / Recent 120 ★★
      • Playlist • is • Shufflable
      • Rating • is • ★★
      • Limit to • 120 • items • selected by • most recently added
      • Match only checked items
      • Live updating

    3. File / New Smart Playlist / Recent 150 ★★★
      • Playlist • is • Shufflable
      • Rating • is • ★★★
      • Limit to • 150 • items • selected by • most recently added
      • Match only checked items
      • Live updating

    4. File / New Smart Playlist / Recent 180 ★★★★
      • Playlist • is • Shufflable
      • Rating • is • ★★★★
      • Limit to • 180 • items • selected by • most recently added
      • Match only checked items
      • Live updating

    5. File / New Smart Playlist / Recent 210 ★★★★★
      • Playlist • is • Shufflable
      • Rating • is • ★★★★★
      • Limit to • 210 • items • selected by • most recently added
      • Match only checked items
      • Live updating

That's a stupid amount of work, right? Well, you can save yourself some effort with strategic use of "Duplicate Playlist". It would be nice if I could just export an XML file of the playlist rules for you folks to import, but that doesn't work (it exports the current set of tracks instead). And you can't create smart playlists from Applescript either.

And after all that, if you set "Up Next" in the iTunes Mini-Player to the playlist-folder "75% Recent, 25% Library" (by clicking on the magic shuffle dingus), you should have reasonable things happen.


Update: Now here's how it fails.

  • Let's say you haven't bought music in a while, or haven't rated too many things with five stars lately. That "Recent 210 ★★★★★" playlist might have a couple hundred tracks in it that aren't really very "recent". You might choose to also limit that playlist (and the other "recent" playlists) to "Date added • in the last • 12 months" to keep only recent-ish highly-rated tracks in it -- but now the carefully-chosen ratios will be out of whack, and your recent five-star songs might actually end up being played less often than your more-numerous recent three-star songs.
  • Often, even though the Mini-Player is set to shuffle from the "75% Recent 25% Library" playlist folder, it will play six or ten songs in a row by the same band! All of these tracks are present in the playlist, but with a thousand tracks in the playlist it's statistically impossible for this to happen as often as it does if they were truly being chosen randomly. I have no idea what it's doing. The queued tracks are in non-alphabetical order. The chosen column for sorting in the sub-playlists doesn't seem to affect it, but it's hard to test. It's as if iTunes went out of its way to do the stupidest possible thing.

This is all bullshit, and it sucks.


Previously, previously, previously, previously.

Tags: , , , ,

15 Responses:

  1. We have all seen the problems that crop up after every upgrade, as well as your frankly heroic attempts to bring these suddenly rogue programs back to a sane default. Itunes in your case seems to be the worst offender, would it be out of line to suggest looking at third party alternatives? Or is Itunes a must have for you?

    • jwz says:

      The only alternatives to iTunes that I've ever heard of have the stench of the Linux Self-Abuse Kit on them, which means that without even trying them, I can say with near-100% certainty that they're even worse.

      Any other alternatives are going to be "cloud" crap for people who think that re-renting their music over and over again is sane.

      • When it comes to "cloud" I can't agree more and I'm one of the assholes that builds them from the ground up. I don't mind having a mirror in networked storage however I like to be able to do thing with my computer when the local internet provider has screwed the proverbial pooch, and I really don't like having to have a license to use something I already bought.

        Once I would have argued with you about open source but I've come to realize it will always be held back by constant reinvention and dick measuring amongst the few developers who have a cult of personality going.

        I am still naive enough to believe it could be something wonderful but it's not, and maybe it wont ever be.

        These are the alternatives I came across that seem to meet your criteria not sure if they have the pre upgrade shuffle or not but perhaps they are worth spending a whole five minutes reviewing them, or not.

        Best of the bunch appears to be this one.
        http://pixiapps.com/ecouteosx/

        Next up this seems to be all about social integration which I don't care for, but you do seem to share your taste in music with us.
        http://www.tomahawk-player.org/

        Touts tagging and responsiveness with large libraries, both of which are things I would say you care about.
        http://swinsian.com/

      • taiganaut says:

        I'm actually stuck with iTunes to this day, despite loathing a lot of things about it, because it is still the only player with smart playlist capability which allows me to do things like jwz describes above. All the Linux-based and/or FOSS alternatives fall short in some critical way.

        I have an "Uberliste" which does similar things - plays my favorites a lot, but rotates less-favorite music that I haven't heard in a long time in as well, and also rotates unrated music in so I don't forget my downloads, and discover new music almost passively after adding it to my library. It works well for me, but requires multiple levels of Smart Playlist nesting.

        I'm currently diving music by energy level (high, mid, chill, chillest) and attribute (organic, amplified, electronic, spacey, twangy) such that I can develop a party playlist right for any crowd or an expected-type playlist for myself. In the "Uberliste" I often have e.g. Type O Negative pop up right behind Sufjan Stevens which makes for interesting times at home by myself, but is weird with guests and sometimes weird for me too.

        Currently this appears to require creation of, at a lower level in the nesting, some 2^n sets of playlists all with equal "chunk sizes" that I can then additively mix to create, say, a chill to mid-energy mix of all organic and amplified, but with only a bit of twang mixed in.

      • Ryan says:

        Without a full understanding of your needs/likes (and I know how much you tend to hate recommendations), my favorite player by far is http://www.clementine-player.org (which is admittedly based on a Linux app, but I've found it to not be fiddly at all and is easy to install and use despite that legacy).

        I use it because it's nice and fast and supports files mode, so I can't speak to the playlist capabilities, but the homepage touts smarts and dynamism there, so it's possible it could scratch an itch.

  2. nooj says:

    This is shrewd, I like it. I recently had to upgrade to 11; I'm going to try it out!

  3. Ben says:

    I did the same thing, though mine uses 19 different playlists. I've been using it for quite a few years now, mine predated the newly missing functionality that you're trying to replace. Mine plays higher rated stuff more often, but in two major categories: tracks with low play counts, implying newness but not requiring it; and tracks that haven't been played in a long time.

    Your approach of newness and randomness is interesting. The downside is that by the nature of randomness there will be tracks that don't get played for a decade. Last month I crossed the day when every track had been played at least once in 2013.

    • taiganaut says:

      Yeah, my solution doesn't take newness into account, but takes "haven't listened in a long time," ratings (higher rated = rotate more often), into account, and then throws in a small amount of randomly selected unrated music, or music that seems to not be getting skipped that's unrated, on the suspicion I like it and forgot to rate it.

  4. crowding says:

    I've done similar things, but have the difficulty that "random" smart playlists don't update refresh when your library changes, you have to go though each random playlist and delete their contents to get them to refresh. Do you have a solution for that?

    • jwz says:

      I hadn't noticed that. You can force a playlist to re-randomize by deleting all the tracks in it manually, so maybe that works from AppleScript too?

    • taiganaut says:

      Make sure the "live updating" box is checked. I do not often have this problem in iTunes 11, though I did notice this weekend that "live updating" playlists that have a "not played in the last..." rule only seem to update on the hour.

      • taiganaut says:

        Er, sorry, on the hour unless they are being actively played in which case the update is near-immediate (up to about 1s lag on a 16,000 track library).

  5. hellpe says:

    I used to be able to accomplish this with 2 playlists. Now I need 11.

    Just out of curiosity, how did you do that? I've never used a "smart playlist" feature before, and it seems that the iTunes 10 implementation is still very much missed even 1 year after its disappearance. I'm just wondering how it used to work.

    • jwz says:

      Basically the C and D steps above were one playlist each, without the per-star sub-playlists, because "play higher-rated songs more often" was built-in behavior.

      The iTunes 10 behavior was this: there was a special playlist called "iTunes DJ" that always showed 5 previously-played and 10 not-yet-played songs (configurable) drawn at random from a playlist of your choice, optionally weighted by stars. The context menu on each track throughout the UI had "Add to iTunes DJ" and "Play next in iTunes DJ" commands (add to front or back of queue). If you deleted things manually from iTunes DJ, it would select new ones to repopulate the queue back up to 10 or whatever.

      Plus, you could configure is so that anyone using the Remote.app on iOS could anonymously request songs. They'd see your track listing (and you could also restrict that to a particular playlist) and they could vote tracks up or down. Tracks with >0 votes were added to the front of the iTunes DJ queue.

      So I would almost never play a playlist by selecting it and clicking play. Instead I would set it as the source to iTunes DJ and play it from there, because that left you with the option of one-off plays of other songs as well, and having it revert back when that was done.

      This is kinda how the "Up next From" feature of the iTunes 11 Mini-Player works, except that A) it's less obvious and discoverable now; B) the Mini-Player seems to fall out of "Up Next From" mode if you even look at it cross-eyed; C) there's no "higher rated more often" option; D) there's no longer a "let other people in the room vote on songs" feature. So yeah, it's pretty much the same, except for the really useful features that they removed and how the UI is crummier now!

  6. RickB says:

    Thanks for sharing this. I've been using it for 2 weeks now, and it's transformed iTunes into a usable DJ. The mix of good/unfamiliar works really well. I can work for hours without having to skip/change/futz. Another fine contribution to the nerdosphere.