I propose a new playlist type to be implemented in Mezzmo. I call it "Querylist" since it allows user to get a list of tracks that matches a dynamically build query. A querylist definition contains an unordered collection of fields in opposite to the active playlist where the collection of fields is hierarchical (ordered).

Lets see how it works...

First, we need to define what a querylist is made of. I select fields "Genre", "Artist" and "Album" for the demonstration purposes.

Now we can start consuming the media content. The media server presents me the following structure when I start browsing the fancy new querylist:

Code:
   by Album
   by Artist
   by Genre
   All
As you can see, Mezzmo returns a list of fields (prefixed with "by") for narrowing output. All fields from the querylist definition are available at the top level. The query criteria is empty in the beginning. I come back to the last item (All) later.

I proceed with "by Genre". Now the things are becoming interesting... Mezzmo will return a dynamically build list of genres to choose from:

Code:
    Classical
    Musical
    Rock
    ...
    [Unknown]
Since the query criteria is still empty, this list will be populated with all genres found from all tracks.

I select "Musical". Bang! We have got the first criteria (Genre = 'Musical') for our dynamic query.

The "[Unknown]" is special entry that represents a missing value (NULL in database vocabulary).

Mezzmo responds to the genre selection with this list:

Code:
   by Album
   by Artist
   All
This list of narrowing criterias does not have "by Genre" anymore. It was used at earlier stage.

I pick "by Artist" which leads to the dynamically build (with criteria: Genre = 'Musical') list of artists:

Code:
    Ann Duquesnay
    Leonard Bernstein
    Rita Abrams
    ...
This time, there will not be "[Unknown]" in the end because all tracks matching the criteria Genre = 'Musical' had artist defined.

I pick "Leonard Bernstein". Quess what, the query criteria has become as Genre = 'Musical' AND Artist = 'Leonard Bernstein', now. The media server responds with next selection list:

Code:
    by Album
    All
"by Genre" and "by Artist" are gone. Only "by Album" is left. I click on "by Album". The media server uses its dynamic query criteria to build the final selection list:

Code:
    ...
    West Side Story
    ...
That's good. I click on West Side Story and got what I wanted (all tracks from Leonard Bernstein's musical 'West Side Story'. The list of tracks was queried with criteria Genre = 'Musical' AND Artist = 'Leonard Bernstein' AND Album = 'West Side Story'.

OK. That was the process from top to bottom. What if I wish to use only some fields as query criteria? The mystical "All" entry serves as a stop criteria before all fields are consumed. It will return all (or first N matches, where N comes from querylist definition) tracks that meet the criteria collected to the point when "All" is selected. You may find some other word like "End", "Results", "Show" or "Stop" more appropriate.

A more usable (but also a bit slower to render) alternative is to list all tracks matching the criteria build up to the point in place of "All". Actually, I may prefer this latter alternative if performance does not become as bottleneck (which should not become bottleneck, I think).

You could also consider querylists as an evolutionary step from active playlists. Querylist will greatly reduce the need to create multitude of active playlist for different browsing orders. Plus it adds an option to prematurely stop to accumulate query criteria.