ITunes, another media player, another attribute based filtering mechanism for dynamic playlists. And another solution to how you let people create complicated queries yet hide the complexity.
The Smart playlist UI in ITunes starts out much like other players letting you pick an attribute, operator, and type or pick an operand.
ITunes is different form other players however when you add more than one criteria. The top part of the dialog changes from “match the following rule” to “Match all/any the following rules” wich is of course shorthand for “AND all the rules together” or “OR all the rules together”.
Assume we saved the playlist in the above picture as “All music above 1 or 2”. It would simply show us every song in our library not rated either 1 or 2 including unrated songs. Useful, but a little broad.
If we want to create a playlist of all Metal that is either unrated or rated above 2 stars we could not do that with matching either ALL or ANY of the criteria. If we chose all we would ask to skip songs that were rated both 1 and 2 stars and were of the genre Metal. Clearly an empty list because a song cannot be rated both 1 and 2. If on the other hand we OR them all together we would get all music because songs rated 1 would not be rated 2 and the other way around.
To overcome this problem without compromising the simplicity of the UI ITunes has introduced one of my favorite features when it comes to filtering in media players: The ability to use a playlist as a criteria in another playlist:
This is a bit of a crazy feature, but very cool once you understand it. Each playlist essentially works as a reusable group of criteria which allows us to get our Metal playlist without the songs we have rated 1 or 2 stars:
I would expect people to object to this idea of reusable playlists as being a strange or silly solution to the problem and I would not be surprised if someone brought forth the argument that it is convoluted and that there must be a better solution.
I personally think it is elegant and powerful. And useful in enterprise scenarios. Imagine that you were running a campaign targeting large companies in different countries. In Denmark a large company may be defined as one with more than 5.000 employees while large in the US may be defined as companies with at least 15.000 employees. With reusable criteria you could define “large Danish companies” and “large US companies” as separate playlists and reuse them in queries about your past sales, you current open orders, overdue invoices and so forth.
Next up is Zune. A limited/focused solution (pick your point of view) that in my mind is the most elegant solution so far.