I'll try!
I have a bunch of different views that show the current track against various sets of data: the entire library, artists of the same genre, my favourite artist (Yes) so that I can make strong comparative ratings, the artist's other tracks and the new one all tracks of the same name.
The final view (above) is a combination of a few smartlists and there are a number of distinct parts to the view. I'll document my view that pulls tracks of the same genre as the one playing.
First, I have set up a user library field called IsPlayingNow, which contains the expression:
=isplaying()
It simply returns a 1 or 0 but allows the isplaying() function to be used in smartlists, eg to create a sublist containing only the playing track as you will see.
The 'Playing' column is an expression column with the following expression:
if(isequal(isplaying(),1),>>>>>>,)
The final view is:
([IsPlayingNow]=[1] or playlistid==1) ~sort=[My Rating]-d
smartlist 1 is:
playlistid==2 ~mix=20,10,[my rating]=10,18%,[my rating]=9,16%,[my rating]=8,14%,[my rating]=7,12%,[my rating]=6,10%,[my rating]=5,8%,[my rating]=4,6%,[my rating]=3,4%,[my rating]=2,2%,[my rating]=1 ~sort=[My Rating]-d
What we see here is the creation of a sublist from smarlist 2 which is sorted by the track rating and is a mix of ratings with more highly rated
tracks than lower rated tracks in the list. The field [my rating] is my own user rating field that allows me to rate tracks 1-10
The idea here is that it gives you the full range of ratings to compare the playing track against.
smartlist 2 is:
([IsPlayingNow]=[1] or [Media Type]=[Audio]) ~sort=[IsPlayingNow]-d ~limit=1,-1,[genre]
Here we see the IsPlayingNow field in action. This smartlist adds the now playing track to the entire database, sorted so that the IsPlayingNow track is at the front of the list and then it limits the output to only the 1 genre, and which genre is first? The nowplaying track, so the entire sublist is of the same genre. (I use the same trick to generate lists of the same artist, track name etc)
OK, so first we generate a list of tracks of the same genre, based on the now playing track. Then we create a small mix of rated tracks from that list. Then we once again add the nowplaying track to that list and sort by rating. This is displayed along with the Playing expression column to get the view you see.
Going back to the final view expression:
([IsPlayingNow]=[1] or playlistid==1) ~sort=[My Rating]-d
Notice the OR construct here which is used to add the currently playing track to the results of the playlist.
EASY
The view that compares like track names has to handle various postfixes to the trackname, eg [live] etc. I simply created user fields containing expressions that strip the postfixes from the [name] field leaving just the a-z text - this allows all tracks of the same name to be filtered out in the same way as the genres above, just using my library field in place of genre.
Questions?
Mark