The Play Music menu Option 2 allows you to specify one or more selection filters that 'tweak' or 'slant' the normal randomisation selection of music to play that Giocoso would usually perform. You can filter by composer, for example, to mean 'only play selections composed by Haydn'. Or you could filter by Genre, so that 'only play operas' would be a valid filter. Then you can start combining these individual filters, so that 'only play operas by Haydn' becomes a legitimate filter... and so on
You specify the various filters and their values on the form displayed when you first take Option 2:
You can fill in as many filters as you like, or none at all (if you fill none in and just press [Enter] to submit a blank form, you are effectively doing a 'play music with defaults', equivalent to taking option 1). If the combination of filters make no logical sense, no music will be selected for playback (for example: you say 'Composer Name=Mozart' and then say 'Composition Name=Fidelio'... since that opera was written by Beethoven, there won't be any recordings that match both selection filters).
Filters are always 'additive' and 'comprehensive': that is, a recording must match all the filled-in filters, not just some of them. You cannot use this filter to say (for example) 'play me something by Mozart or a ballet': if you fill in the composer name with 'mozart' and genre with 'ballet', you're asking Giocoso to find ballets composed by Mozart.
Filters supplied here always take precedence over any equivalent filters that may or may not be set in the Persistent Configuration File. That is, if the configuration file says 'maximum duration = 120 (minutes)' and you fill this filter in with the 'Maximum Duration' filter set to '40', then Giocoso will select recordings that are less than 40 minutes in length: the 120 minutes setting is ignored for this selection only. On similar grounds, if your excludes file says 'never play music by Mozart' and you fill this form in with 'Composer Name = Mozart', your current filter over-rides the excludes file: something by Mozart will get played, the excludes notwithstanding.
A filter can be 'negated' by putting an asterisk in the '±' column next to it. For example:
This means 'Play me something by Britten that is not a choral work'.
Filters are case-insensitive and are automatically 'wild-carded on the outside' -meaning that an entry for 'brit' in a field would match Britten, BRITTEN, Bridge, bridge and Tonbridgerton all equally well.
For the purposes of music selection, be aware that the filters map to tags (listed in all upper-case) as follows:
- Composer Name = ARTIST
- Composition Name = ALBUM
- Genre = GENRE
- Performer = COMMENT
- Distinguishing Artist = PERFORMER
- Recording Year = ALBUM (the year component of it)
It is particularly important to note that the filter labelled 'Performer' is not looking in the PERFORMER tag, whereas the one labelled 'Distinguishing Artist' one is. For an explanation of the difference between COMMENT and PERFORMER tags, see the Axioms of Classical Tagging article, Axiom 3 and Axiom 6.
Another subtlety to grasp is that the 'Recording Year' filter is not looking into the contents of the YEAR or DATE tag that may be present in a FLAC file, but at the recording year component of the extended composition name (see Axiom 5), which is stored in the ALBUM tag. This is slightly unfortunate (querying the YEAR or DATE tag would be the much more logical place to find the recording year!), but is a hangover from the way the music database was designed back in Giocoso version 1 days, and is therefore a consequence of backward compatibility.
The minimum and maximum duration filters are compared against the duration computed for a recording when it is added to the Giocoso music database. The under-played composer and unplayed works filters are computed exactly as described for menu option 1 above.
When a selection is submitted that matches more than 1 FLAC in the music database, you will be asked if you want to save the list of matching FLACs as a playlist:
If you say 'no' at this point, your music selections will immediately begin to play anyway. If you say 'yes', you are then asked to give a name to the new playlist:
The name can be anything you like, but spaces will be silently converted to underscores. The resulting playlist is stored in $HOME/.local/share/giocoso3/play:
Playlists are simply text files, so they can be edited at any time in the text editor of your choice. Having saved the filter selection as a playlist, Giocoso will begin to play the results of the selection:
Note how the selection counter (the bit in the top-right of the display that reads 'Selection x of y') has its limit set to the number of recordings that match your selection filters. Left to its own devices, therefore, Giocoso will end up playing everything that matches a particular set of selection filters. Obviously, however, you can pause or terminate play at any point during the playback (see Control menu options).
A playlist thus stores the results of a particular combination of selection filters. Those stored results are (a) accurate only at the time they are first created; and (b) ordered in a randomised fashion. This means that if I were to add a further 56 choral works of Britten's to my music collection, if I ever re-used the playlist just created, I would still only have 82 recordings listed, because that's how many I had at the time of creating the playlist. Moreover, though those 82 recordings are added to the playlist in a random order, that random order is now fixed at the point of saving the playlist. Use of that playlist in the future will always result in the same 82 recordings playing in that exact same order, every time.
The selection filters themselves, however, are completely dynamic: though I've saved this 82-recording playlist, if I came back to option 2 and submitted a new 'Britten - Choral' filter, Giocoso would find the new 56 recordings in the database and would select them in a completely new randomised order.
In short, selection filters are dynamic and up-to-date, whereas playlists are only snapshots of things which matched selection filters at a particular point in time.