Sunday, March 1, 2009

Playlists in WinAmp –On Filtering

WinAmp provides a typical attribute based filtering mechanism for creating smart playlists. But instead of just starting you off on your own, WinAmp does include a set of pre-canned queries that can help get you started.

WinAmpViewStart

If however, we dive into the custom filtering we get the standard 3 step filter design of

  1. Pick an attribute
  2. Pick an operator
  3. Write an operand

And we get to put AND’s and OR’s between the criteria. Lovely.

WinAmpViewBuildingSimple

In the above example the default OR will get us all Metal regardless of rating, all music rated at least 3 and all music from artists such as Manowar beginning with ‘Man’. That is a pretty broad playlist :)

The Advanced Mode

As with most old school attribute based filtering designs there is an advanced mode that lets you just plainly type a query into a textbox complete with its own syntax and all the other goodness that can be pulled out of the database.

WInAmpViewAdvanced1

WInAmpViewAdvanced2

The Query Builder

To help you compose the query WinAmp even has a query builder that has some interesting properties.

Lets create the a playlist that gives us songs by NOFX, Offspring or Bad Religion that are rated 3 or more.

First we create the criteria for NOFX

WinAmpQuery1

and then we add '”Off” and OR it to the previous criteria

WinAmpQuery2

which will interestingly put a set of parenthesis around the two criteria.

WinAmpQuery3

As you add another criteria with OR WinAmp will add yet another grouping making it

(((A has NOFX) OR (A has Off)) OR (A has Bad)

which is equivalent to

((A has NOFX) OR (A has Off) OR (A has Bad))

WinAmpQuery4However, when you AND a criteria WinAmp does not add a grouping

What works and what doesn’t work?

Ultimately we are going to see that for most filters it makes sense to OR and group criteria on the same attribute and AND criteria for different attributes. In other words, as long as we know what we are doing and are doing it sequentially, WinAmp does the right thing. As long as we are making criteria for Albumartist and we are OR’ing them together, WinAmp is right in grouping them. And when add a criteria from another attribute, in this case rating, and AND it to the query it should not be grouped in with the previous criteria.

If however we added NOFX and Offspring first, then AND’ed the rating of 3 and then finally OR’ed Bad Religion we would get

((NOFX OR Offspring) AND rating =< 3) OR (Bad Religion)

Which would include all songs by Bad Religion and not only the 3 or above rated songs. To change that we would have to remove the grouping around the rating and the first two artists.

The templates in the first screenshot like ‘recently played’, ‘Audio by genre’ or ‘60’ies music’ are also good ways of circumventing the fundamental problem with this design namely that you really need to know what you are doing in order to use it properly. And when all is said and done, I quite frankly find the automatic grouping more help in the advanced version than the lack of grouping in the supposedly simple version.

The only truly great thing about this design is that it is easy to share a smart playlist with a friend or on your blog by simply copying the full string. This kind of easy sharing is something that most filter solutions should include.

What’s next?

Next we will be looking at the query interfaces of Windows Media Player, Itunes, and Zune. All three have worked hard on the usability of their solutions and I think there are some mistakes worth learning from in Windows Media Player, some interesting ideas in Itunes and some great things to copy from Zune.

3 comments: