Quote
spacerspacer

 Yet more listening to an entire library

Smart Playlists
redline
 
I currently have 5,500 tracks from my CD collection ripped. Of these, ~4,500 are things that I want to make sure are part of my normal play rotation. Finding a magic playlist that gives fair play time to all tracks while not neglecting others has been a challenge.

I began with a simple set of assumptions:
- Since it's in my CD collection I at least marginally like the music, so I can give everybody a default "Star" value of 3
- Listening 24/7 it would take me 15 days, 15 hours, 53 minutes to play each track, so whatever rules are used will need to explude a played track for at least 2X that time (since I won't be listening 24x7)
- I will prefer listening to unplayed (or infrequently played) tracks rather than often played tracks
- I will need a fast way to tell iTunes (and my iPod) never to play a track again

My first attempt at a Smart Playlist that will churn my library while keeping in mind my wants/assumptions looked like this:

Last Played is not in the last 1 months
Match only checked songs
Live updating


This would exclude any played track from consideration for one month, would ignore any track that I unchecked, and would take care of managing the list automatically (important since I travel a lot and do not have access to iTunes for weeks at a time).

After one month of heavy use this left me with a queue of songs taht could be considered for playing of ~1,500 tracks. ~100 tracks a day would fall out of the list while another ~100 would come back into the list.

The system was working, except now tracks that had been played one time had 1:1500 chance of being played while a track that had never been played also had a 1:1500 chance. While statistically low for any individual track, as more no longer black-listed tracks fell into the queue the unplayed tracks were increasingly ignored in favor of tracks I had already listened to.

With the release of iTunes 4.5 I can easily weight the playlist in favor of infrequently played (or unplayed) tracks by a simple modification to the existing Smart Playlist (Did this exist in earlier iTunes releases?):

Last Played is not in the last 1 months
Limit to 500 songs selected by Least often played
Match only checked songs
Live updating


Since my normal queue size is ~1,500, this limits that queue to the least played 1:3 of tracks that have not been played in the last month. This will compensate for when frequetly played tracks fall back into the queue since iTunes will now exclude a track played 6 times in favor of a track that has been played 2 times.

With iTunes 4.5's ability to have Smart Playlists refer to other smart playlists I can also being creating refined lists without having to recreate the same set of rules multiple times. Let's call the first Smart Playlist "Churn", blacklist tracks for two weeks, and not limit its size. I have shortened the blacklist period since the way we'll use this queue later we will need a large queue of tracks:

Last Played is not in the last 2 weeks
Match only checked songs
Live updating


I can then create additional playlists like:

Playlist is Churn
Genre does not contain Blues
Genre does not contain Reggae
Limit to 500 songs selected by Least often played
Match only checked songs
Live updating


The Smart Playlist Churn will now blacklist tracks played within the last month and create a queue of tracks ~3,000 in size. This queue is now filtered by this Smart Playlist to exlude Blues and Reggae, and to prefer infrequently played tracks over frequently played tracks.

I can also reuse Churn in other Smart Playlists to make sure that regardless of my listening tastes at this moment I will continue to get tracks that are not overplayed:

Playlist is Churn
Track Number is less than 2
Limit to 10 songs selected by least often played
Match only checked songs
Live updating


Etc.

Since I have also been refining my song ratings (see my assumptions early on) I can also begin using the nesting capabilities of iTunes 4.5 to favor both infrequently played tracks AND higher rated tracks by running the above filters through an additional stage. Let's take our Blues and Reggae example and call it !BluesReg and increase its size restriction to 1000 (so that it returns a larger queue of tracks for later filters):

Playlist is !BluesReg
Limit to 500 songs selected by highest rated
Match only checked songs
Live updating


Now when this Smart Playlist is used the tracks will run through this filter:

Last played longer than two weeks ago, is not Blues or Reggae, is infrequently played, and is higher rated rather than lower rated.

Given these four tracks:

Venus(Stark)                 **** 15/01/04
Cotton_Fields(Pogues)        ***  28/04/04
Yancey's_Blues(Jimmy Yancey) ***  01/01/04
Low(R.E.M.)                  **   13/02/04


Cotton_Fields(Pogues) will be eliminated since it has been played in the last two weeks, Yancey's_Blues(Jimmy Yancey) will be eliminated since it is in the Blues genre. Venus(Start) and Low(R.E.M.) will make it to the final play queue. If that queue was restricted to only one song then Venus(Stark) would be selected since it is rated higher than Low(R.E.M.).

It is, indeed, time to start outsmarting your music collection.


by DzM on May 04 | 8:00 am
redline


Comments

I've found a flaw in this.

While it works very well when playing tracks through iTunes, this does not work as well when the playlists are transferred to the iPod. The iPod does not make nested smart playlists "live update" - so when using this mechanism through iTunes the just played song is flushed and backfilled with a new track. On the iPod the list is static in nature. While this is fine if you give yourself a large enough queue of tracks (500 tracks is what I whiddle down do, and that will hold me for 32 hours of straight play), it begins to break down if you have a long period of time without docking (a week or two of travel would very quickly exhaust the restricted playlist).

Sooooo ... I continue to push an older style "not played in the last" playlist in addition to the static 500 playlist. Thus if I'm on the road for a period of time I still churn the library, though not with the same amount of intelligence that I achieve when I'm at my computer.


by DzM on May 11 | 2:06 pm

Great post, DzM, but I have a couple of questions. Reminds of of trundling through my old Calculus text book and wondering, "how did they get from this first line to this next line as they're solving the equation?"

First, you mention that you have about 5500 tracks in your library; 4500 are "listenable".

A bit farther down, after applying the "not in the last 1 months" playlist, you say, "after 1 month of heavy use this leaves me with a queue of songs that could be considered for playing of 1500 tracks". After re-reading a couple of times & noticing that you mentioned your "consumption" was about 100 songs/day, I think you came up with the 1500 track figure by:

4500 "listenable" tracks - (30 days * 100 blacklisted songs/day) = 1500

Is that correct?

You go on to say that "the system was working, except now tracks that had been played one time had 1:1500 chance of being played while a track that had never been played also had a 1:1500 chance. ". Couldn't figure that one out...seems to me that songs that had been played once would have a 100:3000:1500 chance (100 songs that were no longer in the 1 month play window chosen out of the 3000 that were still in the window, chosen out of the 1500 non-blacklisted songs). Did I mention that I routinely got "D"s in my many, many college math classes? :)

Now, here's where I really get lost. When you first integrate the playlist "Churn":

Playlist is Churn
Track Number is less than 2
Limit to 10 songs selected by least often played
Match only checked songs
Live updating

in this playlist:

Playlist is Churn
Genre does not contain Blues
Genre does not contain Reggae
Limit to 500 songs selected by Least often played
Match only checked songs
Live updating

You go on to say the aggregate playlist will blacklist songs played within the last month...isn't it really two weeks?

Not trying to nit-pick here, just trying to make sure I understand where you're coming from. I have been trying to achieve the same resulton my own, and you've clearly put a lot of effort and thought into this. In my younger days, this is something that my friends and I would have worked out on bar napkins at Chi-Chi's over a few Dos XXs...


by rmbracalente on May 28 | 1:40 am

<this part wouldn't fit in the previous post...>

P.S. - I think a great way to solve the IPod not updatiting the "last played" field would be to 1) at synch time, update the last played" field with the current date (ie the date of the sync) and, alternately, 2) allow this to be a user-definable field that could be modifed via Applescript for those so inclined.


by rmbracalente on May 28 | 1:41 am

You must be logged in to post comments.

  USERS  
  Log-In  
  Register  

try this
red line
 
 


comments
red line
 
 
red line
sites we like
red line
 
 

XML/RSS Feed

Powered by pMachine