John’s iTunes Organization System

Please excuse the horrible formatting of the images for the time being. I’m looking to find a better layout template that properly handles images.

On November 21st, 2006, I started paring down my list of well over 20,000 collected MP3s to a manageable, organized system that would allow me to break out of my boredom with my iPod. I’d been listening to slapdash playlists since day one, almost two years prior, and I had decided that I wanted to set up a way to automatically generate playlists that I would listen to all the way through, and not skip over. This page gives a general overview of what I did to get my hands around the Beast that The Jobs Hath Wrought. Most of the information here is iTunes-specific but the principle is the same for most music library programs.

The key to all of this is iTunes’ Smart Playlist functionality. While I’m sure it exists in other library suites in a better capacity (that is, SQL-based, which would make sense for a FREAKING DATABASE OF MUSIC… ahem), you work with what ya got. And what ya get with iTunes is a really, REALLY gimped selection system. It’s my one gripe with the whole application, and the one thing which kept me from actually USING SPLs for the longest time. Anyway, enough complaining. My system relies on the Smart Playlists, coupled with the foldering capability in iTunes. Take a look at the basic setup:
The iTunes main page.
On the left, which is the important part, are the basic folders and SPLs that I created. Here’s a closer look at the major ones:
The playlists, close-up.
The two basic folders are “Defaults” and “Exceptions”. The core playlist, however, is the “Default” playlist, which is set up like so:
The Default Smart Playlist.
Let me explain the settings, in brief.

  1. Podcast is False: This prevents my podcast list– which is pretty big and pretty often updated– from interfering with my new music list. WARNING! This introduces a bug in the live-updating feature on an iPod, which does not acknowledge the “Podcast” flag except on the main menu.
  2. Kind does not contain Video, Movie, Book: This prevents non-MP3 or AAC files from eing put into the mix. I’ll manage video myself through a custom playlist. (Besides, I don’t like watching video on the itty-bitty screen.)
  3. Time is Greater than 0:59 and less than 14:00: This precludes too-short tracks and too-long tracks from consideration. I wanted to keep this to 10 minutes, but then I noticed that a lot of my extended-remix tracks were getting left out.
  4. Comment does not contain sfx: This is part of my tagging system, which I still haven’t quite worked out yet. Give me some time.
  5. Playlist is not Non-Music Collections, Exceptions: Pretty self-explanatory. You’ll notice that both “Non-Music Collections” and “Exceptions” are folder names, not playlist names. In the absence of a decent SQL engine this is the best way to create an OR-type query (I’ll explain below).
  6. No Limiting Set: We don’t want to limit anything here. We’ll do our sorting/seeding later.

With that done, let’s take a look at the other playlist in “Defaults”, “Permitted Exceptions”:
The Permitted Exceptions Smart Playlist.
I noticed that, of the tracks I was cubbyholing away into Exceptions, there were a few I really wanted to have in the random mix. However, they had to be really good, and I had to make sure that they would not compromise the reason behind having an “exceptions” list to begin with. So, as a result, only tracks with a four- or five-star rating will be exempt from being in the exceptions. (Naturally, you don’t have to do this yourself.)

iTunes has a built-in ratings system, where tracks can bear zero to five stars. These ratings can be set on-the-fly using the iPod itself, which is pretty much the core of my problem. See, I didn’t use the ratings system prior to any of this, so I had 20,000-odd tracks with no ratings at all. It looked like an insurmountable problem, and for a while, it was. But the good news is, I didn’t have to take them all on at one go. After setting up the Default and Exceptions, and seeding Exceptions with the stuff that I knew I didn’t want in the random bin, I had on the order of about 17,000 unrated tracks to handle. So, I set up the “Batch Needs Rating” list, shown below:
The Batch Needs Rating Smart Playlist.
The first thing you’ll notice is that the playlist relies on the “Last Skipped” and “Last Played” tags. While the iPod does a decent job of handling this, sometimes a skip will not get counted, and files will wind up “stuck” on the playlist if I decide I don’t want to hear or rate them right now.Most of the time, however, I’ll make a snap judgment on the song, rate it, and move on. The other thing to note is the playlist’s limiter. I initially set it to 500 songs, but after seeing that that would only be about 8 hours, I decided that 10% was enough for me. I haven’t yet reduced it, but actually I don’t think I will– as the number of tracks left to rate dwindles, I might eventually just put them all on the iPod and go from there. Finally, it’s not obvious on this page, but I have the playlist to sort by reverse selection order, meaning that new music, which is normally appended to the end of the list, shows up at the beginning. This makes it much easier for me to rate more music.

On the last day of the month, I make a static copy of the “Batch Needs Rating” playlist, and assign every track a rating of at least two stars (the default). Then I skim it over and upgrade/downgrade tracks that are obviously not two star tracks. This way I’m not stuck with the same set of music over and over again when I go to rate new stuff.

The ratings are as follows:
The list of ratings and what they signify (to me).
These ratings are, as with anything based on user preference, completely arbitrary and subject to change at any moment. They’re also more-or-less guidelines. Over time the 1-star rating has evolved from a “stuff I don’t want to hear often” into “stuff I don’t want to hear, period“. I’d delete these tracks, really, but some of them are part of albums, and I’d really rather delete as little as possible if I can get away with it. While the “Star Lists” folder has five SPLs selecting based solely on their star rating (and on being in the Defaults folder), “Star Lists, Not Recent” has five similar SPLs that just check against stuff played or skipped in the last week (the “Recents” folder) and cuts those out.

The ultimate goal is the “Daily Mix” playlist, shown below.
Putting together the Daily Mix lists.
It’s set up based on the following criteria:

To get the ratios set just right, I created four component lists, each selecting the required number of tracks randomly from the corresponding “Star Lists, Not Recent” list.

Naturally, iTunes won’t let you specify a folder to sync with an iPod, because the iPod doesn’t support folders. So, I had to create another SPL that just pulled from the folder I collected the component lists from, and made sure to specify the exact number of tracks I wanted, sorted randomly. The shown example, which has 200 tracks, is about 13 hours of music and roughly 850 MB. Which is just about perfect for a weekend trip at maximum.

Anyway, there were a few other nightmares I had to tackle in addition to getting everything rated. I not only had to face the fact that I had a lot of really crappy music that had no place on my hard drive, but that I had duplicates and stuff so horribly mislabeled that I thought I would never clear those out. Fortunately, iTunes for Mac has support for the AppleScript language, which allows fast and easy manipulation of Mac applications. I only wish something like this existed for the Windows folks out there reading this, though I’m sure that some Windows-based library programs offer the functionality out of the box that I had to, essentially, find hacks for iTunes for. I went over to Doug’s AppleScripts for iTunes and picked out a couple of the better ones, including “‘Title - Artist’ corrector”, “Proper English Capitalization”, and “Swap This With That”. (I also tweaked ‘Title - Artist’ to handle other separators and ordering.) One word of advice– if you’re going to run these scripts, try to do so on static playlists (not Smart Playlists); the Smart Playlist might try to update while the AppleScript is running, causing Bad Things to Happen.

Ultimately, I’m looking to be able to sort based on genre and metadata tags. That’s requiring a little bit more advanced mojo than I can muster right now, but it is something I want to do. For now, however, not being completely bored with my music is a step in the right direction.