<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.bbritten.com/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://www.bbritten.com/feed.php">
        <title>BBritten.com - softwares:giocoso:playmenu</title>
        <description>A Voyage Around My Ears</description>
        <link>https://www.bbritten.com/</link>
        <image rdf:resource="https://www.bbritten.com/_media/wiki/dokuwiki.svg" />
       <dc:date>2026-04-04T01:52:33+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/playmenu/playcrl"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/playmenu/playdef"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/playmenu/playdll"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/playmenu/playfld"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/playmenu/playglb"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/playmenu/playlst"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/playmenu/playsel"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/playmenu/playsql"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://www.bbritten.com/_media/wiki/dokuwiki.svg">
        <title>BBritten.com</title>
        <link>https://www.bbritten.com/</link>
        <url>https://www.bbritten.com/_media/wiki/dokuwiki.svg</url>
    </image>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/playmenu/playcrl">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-04T17:48:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playcrl</title>
        <link>https://www.bbritten.com/softwares/giocoso/playmenu/playcrl</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;create_or_edit_a_playlist&quot;&gt;Create Or Edit A Playlist&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Playlists are automatically created whenever you use &lt;strong&gt;Play Music&lt;/strong&gt; menu &lt;strong&gt;Options 2 or 4&lt;/strong&gt; to supply music selection criteria that match more than one recording -or, at least, you are given the &lt;em&gt;option&lt;/em&gt; to create a playlist storing the results of those selections. However, playlists can be created manually, too, by taking the &lt;strong&gt;Play Music&lt;/strong&gt; menu &lt;strong&gt;Option 7 : Create or edit a playlist&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Taking this menu option immediate causes the program to prompt you for the name of the playlist you&amp;#039;re about to create or edit:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_153507.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_153507.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_153507.png?w=650&amp;amp;tok=30b3a9&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
As soon as you submit [OK] (or press the [Enter] key, Giocoso determines whether the submitted name matches an existing playlist: if it does, that playlist will be opened for editing. If it doesn&amp;#039;t, then an empty text file of the supplied name will be created for you in the &lt;strong&gt;$HOME/.local/share/giocoso3/play&lt;/strong&gt; folder. When a new playlist is created in this way, the capitalisation of the supplied playlist name is preserved, but spaces are automatically replaced with underscores and a .play extension is added (so my example in the screenshot will be created as a file called &lt;strong&gt;Wagner&amp;#039;s_Ring_Cycle.play&lt;/strong&gt;).
&lt;/p&gt;

&lt;p&gt;
New playlists will start off looking extremely bare:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_153555.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_153555.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_153555.png?w=650&amp;amp;tok=49e419&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s literally a blank slate, for you to fill in with details of music &lt;strong&gt;folders&lt;/strong&gt; you want played, in the order you want them played.
&lt;/p&gt;

&lt;p&gt;
Note that in my example, the text editor Giocoso has launched is called &lt;strong&gt;nano&lt;/strong&gt;: that&amp;#039;s likely to be the default text editor on most Linux systems, but if you set the EDITOR environment parameter before you launch Giocoso, Giocoso will use that one instead. If you love vi, emacs or Mousepad, all are entirely usable.
&lt;/p&gt;

&lt;p&gt;
As I just mentioned above, you should note that it&amp;#039;s &amp;lt;em&amp;gt;folder names&amp;lt;/em&amp;gt; that go into a playlist, not the names of specific FLAC files (because Giocoso plays folders, not files!). One folder name goes on one line:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_154218.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_154218.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_154218.png?w=650&amp;amp;tok=7dac20&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
This is quite a good example of why you might want to create a playlist in the first place, as it happens: there&amp;#039;s no other way to ensure that the four parts of Wagner&amp;#039;s &lt;em&gt;Ring Cycle&lt;/em&gt; get played in the right order! If you left it to alphabetical sorting of folder name, &lt;em&gt;Götterdämmerung&lt;/em&gt; would play before &lt;em&gt;Siegfried&lt;/em&gt; -which means Siegfried would die &lt;em&gt;before&lt;/em&gt; he gets to kill the dragon (I hope I&amp;#039;m not giving too many secrets away!!), which would never do :)
&lt;/p&gt;

&lt;p&gt;
Once all the folders are present, in the order you want them played, you just save and quit the text editor (in nano&amp;#039;s case, that means typing Ctrl+X, then tapping &amp;#039;y&amp;#039; to confirm the save, and finally pressing [Enter] to confirm the filename to save as). You are then returned to the main menu. No music is played, therefore, by the mere act of creating a playlist. To have the playlist played, you now need to take the &lt;strong&gt;Play Music&lt;/strong&gt; menu &lt;strong&gt;Option 5&lt;/strong&gt; and select the new playlist (by pressing [Enter] when it&amp;#039;s highlighted), as &lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/playmenu/playlst&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:playmenu:playlst&quot; data-wiki-id=&quot;softwares:giocoso:playmenu:playlst&quot;&gt;previously described&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Playlists are nothing special: they have a .play extension, which may make them look a bit weird, but they are simply plain text files. You can therefore create or edit and re-arrange the contents of a playlist completely &lt;em&gt;outside&lt;/em&gt; of Giocoso any time you like: just navigate to &lt;strong&gt;$HOME/.local/share/giocoso3/play&lt;/strong&gt; in your file manager and use its standard tools to create or edit the files there, in the text editor of your choice. The &lt;strong&gt;Play Menu Option 6&lt;/strong&gt; is merely there to give you the capability to create or edit playlists from &lt;em&gt;within&lt;/em&gt; Giocoso as a convenience: it&amp;#039;s up to you which editing technique you prefer to use.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/giocoso&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:giocoso&quot; data-wiki-id=&quot;softwares:giocoso:giocoso&quot;&gt;Back to Giocoso Documentation Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/playmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:playmenu&quot; data-wiki-id=&quot;softwares:giocoso:playmenu&quot;&gt;Back to Play Music Menu&lt;/a&gt;&lt;/strong&gt; | 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;!-- no cachefile used, but created /var/www/dokuwiki/data/cache/1/18f0913261df7abb665b234f9a342a80.xhtml --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/playmenu/playdef">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-13T10:59:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playdef</title>
        <link>https://www.bbritten.com/softwares/giocoso/playmenu/playdef</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;play_music_with_defaults&quot;&gt;Play Music With Defaults&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/beethoven3.png?w=220&amp;amp;tok=c9780a&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;220&quot; /&gt;Giocoso&amp;#039;s standard way of playing music is to &lt;strong&gt;make a random selection&lt;/strong&gt; from a previously-created database of available music files. Note that the random selection process underwent significant changes in Version 3.30: what follows describes &lt;em&gt;that&lt;/em&gt; method of selection, not the one which applied before then.
&lt;/p&gt;

&lt;p&gt;
The random selection process is actually a two-stage affair: first, select a group of &amp;#039;candidate composers&amp;#039; at random; second, select a set of &lt;em&gt;compositions&lt;/em&gt; written by those composers at random. Giocoso then plays each selected composition from beginning to end, as a single entity, regardless of how many &amp;#039;tracks&amp;#039; make up the composition. At the end of playing that composition, the fact of a completed &amp;#039;play&amp;#039; is recorded in Giocoso&amp;#039;s database. There is then a pause (for a user-defined) number of seconds before a new, random composition by any member of the pool of candidate composers is made.
&lt;/p&gt;

&lt;p&gt;
Playback continues, random work by random work, until a user-defined number of &amp;#039;selections&amp;#039; (sometimes referred to as a &amp;#039;play cycle&amp;#039;) is reached, at which point Giocoso returns to displaying the Play Music menu, awaiting further instructions. The number of &amp;#039;selections&amp;#039; is configured in Giocoso&amp;#039;s configuration file (where it is identified with the label &lt;strong&gt;Number of plays per cycle&lt;/strong&gt;. The value you set for this parameter governs how many recordings will be played in succession before returning to the main menu: but it also controls how many &amp;#039;candidate composers&amp;#039; are initially selected, too. Specifically, the number of randomly-selected candidate composers is set to &lt;strong&gt;twice&lt;/strong&gt; the number of plays in a cycle. Set the parameter to 10, for example, and there will be 20 candidate composers, and then a selection of 10 compositions by any of those composers will be made.
&lt;/p&gt;

&lt;p&gt;
That&amp;#039;s the basic story, at any rate… but there are subtleties I should elaborate on!
&lt;/p&gt;

&lt;p&gt;
&lt;em class=&quot;u&quot;&gt;&lt;strong&gt;Random Selection of Composer&lt;/strong&gt;&lt;/em&gt;: The first stage of selecting something to play is the initial random selection of a set of composers to play. To make this selection, Giocoso assumes that the ARTIST tag represents a composer (which is in accordance with this website&amp;#039;s &amp;#039;axioms of tagging classical music&amp;#039;: &lt;a href=&quot;https://www.bbritten.com/articles/axioms&quot; class=&quot;wikilink1&quot; title=&quot;articles:axioms&quot; data-wiki-id=&quot;articles:axioms&quot;&gt;see Axiom 2&lt;/a&gt;). For this selection, every composer counts equally. It doesn&amp;#039;t matter that J. S. Bach represents 1/3rd of your music collection whilst Isotaro Sugata is represented by a single CD: both have an equal chance of being selected as a &amp;#039;composer of interest&amp;#039;. A pool of multiple &amp;#039;candidate composers&amp;#039; is selected at random, with the pool size being twice the number of plays per cycle set in the Giocoso configuration file.
&lt;/p&gt;

&lt;p&gt;
&lt;em class=&quot;u&quot;&gt;&lt;strong&gt;Random Selection of Composition&lt;/strong&gt;&lt;/em&gt;: Giocoso now makes a second query of its database: select as many recordings as the &amp;#039;plays per cycle&amp;#039; parameter specifies by &lt;em&gt;any&lt;/em&gt; of the candidate composers, and then &lt;strong&gt;make sure that only one work by a composer appears in the final list of recordings to play&lt;/strong&gt;. It could happen, of course, that insufficient recordings are found to make up a complete play cycle: if your various configuration parameters are set to values which together constitute a very tight selection range (say you set minimum duration=30 and maximum duration=40 and unplayed works=yes and under-played composers=yes and Bach, Beethoven and Mozart are all in the excludes file) then maybe only a handful of recordings will qualify for play, despite you asking for &amp;#039;plays per cycle of 10&amp;#039;. If that happens, Giocoso will simply play what it can and the play cycle will end when the collection of candidate recordings has been exhausted. You&amp;#039;ll need to relax your configured selection criteria for the default selection mechanism to produce more usable results in the future. Once again, in all the selection tests Giocoso performs, the composer is determined by a recording&amp;#039;s ARTIST tag and the composition or recording name is represented by whatever is found in the ALBUM tag (&lt;a href=&quot;https://www.bbritten.com/articles/axioms&quot; class=&quot;wikilink1&quot; title=&quot;articles:axioms&quot; data-wiki-id=&quot;articles:axioms&quot;&gt;see Axiom 5&lt;/a&gt;).
&lt;/p&gt;

&lt;p&gt;
&lt;em class=&quot;u&quot;&gt;&lt;strong&gt;Modifications of Randomness&lt;/strong&gt;&lt;/em&gt;: Having randomly selected something to play, Giocoso now makes some checks to see whether the selection is &amp;#039;acceptable&amp;#039;. There are various user-defined settings that can be configured in the &lt;strong&gt;Persistent Configuration File&lt;/strong&gt; (see the Administration Menu, Option 3) which determine what constitutes an &amp;#039;acceptable&amp;#039; selection:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Time bar&lt;/strong&gt;: Composers can be subject to a &amp;#039;time bar&amp;#039;, meaning that if something by Bach was played at (say) 9AM, Bach doesn&amp;#039;t become eligible to be played again until &lt;em&gt;x&lt;/em&gt; hours have elapsed. The &lt;strong&gt;default time bar is six hours&lt;/strong&gt;, but it can be set to anything you like. I have mine set to &amp;#039;720&amp;#039;, meaning that if I play Britten on the 1st of the month, I won&amp;#039;t randomly hear anything by Britten again until about the 1st of the &lt;em&gt;next&lt;/em&gt; month (720 hours being the equivalent of 30 days). The idea of the time bar is to prevent repetitive play of the same composer (and thus to keep your music selections &amp;#039;fresh&amp;#039; and innovative).&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
However, it&amp;#039;s also possible for a composer to be completely &lt;em&gt;exempted&lt;/em&gt; from the configured time bar, by listing them in the &lt;strong&gt;Exempts File&lt;/strong&gt; (see Administration Menu, option 4). A composer&amp;#039;s name (spelled and capitalised &lt;em&gt;exactly&lt;/em&gt; as you&amp;#039;ve tagged your music files) can be added to the exempts file at any time and its listing there will mean that no time bar will be applied to that composer. So if my time bar is set to 720 hours, but “Benjamin Britten” is mentioned in my exempts file, then if I play something by Britten at 9:00AM on Monday 1st December, I can play something &lt;em&gt;else&lt;/em&gt; by Britten at 9:28AM that same day, if the random selection process happens to suggest to do so. Being mentioned in the exempts file doesn&amp;#039;t make a composer more likely to be randomly selected for playback: it just means that if he or she happens to be randomly selected, they won&amp;#039;t then be rejected for time bar reasons.
&lt;/p&gt;

&lt;p&gt;
Exemptions are composer-specific. If Mahler is listed in the exempts file, but Britten is not, and something was played by Britten an hour ago and by Mahler three hours ago, then Britten is excluded from being a candidate composer for the next play cycle, but Mahler will not be so excluded. Again, however, this does &lt;em&gt;not&lt;/em&gt; mean that Mahler &lt;strong&gt;will&lt;/strong&gt; be played in the next play cycle: it simply means he can be a &lt;em&gt;candidate&lt;/em&gt; for random selection, where Britten is explicitly prevented from so being.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Excludes&lt;/strong&gt;: Another user-configurable factor that can render a randomly-selected composition unacceptable for play is the &lt;em&gt;Excludes File&lt;/em&gt;. This is a text file that can be configured using the Administration Menu option 3. In it, you list composers by exact name to mean &amp;#039;this composer is flat-out unacceptable for playback&amp;#039;. You can add new composers to the excludes file, or remove existing ones from it, at any time -but for as long as a composer is listed within it, there&amp;#039;s a total ban on playing any of that composer&amp;#039;s music. The intention here, when I designed this feature, was to stop me hearing Bach cantata after Bach cantata. Much as I love Bach, I do occasionally add him the my excludes file, for weeks at a time, just to give my ears a break!&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
In my own case, for example, I have so many Vivaldi and Bach recordings that there are simply times when I don&amp;#039;t want to listen to those composers for a while: the ears get tired of even pure genius for various lengths of time after all! So, when I&amp;#039;ve had enough for the moment of listening to them, I add &amp;#039;Antonio Vivaldi&amp;#039; or &amp;#039;Johann Sebastian Bach&amp;#039; as entries into my excludes file and sit back to enjoy all sorts of music that &lt;em&gt;isn&amp;#039;t&lt;/em&gt; theirs! After a week or so, I then re-edit my excludes file to put a &amp;#039;#&amp;#039; in the front of the relevant line: that comments their name out and thus renders them eligible for playback once more. After a month or more, I can re-edit the file and remove the &amp;#039;#&amp;#039;, thus banning them from playback for a while again… and so the process repeats for as long as I need it to.
&lt;/p&gt;

&lt;p&gt;
Adding a composer&amp;#039;s name to the excludes file renders them ineligible for selection as a member of the &amp;#039;candidate composer&amp;#039; pool from the outset of the randomisation process.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Under-played Composer&lt;/strong&gt;: The Persistent Configuration file contains several yes/no settings, one of which is &amp;#039;Only play music by previously under-played composers&amp;#039;. If that is configured to &amp;#039;yes&amp;#039; (which it isn&amp;#039;t by default) then the initially-selected candidate composition is checked to see whether the duration of previous plays of music by that composer is &lt;strong&gt;&lt;em&gt;lower&lt;/em&gt;&lt;/strong&gt; than a computed &amp;#039;threshold&amp;#039; of under/over-played-ness. See &lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/playmenu/underplayed&quot; class=&quot;wikilink2&quot; title=&quot;softwares:giocoso:playmenu:underplayed&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;softwares:giocoso:playmenu:underplayed&quot;&gt;this article&lt;/a&gt; for more details on how all that computation and checking works. If the candidate play &lt;em&gt;exceeds&lt;/em&gt; the threshold, it&amp;#039;s rejected and a new composer/composition random selection is made.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
This &amp;#039;under-played composer&amp;#039; filter is new to Giocoso version 3 and is intended to let you unearth the &amp;#039;darker corners&amp;#039; of your music collection: to find and play recordings by obscure composers who are maybe only represented in your collection by one or two recordings and who are accordingly in danger of being &amp;#039;crowded out&amp;#039; by the music giants like Bach, Beethoven and Brahms.
&lt;/p&gt;

&lt;p&gt;
Note, too, that the under-played computation is based on the &lt;em&gt;time&lt;/em&gt; a composer&amp;#039;s music is played, not on how many compositions or recordings by that composer are played: Wagner would always be at an unfair advantage if were based on the mere count of plays, as it only takes one or two plays of his recordings to rack up many, many hours of play-time, for example. By measuring time, rather than play-counts, we ensure that even though Wagner isn&amp;#039;t selected to be played very often, the fact that it takes interminable days to listen to just one of his operas when it finally gets selected means that he&amp;#039;s regarded as an often-played composer &lt;img src=&quot;https://www.bbritten.com/lib/images/smileys/smile.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-)&quot; /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Unplayed Work&lt;/strong&gt;: Another setting available in the Persistent Configuration file is &amp;#039;Only play previously unplayed recordings&amp;#039;. If &lt;em&gt;that&lt;/em&gt; is set to &amp;#039;yes&amp;#039; (which it isn&amp;#039;t by default) then if a recording has &lt;em&gt;ever&lt;/em&gt; previously been played, it ceases to be a candidate for a new randomised play. The determinant of &amp;#039;has this been played before&amp;#039; depends on whether you are using Giocoso Pro features (available from Version 3.30 and up). If you are &lt;strong&gt;not&lt;/strong&gt;, then the test is whether the full folder (or path) name appears, exactly, in Giocoso&amp;#039;s history of plays table. If you &lt;strong&gt;are&lt;/strong&gt;, then the test becomes whether the computed “RECHASHVALUE” for a recording appears in the global_plays table. The RECHASHVALUE is computed from the concatenation of the COMPOSER and COMPOSITION tags associated with a recording.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Note that this means in Non-Pro Giocoso, a change in the physical folder name or path will make a recording look &amp;#039;new&amp;#039; and unplayed. In Giocoso Pro, however, the physical path can change as much as you like and the recording will still be thought of as an existing recording -because only a change to the COMPOSER and/or COMPOSITION tags for a recording can change the RECHASHVALUE to a never-before-seen value.
&lt;/p&gt;

&lt;p&gt;
You can comfortably set this parameter &lt;em&gt;and&lt;/em&gt; the &amp;#039;under-played composer&amp;#039; one together: it means Giocoso will keep searching for previously-unplayed works by generally under-played composers, which is an entirely valid thing to attempt to do. In practice, however, an under-played composer will often be underplayed precisely because there aren&amp;#039;t many recordings of his or her work. If that&amp;#039;s true, then there&amp;#039;s a very small pool of potential recordings to play -and if you ever play them once, they are no longer previously-unplayed. In short, when you have played most obscure composers once, they tend to cease being candidates under the &amp;#039;not-previously-played&amp;#039; rule, and the fact that they still qualify as underplayed then doesn&amp;#039;t help them if both filters are set.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Minimum Duration&lt;/strong&gt;: The Persistent Configuration file allows you to set a &amp;#039;minimum duration&amp;#039; for a randomly-selected recording to be a valid candidate for playback. The default is 0 (which effectively means the filter isn&amp;#039;t set at all and won&amp;#039;t affect what counts as a valid candidate at all). You set it in minutes.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Maximum Duration&lt;/strong&gt;: A similar parameter in the Persistent Configuration file allows you to set an equivalent &amp;#039;maximum duration&amp;#039; value (again in minutes). The default value is 525960 minutes -which is the number of minutes in a year. Assuming you don&amp;#039;t have any recordings which last longer than a year (!), therefore, the default value is the equivalent of &amp;#039;this is so absurdly high that it cannot practically restrict anything from being considered a valid random selection&amp;#039;. Set it to (say) 120, however, and you&amp;#039;re now saying &amp;#039;any randomly-selected recording that lasts longer than 2 hours is not to be played&amp;#039;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Note that it&amp;#039;s perfectly valid to set both a minimum &lt;em&gt;and&lt;/em&gt; maximum duration: minimum=10, maximum=30 means you want to listen to recordings that are not too short, but which don&amp;#039;t last longer than half an hour, either: an entirely logical combination of attributes. If you happen to set the two parameters the wrong way round (say minimum=40 and maximum=20), Giocoso will silently swap the two values so that they continue to make logical sense.
&lt;/p&gt;

&lt;p&gt;
You can have any, all or none of these &amp;#039;randomness modifiers&amp;#039; set at any one time. If you use Administration Menu option 2 to set the timebar to 0, the underplayed composer filter to no, the unplayed work filter to no, and the minimum and maximum duration filters to their defaults; and if in addition you do not use the Administration Menu options 3 or 4 to create excludes or exempts files containing any content; then Giocoso will &lt;em&gt;entirely randomly&lt;/em&gt; select something to play, with zero restrictions on what counts as a valid selection -and this is its &lt;strong&gt;default mode&lt;/strong&gt; of behaviour.
&lt;/p&gt;

&lt;p&gt;
Adding any or many of the filters discussed, or creating an excludes or exempts file, will cause Giocoso to &amp;#039;tweak&amp;#039; its random selections until something matches all the requirements you&amp;#039;ve specified (assuming something can, of course). The music selection will still be randomised -but some random selections Giocoso makes will be not meet the various selection filters you&amp;#039;ve established and will therefore be discarded, whilst others &amp;#039;pass&amp;#039; and are considered valid candidates for playback.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/giocoso&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:giocoso&quot; data-wiki-id=&quot;softwares:giocoso:giocoso&quot;&gt;Back to Giocoso Documentation Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/playmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:playmenu&quot; data-wiki-id=&quot;softwares:giocoso:playmenu&quot;&gt;Back to Play Music Menu&lt;/a&gt;&lt;/strong&gt; | 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;!-- cachefile /var/www/dokuwiki/data/cache/f/f9c58ec7eb47c941e7479c7039e85053.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/playmenu/playdll">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-04T17:55:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playdll</title>
        <link>https://www.bbritten.com/softwares/giocoso/playmenu/playdll</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;delete_old_playlists&quot;&gt;Delete Old Playlists&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
If you no longer wish to keep a playlist that you created (either manually or automatically), you can delete them at any time by taking &lt;strong&gt;Play Music&lt;/strong&gt; menu &lt;strong&gt;Option 8 : Delete old playlists&lt;/strong&gt;. When you take this option, you&amp;#039;ll immediately see this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_155249.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_155249.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_155249.png?w=650&amp;amp;tok=4618ae&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The form will list &lt;em&gt;every&lt;/em&gt; file with a .play extension currently residing in the &lt;strong&gt;$HOME/.local/share/giocoso3/play&lt;/strong&gt; folder. You arrow up-and-down until a playlist is highlighted; to select it, press the spacebar (which results in an asterisk appearing in the square brackets next to the playlist name). To de-select an item selected in error, just press the spacebar whilst the item is highlighted once more: the asterisk marker should disappear.
&lt;/p&gt;

&lt;p&gt;
You can select multiple playlists at once:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_155444.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_155444.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_155444.png?w=650&amp;amp;tok=dc15f3&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
When you&amp;#039;re ready, press [Enter] or tab round to the [OK] button and then press [Enter]: &lt;strong&gt;all&lt;/strong&gt; the selected files will be immediately deleted from disk. No &amp;#039;are you sure&amp;#039; messages will appear: the files just &lt;em&gt;go&lt;/em&gt;!
&lt;/p&gt;

&lt;p&gt;
Obviously, play lists are simply text files on disk: you could delete them yourself using &amp;#039;external&amp;#039; tools, like your distro&amp;#039;s standard file manager, or rm commands in a terminal. Play Music menu Option 7 is simply there to make it more &lt;em&gt;convenient&lt;/em&gt; to delete old playlists by doing it &lt;em&gt;within&lt;/em&gt; the context of a running Giocoso session. It&amp;#039;s possible doing it this way is perhaps a little bit safer, too!
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/giocoso&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:giocoso&quot; data-wiki-id=&quot;softwares:giocoso:giocoso&quot;&gt;Back to Giocoso Documentation Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/playmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:playmenu&quot; data-wiki-id=&quot;softwares:giocoso:playmenu&quot;&gt;Back to Play Music Menu&lt;/a&gt;&lt;/strong&gt; | 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;!-- cachefile /var/www/dokuwiki/data/cache/f/f6e9112e610921d96a792edf71ce343b.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/playmenu/playfld">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-04T13:28:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playfld</title>
        <link>https://www.bbritten.com/softwares/giocoso/playmenu/playfld</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;play_music_in_specified_folder&quot;&gt;Play Music In Specified Folder&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
It might happen that you obtain new music which you wish to hear &lt;em&gt;before&lt;/em&gt; properly cataloguing it and formally adding it to your music collection. That&amp;#039;s a problem for the way Giocoso normally works, since it usually derives its information about what music &lt;em&gt;is available&lt;/em&gt; to be played from a database …and populating that database is precisely what cataloguing your music is all about! 
&lt;/p&gt;

&lt;p&gt;
So what are you to do when you&amp;#039;ve just purchased some music, want Giocoso to play it, but haven&amp;#039;t had the time to tag it all carefully and formally add it to your music collection database? Well, that&amp;#039;s what the &lt;strong&gt;Play Music&lt;/strong&gt; menu &lt;strong&gt;Option 3 : Play music in specified folder&lt;/strong&gt; is for. It allows you to point Giocoso to a specific, single folder containing one or more FLAC files and have it play them directly. 
&lt;/p&gt;

&lt;p&gt;
Here, for example, is an organ work I purchased as a FLAC from &lt;a href=&quot;https://www.prestomusic.com/classical&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://www.prestomusic.com/classical&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Prestoclassical&lt;/a&gt;:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_141512.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_141512.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_141512.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
If I check the tagging on this file, I see that Presto do an OK job of cataloguing the things they sell, but not a perfect one:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_141716.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_141716.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_141716.png?w=650&amp;amp;tok=bb4a07&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Comparison with my own &lt;a href=&quot;https://www.bbritten.com/articles/axioms&quot; class=&quot;wikilink1&quot; title=&quot;articles:axioms&quot; data-wiki-id=&quot;articles:axioms&quot;&gt;Axioms of Classical Tagging&lt;/a&gt; article reveals numerous issues: no embedded album art, ARTIST not equal to composer, COMMENT left blank, performing artist listed in both ARTIST and ALBUM ARTIST tags; Genre is compounded of two terms trying to be a hierarchy… and so on: this is not what I would want to add to my music collection! But I want to listen to it anyway, because I don&amp;#039;t approve of delayed gratification!
&lt;/p&gt;

&lt;p&gt;
I therefore take the Play Music menu, Option 3 and use its file/folder navigation dialogue to point to the folder containing the purchased music:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_141948.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_141948.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_141948.png?w=650&amp;amp;tok=b90881&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You use the dialog provided to navigate around your hard disk&amp;#039;s folder structure until you are pointing directly at the folder containing the relevant FLAC(s). If you prefer, you can just type the complete path in the second panel of the dialog -and you can combine the two panels, pointing with one, filling out some details with the other and so on. 
&lt;/p&gt;

&lt;p&gt;
Note that you navigate to a &lt;em&gt;folder&lt;/em&gt; containing FLACs: you do not &amp;#039;point&amp;#039; to any particular FLAC itself. Giocoso &lt;strong&gt;always&lt;/strong&gt; plays folders, not individual FLAC files. If this folder contained 10 FLACs, Giocoso would play all 10 as a single, continuous &amp;#039;composition&amp;#039; before declaring itself done. If the CD you&amp;#039;re desperate to listen to happened to contain tracks for both Beethoven symphonies No. 1 and No. 2, you&amp;#039;d listen to 8 movements in one go, and Giocoso will declare it&amp;#039;s played a single &amp;#039;thing&amp;#039; at the end.
&lt;/p&gt;

&lt;p&gt;
Once you are &amp;#039;in&amp;#039; the folder containing the FLAC(s) you want to play, press [Enter] and playback will begin:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_142200.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_142200.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_142200.png?w=650&amp;amp;tok=489156&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Do not expect Giocoso to get the details right! Giocoso expects the ARTIST tag to tell it the name of the composer: since Presto have put the organist&amp;#039;s name in there, that&amp;#039;s why we see this piece described as &amp;#039;Calvin Bowman&amp;#039;s…&amp;#039;. Since there was no embedded album art, that&amp;#039;s why you see Giocoso&amp;#039;s &amp;#039;generic album art&amp;#039; picture of a vinyl LP displayed as the album art on the right-side of the display… and so on. If the tagging is rubbish, the display will be pretty rubbish too… but at least I&amp;#039;m listening to the music!
&lt;/p&gt;

&lt;p&gt;
Though the &lt;em&gt;source&lt;/em&gt; of this &amp;#039;play&amp;#039; is a folder on a hard disk and &lt;strong&gt;not&lt;/strong&gt; the Giocoso music database, Giocoso will still attempt to record this play in the play history table within its music database:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_143011.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_143011.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_143011.png?w=650&amp;amp;tok=c4918d&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The data is bad, because the tagging was bad… but there is nevertheless a record in my PLAYS table that I listened to the &amp;#039;Great Australasian Organs&amp;#039; recording, though the PERFORMER has not been filled in correctly (because the COMMENT tag on the original file wasn&amp;#039;t filled in).
&lt;/p&gt;

&lt;p&gt;
In summary, Play Music menu option 3 lets you &amp;#039;audition&amp;#039; recordings before they are formally tagged and added to a music collection. It is the only time Giocoso plays precisely what it is told to play, rather than by trying randomly to find something that matches various selection criteria. The play is recorded as best as Giocoso can manage in its standard play history -but the data is likely to be &amp;#039;not great&amp;#039;, precisely because you haven&amp;#039;t curated the recording&amp;#039;s metadata properly at this stage.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/giocoso&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:giocoso&quot; data-wiki-id=&quot;softwares:giocoso:giocoso&quot;&gt;Back to Giocoso Documentation Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/playmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:playmenu&quot; data-wiki-id=&quot;softwares:giocoso:playmenu&quot;&gt;Back to Play Music Menu&lt;/a&gt;&lt;/strong&gt; | 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;!-- cachefile /var/www/dokuwiki/data/cache/5/537425d41fc15dbb6f556aa7a9795748.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/playmenu/playglb">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-04T17:29:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playglb</title>
        <link>https://www.bbritten.com/softwares/giocoso/playmenu/playglb</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;resume_a_global_play&quot;&gt;Resume A Global Play&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/giocosoicopro.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:giocosoicopro.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/giocosoicopro.png?w=220&amp;amp;tok=e52da2&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;220&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Resume A Global Play&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;resume_a_global_play&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-98&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;introduction&quot;&gt;1.0 Introduction&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The &amp;#039;Resume a Global Play&amp;#039; menu option was only introduced to Giocoso in Version 3.30. It is used in a Giocoso Pro environment to allow one Giocoso installation to resume a play of a recording that another Giocoso device has paused. For example, you might pause a play in your main listening room so that you can continue listening to it in the bedroom on a laptop, or vice versa. 
&lt;/p&gt;

&lt;p&gt;
The option will only do anything if (a) you&amp;#039;re properly configured to use a Giocoso Pro server; and (b) if there are actually any paused &amp;#039;plays&amp;#039; on other configured Giocoso-using devices.
&lt;/p&gt;

&lt;p&gt;
Configuring a Giocoso installation to run in &amp;#039;Pro mode&amp;#039; can be &lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/playmenu/read_about_here&quot; class=&quot;wikilink2&quot; title=&quot;softwares:giocoso:playmenu:read_about_here&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;softwares:giocoso:playmenu:read_about_here&quot;&gt;read about here&lt;/a&gt;, but it essentially means using the &lt;strong&gt;Administration&lt;/strong&gt; menu, &lt;strong&gt;Option 2&lt;/strong&gt; and supplying the IP address of a remote Giocoso Pro Server that you&amp;#039;ve built and configured ahead of time. If you haven&amp;#039;t done that then taking the &amp;#039;Resume a Global Play&amp;#039; menu option simply triggers the display of the following error message:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_170831.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20251104_170831.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_170831.jpg?w=650&amp;amp;tok=00e671&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Without a Giocoso Pro server to talk to and read from, a Giocoso instance cannot know what has been paused by another computer and therefore no functionality in this menu option can work.
&lt;/p&gt;

&lt;p&gt;
If you &lt;em&gt;have&lt;/em&gt; configured your local installation of Giocoso to access a Giocoso Pro server, however, then taking this menu option does the following:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A query is made of the Giocoso Pro&amp;#039;s GLOBAL_PAUSESTATUS table to see if any other Giocoso devices have, in fact, paused a play&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; If no other devices have plays paused, a message is displayed informing you that nothing is currently paused, so nothing can be resumed&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; If there is one other device that has something paused, the recording in question will begin to play on your current Giocoso device&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; If there is more that one other device that has something paused, you&amp;#039;ll be prompted to pick the device you wish to resume (devices being listed by their configured hostnames)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Once a paused device has been picked, the paused recording will begin playing on your current Giocoso device&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Note that if your Giocoso devices are all sharing, say, a NAS device over the network, then it can take several tens of seconds for the resuming device to work its way through the music stream to the point that the paused device had reached. For this reason, resuming a global play works best when each Giocoso device has a &lt;em&gt;local&lt;/em&gt; copy of music files, periodically refreshed from a common NAS source. It is &lt;em&gt;much&lt;/em&gt; faster for Giocoso to work through a local music stream than it is a network one. However, the single-NAS-shared-by-all approach works well enough, too: you just have to be more patient before music playback actually resumes.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1.0 Introduction&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;introduction&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;99-2868&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;the_pause_status_table&quot;&gt;2.0 The Pause Status Table&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Whenever a Giocoso device running in Pro mode selects to pause a playing recording, some data is transferred to the Giocoso Pro Server&amp;#039;s GLOBAL_PAUSESTATUS table. The data consists of three pieces of information:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; device name (the hostname of the device doing the pausing)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; recording name (in the form of the rechashvalue, derived directly from the composer and composition metadata tags associated with the paused FLAC)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; current play position (derived directly from the ffmpeg music playing engine that was previously playing the recording)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Here&amp;#039;s a screenshot of the relevant table, using a program called &lt;a href=&quot;https://dbeaver.io/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://dbeaver.io/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;DBeaver&lt;/a&gt;, which is a free piece of software that provides a graphical way to manage and inspect MySQL databases, which is what a Giocoso Pro Server runs:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_130647.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20250210_130647.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_130647.jpg?w=650&amp;amp;tok=1e44d2&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You can see Giocoso is playing some Haydn at the top of the screen; beneath is the DBeaver display of the GLOBAL_PAUSESTATUS table …and it is completely empty, with no records of any sort in it. Now let me pause the Haydn play:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_130757.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20250210_130757.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_130757.jpg?w=650&amp;amp;tok=1b83e5&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Now you can see that the Haydn playback has been paused: the &amp;#039;Pause/Resume&amp;#039; option in the control bar at the bottom of the playing screen is bright green. You&amp;#039;ll also notice from the top right of the Giocoso window that I&amp;#039;ve played 1 hour, 22 minutes and 21 seconds of this recording before pausing. If you do a bit of maths, you&amp;#039;ll be able to work out that this is equivalent to 4,941 seconds of elapsed play-time before the pause button was activated.
&lt;/p&gt;

&lt;p&gt;
Beneath the now-paused Haydn window, we see that the GLOBAL_PAUSESTATUS table now contains a single record: it tells us that a PC with a hostname of &amp;#039;schumann&amp;#039; has paused a recording with a unique identifier of &amp;#039;e1504f66d5…&amp;#039; at 4,941 seconds. Don&amp;#039;t get confused by that first column: it&amp;#039;s not saying that a piece of music &lt;em&gt;by&lt;/em&gt; Robert Schumann has been paused! You&amp;#039;re viewing the perhaps-unfortunate habit I have of giving my PCs, laptops and servers names of composers when I build them: so this is “a PC with an assigned hostname of &amp;#039;schumann&amp;#039;”, nothing to do with the composer&amp;#039;s music!
&lt;/p&gt;

&lt;p&gt;
Anyway: the point is, that pausing a Play when operating in &amp;#039;Pro&amp;#039; mode causes data to be written to the GLOBAL_PAUSESTATUS table -and if you &lt;em&gt;un-pause&lt;/em&gt; a recording on the same PC, that data is &lt;strong&gt;deleted&lt;/strong&gt;. The PAUSESTATUS table therefore only has rows of data in it when something is &lt;em&gt;actually&lt;/em&gt; and actively paused.
&lt;/p&gt;

&lt;p&gt;
Note that the &lt;em&gt;primary key&lt;/em&gt; of the PAUSESTATUS table is the DEVICENAME column: that means you cannot have the same PC with more than one row of data describing something being paused. Hopefully, that&amp;#039;s an obvious and realistic consequence of the fact that a single PC cannot actually &lt;em&gt;play&lt;/em&gt; more than one piece of music at a time …and therefore certainly can&amp;#039;t be &lt;em&gt;pausing&lt;/em&gt; more than one recording at a time! It does mean, however, that Giocoso device names have to be unique -which they need to be on a network anyway, so that shouldn&amp;#039;t be an issue, either. Just be aware, however, that if a Giocoso device in mid-pause happens to crash or suffer a power loss, it likely won&amp;#039;t be able to clear out its row from the PAUSESTATUS table… and that would prevent you from ever pausing anything again! Accordingly, every time Giocoso is freshly launched on a PC, a &lt;strong&gt;delete from pausestatus where devicename=the name of the device I&amp;#039;m currently launching on&lt;/strong&gt; is performed, ensuring that every new Giocoso session starts with a cleaned-out PAUSESTATUS table. For clarity, this simply means Giocoso self-cleans the GLOBAL_PAUSESTATUS table so it can never get clogged up with records about PCs that crashed in a paused state.
&lt;/p&gt;

&lt;p&gt;
So: at this stage, we have one Giocoso session that has just paused a recording it was in the middle of playing. Now let&amp;#039;s launch Giocoso on a completely separate device and see what happens.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2.0 The Pause Status Table&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_pause_status_table&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2869-6883&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;pause_resumption&quot;&gt;3.0 Pause Resumption&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
On a completely separate PC, I take Option 6 from the Play Music menu and this happens:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_132624.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20250210_132624.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_132624.jpg?w=650&amp;amp;tok=857c68&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Music starts playing! It&amp;#039;s not terribly dramatic and it all just happened automatically… because there was only one piece of data in the pausestatus table, so there was no ambiguity about which other device&amp;#039;s play I was wanting to &amp;#039;pick up&amp;#039; and resume. You might want to take a closer look at the program display&amp;#039;s top right-hand corner, though. Here is the &lt;em&gt;original&lt;/em&gt; session:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_130757b.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20250210_130757b.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_130757b.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Compare that to the one shown on my second PC&amp;#039;s Giocoso display:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_132624b.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20250210_132624b.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_132624b.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Notice how the new session suddenly thinks that Haydn&amp;#039;s &lt;em&gt;Creation&lt;/em&gt; only lasts for 27 minutes, when the original knew it lasts for over and hour and three quarters?! That&amp;#039;s because the resuming session is only told &lt;em&gt;what&amp;#039;s left&lt;/em&gt; of a recording to play, not what the actual length of the recording would be if it was playing it from the start. You&amp;#039;ll also notice that where the first session had been playing the &lt;em&gt;Creation&lt;/em&gt; as one of a series of 10 plays in succession, the resuming session is only playing this one recording and then it will stop playing anything further. Resumed plays are not part of a &amp;#039;cycle of plays&amp;#039;, in other words, but are considered to be one-off affairs.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3.0 Pause Resumption&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pause_resumption&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;6884-8369&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;ambiguous_pause_resumption&quot;&gt;4.0 Ambiguous Pause Resumption&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
When multiple Giocoso devices have paused their playback, the PAUSESTATUS table in the Giocoso Pro Server will contain multiple rows. A new session coming along and asking to resume playback therefore has to be prompted to say &lt;em&gt;which&lt;/em&gt; playback it wants to resume. Taking the Play Music menu, Option 6 on a &lt;em&gt;third&lt;/em&gt; PC whilst two others are paused therefore triggers this display:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_135008.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20250210_135008.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_135008.jpg?w=650&amp;amp;tok=1a3632&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The list of available devices is constructed by querying the GLOBAL_PAUSESTATUS table, so if a particular device name is not listed, it&amp;#039;s because it&amp;#039;s not present in that table (for whatever reason). Your job at this point is simply to up- and down-arrow to highlight the appropriate device name and then press [the Space Bar] to put an asterisk next to the chosen name, indicated that it has indeed been selected. You then just press [Enter] to confirm the selection (or tab around to the [OK] button and then press [Enter]).
&lt;/p&gt;

&lt;p&gt;
Music playback then immediately begins, as soon as the appropriate paused device has been selected.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4.0 Ambiguous Pause Resumption&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ambiguous_pause_resumption&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;8370-9503&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;some_other_points&quot;&gt;5.0 Some other points...&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Some other brief points to make about this global resumption mechanism, in no particular order:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A play paused on device 1, resumed on device 2, can itself be paused on device 2 and resumed on device 3: there&amp;#039;s no limit to the number of devices that can pause and resume the same recording. You could even pause the recording on device 3 and resume it back on device 1: the music playback can follow you right round the house, if you so wished!&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A paused play continues to be paused on the original device, even though it resumes playback on a new device. If you pause something in the bedroom on the laptop and resume it in the listening room on the main PC, when you go back to your laptop the same recording will still be in paused mode, exactly where you left it.  Completing a play on a new device doesn&amp;#039;t alter where the original device thinks it got to with it, basically! You can, of course, hit the [Terminate] option on the original device to kill off its original, interrupted play.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; All participating devices have to be part of the same home network, with equal access to the Giocoso Pro Server. All need to have the MySQL Client software installed: without it, any attempt to resume a global paused play will result in the &amp;#039;there are no paused devices&amp;#039; message:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_140219.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20250210_140219.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20250210_140219.jpg?w=650&amp;amp;tok=42ea10&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
There may well &lt;em&gt;be&lt;/em&gt; paused clients on the network, but if you don&amp;#039;t have the client tools needed to query the relevant database to see which ones they are, then you can&amp;#039;t pick up their paused plays! This is, of course, the same message you&amp;#039;ll see if you try to resume a global play on a properly-configured client when no other Giocoso machines have actually been paused in mid-play.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/giocoso&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:giocoso&quot; data-wiki-id=&quot;softwares:giocoso:giocoso&quot;&gt;Back to Giocoso Documentation Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/playmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:playmenu&quot; data-wiki-id=&quot;softwares:giocoso:playmenu&quot;&gt;Back to Play Music Menu&lt;/a&gt;&lt;/strong&gt; | 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;5.0 Some other points...&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;some_other_points&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;9504-&amp;quot;} --&gt;
&lt;!-- cachefile /var/www/dokuwiki/data/cache/e/e081772254755b3e4098d2079ca7a4f4.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/playmenu/playlst">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-04T17:04:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playlst</title>
        <link>https://www.bbritten.com/softwares/giocoso/playmenu/playlst</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;play_music_from_a_playlist&quot;&gt;Play Music From A Playlist&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
You will have seen how &lt;strong&gt;Play Music&lt;/strong&gt; menu &lt;strong&gt;Options 2&lt;/strong&gt; and &lt;strong&gt;4&lt;/strong&gt; allow you to construct selection criteria that &amp;#039;match&amp;#039; multiple recordings; and that whenever that happens, you are given the option to save the matched recordings&amp;#039; details in a playlist. Playlists are, in essence, &amp;#039;saved queries&amp;#039; of the Giocoso music database and the point of saving those queries is to allow you to re-play the same music selections over and over without having to remember how you created them in the first place.
&lt;/p&gt;

&lt;p&gt;
Every playlist you create is a simple text file, containing one folder name per line, each folder containing one or more FLAC files. They are all stored in the &lt;strong&gt;$HOME/.local/share/giocoso3/play folder&lt;/strong&gt;. The &lt;strong&gt;Play Music&lt;/strong&gt; menu &lt;strong&gt;Option 5 : Play music from a playlist&lt;/strong&gt; lets you retrieve previously-stored playlists from that folder by simple selection:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_152348.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_152348.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_152348.png?w=650&amp;amp;tok=e344b2&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
All playlists are presented in a list that you can arrow up and down through: just press the spacebar to select one of them (which puts an asterisk into the brackets shown next to the playlist name). Press [Enter] to submit the selection and the contents of the selected playlist will begin to play. Playlists remain on disk for future use indefinitely (at least, until you use the &lt;strong&gt;Play Music&lt;/strong&gt; menu &lt;strong&gt;Option 7&lt;/strong&gt; to delete old ones you&amp;#039;re no longer interested in retaining).
&lt;/p&gt;

&lt;p&gt;
Please note that playlists contain the literal, full path to the location of music files. They are thus only valid for the computer that created them. If, for example, PC 1 has its music files stored at “/home/hjr/Music” and PC 2 has them stored in “/netmusic”, then a playlist that mentions playing the file &lt;strong&gt;/home/hjr/Music/classical/B/Benjamin Britten/Oratorio/War Requiem (Britten - 1963)&lt;/strong&gt; obviously will &lt;em&gt;not&lt;/em&gt; be valid on PC 2. Playlists cannot be transported between different Giocoso-using computers, basically, unless the paths to their music files are identical.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/giocoso&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:giocoso&quot; data-wiki-id=&quot;softwares:giocoso:giocoso&quot;&gt;Back to Giocoso Documentation Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/playmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:playmenu&quot; data-wiki-id=&quot;softwares:giocoso:playmenu&quot;&gt;Back to Play Music Menu&lt;/a&gt;&lt;/strong&gt; | 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;!-- cachefile /var/www/dokuwiki/data/cache/4/4a21f99403c5e81210f2afad651c1c94.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/playmenu/playsel">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-04T10:27:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playsel</title>
        <link>https://www.bbritten.com/softwares/giocoso/playmenu/playsel</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;play_music_from_selection_filters&quot;&gt;Play Music From Selection Filters&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/beethoven96.png?w=220&amp;amp;tok=005efe&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;220&quot; /&gt;
The &lt;strong&gt;Play Music&lt;/strong&gt; menu &lt;strong&gt;Option 2: Play music from selection filters&lt;/strong&gt; allows you to specify one or more selection filters or choices that &amp;#039;adjust&amp;#039; the normal randomisation selection of music that Giocoso would usually perform. Within a given selection, randomisation still takes place (where possible), but within the constraints you&amp;#039;ve supplied.
&lt;/p&gt;

&lt;p&gt;
For example, you could filter by composer to mean &amp;#039;only play music written by Haydn&amp;#039;… but Giocoso will pick which specific Haydn recordings to be played at random. Or you could filter by Genre, so that &amp;#039;only play operas&amp;#039; would be a valid filter… but again, you wouldn&amp;#039;t know ahead of time &lt;em&gt;which&lt;/em&gt; specific operas would get played, because that choice is Giocoso&amp;#039;s random one to make. Then you can start combining these individual filters, so that &amp;#039;only play operas by Haydn&amp;#039; becomes a legitimate filter… and so on
&lt;/p&gt;

&lt;p&gt;
You specify the various filters and their values on the form displayed when you first take Option 2:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_095809.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20251104_095809.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_095809.jpg?w=650&amp;amp;tok=1bfda7&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
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 &amp;#039;play music with defaults&amp;#039;, 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 &amp;#039;Composer Name=Mozart&amp;#039; and then say &amp;#039;Composition Name=Fidelio&amp;#039;… since that opera was written by Beethoven, there won&amp;#039;t be any recordings that match both selection filters). Filters are always &lt;strong&gt;case &lt;em&gt;in&lt;/em&gt;sensitive&lt;/strong&gt;: it makes no difference whether you search for “liszt” or “LISZT” or even “LiSzT”. If the recording has been tagged as being by “Liszt”, all three capitalisations will find it. Filters are also always wild-carded, by which I mean that a search for &amp;#039;brit&amp;#039; will match “Britten”, and one for “amad” will match “Wolfgang Amadeus Mozart”.
&lt;/p&gt;

&lt;p&gt;
In addition, filters are always &amp;#039;additive&amp;#039; and &amp;#039;comprehensive&amp;#039;: 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) &amp;#039;play me something by Mozart &lt;em&gt;or&lt;/em&gt; a ballet&amp;#039;: if you fill in the composer name with &amp;#039;mozart&amp;#039; and genre with &amp;#039;ballet&amp;#039;, you&amp;#039;re asking Giocoso to find ballets composed by Mozart. If you want to put it technically, multiple filters are always “and-ed” together: “mozart AND ballet” rather than “mozart OR ballet”.
&lt;/p&gt;

&lt;p&gt;
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 &amp;#039;maximum duration = 120 (minutes)&amp;#039; and you fill this filter in with the &amp;#039;Maximum Duration&amp;#039; filter set to &amp;#039;40&amp;#039;, then Giocoso will select recordings that are less than 40 minutes in length: the 120 minutes setting is ignored &lt;em&gt;for this filter-based selection only&lt;/em&gt;. On similar grounds, if your excludes file says &amp;#039;never play music by Mozart&amp;#039; and you fill this form in with &amp;#039;Composer Name = Mozart&amp;#039;, your current filter over-rides the excludes file: something by Mozart &lt;em&gt;will&lt;/em&gt; get played, the excludes notwithstanding.
&lt;/p&gt;

&lt;p&gt;
A filter can be &amp;#039;negated&amp;#039; by putting an asterisk in the &amp;#039;±&amp;#039; column next to it. For example:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_100343.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20251104_100343.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_100343.jpg?w=650&amp;amp;tok=724271&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
This means &amp;#039;Play me something by Britten that is &lt;strong&gt;not&lt;/strong&gt; a choral work&amp;#039;.
&lt;/p&gt;

&lt;p&gt;
For the purposes of music selection, be aware that the filters map to tags (listed in all upper-case) as follows:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Composer Name = ARTIST&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Composition Name = ALBUM&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Genre = GENRE&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Performer = COMMENT&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Distinguishing Artist = PERFORMER&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Recording Year = ALBUM (the year component of it)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
It is particularly important to note that the filter labelled &amp;#039;Performer&amp;#039; is &lt;strong&gt;not&lt;/strong&gt; looking in the PERFORMER tag, whereas the one labelled &amp;#039;Distinguishing Artist&amp;#039; one &lt;em&gt;is&lt;/em&gt;. For an explanation of the difference between COMMENT and PERFORMER tags, see &lt;a href=&quot;https://www.bbritten.com/articles/axioms&quot; class=&quot;wikilink1&quot; title=&quot;articles:axioms&quot; data-wiki-id=&quot;articles:axioms&quot;&gt;the Axioms of Classical Tagging article&lt;/a&gt;, Axiom 3 and Axiom 6.
&lt;/p&gt;

&lt;p&gt;
Another subtlety to grasp is that the &amp;#039;Recording Year&amp;#039; 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 &lt;em&gt;extended composition name&lt;/em&gt; (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.
&lt;/p&gt;

&lt;p&gt;
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 &lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/playmenu/playdef&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:playmenu:playdef&quot; data-wiki-id=&quot;softwares:giocoso:playmenu:playdef&quot;&gt;for menu option 1&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
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:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_101050.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20251104_101050.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_101050.jpg?w=650&amp;amp;tok=ffdcb7&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
If you say &amp;#039;no&amp;#039; at this point, your music selections will immediately begin to play anyway. If you say &amp;#039;yes&amp;#039;, you are then asked to give a name to the new playlist:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_101328.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20251104_101328.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_101328.jpg?w=650&amp;amp;tok=991348&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The name can be anything you like, but spaces will be silently converted to underscores. The resulting playlist is stored in &lt;strong&gt;$HOME/.local/share/giocoso3/play&lt;/strong&gt;:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_101613.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20251104_101613.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_101613.jpg?w=650&amp;amp;tok=0a861b&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Playlists are simply text files, despite their weird “.play” extension, so they can be edited at any time in the text editor of your choice. 
&lt;/p&gt;

&lt;p&gt;
Having saved the filter selection as a playlist, Giocoso will begin to play the results of the selection:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_101857.jpg&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20251104_101857.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20251104_101857.jpg?w=600&amp;amp;tok=4c9e6b&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Note how the selection counter (the bit in the top-right of the display that reads &amp;#039;Selection x of y&amp;#039;) has its limit set to the number of recordings that match your selection filters (in my case, I have 322 non-choral recordings by Britten). Left to its own devices, therefore, Giocoso will end up playing &lt;em&gt;everything&lt;/em&gt; that matches a particular set of selection filters. Obviously, however, you can skip, pause or terminate play at any point during the playback by tapping the appropriate control key (indicated towards the bottom of the screen, so &amp;#039;S&amp;#039; for Skip, &amp;#039;P&amp;#039; for Pause, &amp;#039;T&amp;#039; for Terminate and so on.
&lt;/p&gt;

&lt;p&gt;
A playlist thus stores the results of a particular combination of selection filters &lt;em&gt;at a particular time&lt;/em&gt;. That is, the selection results stored in a playlist 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 non-choral works of Britten&amp;#039;s to my music collection, if I ever re-used the playlist just created, I would still only have 322 recordings listed, because that&amp;#039;s how many I had at the time of creating the playlist. Moreover, though those 322 recordings were originally added to the playlist in a random order, that random order is now &lt;em&gt;fixed&lt;/em&gt; as it was at the point of saving the playlist. Use of that playlist in the future will always result in the same 322 recordings playing in that exact same order, every time.
&lt;/p&gt;

&lt;p&gt;
The selection filters themselves, however, are completely dynamic: though I&amp;#039;ve saved this 322-recording playlist, if I came back to option 2 and submitted a new &amp;#039;Britten - Choral + negation&amp;#039; filter, Giocoso would find the new 56 recordings in the database and would include them in the 378-strong recording selection, in a completely new randomised order.
&lt;/p&gt;

&lt;p&gt;
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.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/giocoso&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:giocoso&quot; data-wiki-id=&quot;softwares:giocoso:giocoso&quot;&gt;Back to Giocoso Documentation Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/playmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:playmenu&quot; data-wiki-id=&quot;softwares:giocoso:playmenu&quot;&gt;Back to Play Music Menu&lt;/a&gt;&lt;/strong&gt; | 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;!-- cachefile /var/www/dokuwiki/data/cache/e/ed53ac99509a0d65865525dde7d13aaf.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/playmenu/playsql">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-04T16:57:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playsql</title>
        <link>https://www.bbritten.com/softwares/giocoso/playmenu/playsql</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;play_music_by_advanced_sql_selection&quot;&gt;Play Music By Advanced SQL Selection&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
If you know anything about databases, you&amp;#039;ll know that you can query them by means of a &amp;#039;Structured Query Language&amp;#039; (SQL) select statement. If you are fluent in writing SQL, you can use the &lt;strong&gt;Play Music&lt;/strong&gt; menu &lt;strong&gt;Option 4 : Play music by advanced SQL selection&lt;/strong&gt; to construct SQL select statements to pick out music you want to listen to and have Giocoso play the results. If you are &lt;em&gt;not&lt;/em&gt; familiar with relational databases and SQL, then I strongly suggest you give this menu option a miss! The word &amp;#039;advanced&amp;#039; is in there for a reason!!
&lt;/p&gt;

&lt;p&gt;
Giocoso will not hand-hold you at this point: you&amp;#039;re expected to know how to construct the WHERE clauses of a SQL query, in a syntactically correct manner for a MySQL (or MariaDB) database.
&lt;/p&gt;

&lt;p&gt;
To give you a hint as to why you might want to get up to speed with this menu option, however, consider this use of the selection filter form (from the &lt;strong&gt;Play Music&lt;/strong&gt; menu &lt;strong&gt;Option 2&lt;/strong&gt;):
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_150727.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_150727.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_150727.png?w=650&amp;amp;tok=9f0674&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s fairly clear, I think, what the user is trying to do here: I&amp;#039;d like to listen to quartets and/or chamber music by two different British composers. It&amp;#039;s a perfectly reasonable request, but Giocoso will respond to it this way:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_143818.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_143818.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_143818.png?w=650&amp;amp;tok=9f6696&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
This is because Giocoso matches each filter with the contents of each metadata tag… so saying &amp;#039;Composer = Britten or Bridge&amp;#039; means Giocoso is looking for music whose ARTIST tag was literally set to &amp;#039;Britten or Bridge&amp;#039;… and that&amp;#039;s an absurd value to assign to an ARTIST tag! Giocoso is not reading these filters in an intelligent manner, basically: it&amp;#039;s treating them as literal text, so only literal matches work.
&lt;/p&gt;

&lt;p&gt;
The same is true for the GENRE tag: you&amp;#039;ll probably have tagged your music as &lt;em&gt;either&lt;/em&gt; being a &amp;#039;Quartet&amp;#039; or as being &amp;#039;Chamber&amp;#039; music, but it&amp;#039;s highly unlikely that you&amp;#039;ll have tagged any of it with the literal text &amp;#039;Quartet or Chamber&amp;#039;. If you didn&amp;#039;t, then nothing is going to match the filter settings on this screen!
&lt;/p&gt;

&lt;p&gt;
The Giocoso &amp;#039;standard&amp;#039; selection filter cannot, in other words, do &amp;#039;or&amp;#039; tests…. which is why you might want to start writing your own SQL which &lt;em&gt;can&lt;/em&gt; do so with relative ease. Here, for example, is a selection test that would precisely give accurate results which the filter form was attempting to achieve but could not:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_150905.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_150905.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_150905.png?w=650&amp;amp;tok=6c9eec&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
You&amp;#039;ll first note that the form displayed only processes the text in a SQL query that comes &lt;em&gt;after&lt;/em&gt; the WHERE keyword. I do not need (and in fact &lt;strong&gt;must not write&lt;/strong&gt;!) anything from before that point: Giocoso fills all that in for you. You do not need to say “select * from…” or mention table names, for example. All you have to do is mention composers, genres, performers and other tag-derived information in a SQL WHERE clause in a way that makes logical sense.
&lt;/p&gt;

&lt;p&gt;
Giocoso will also &amp;#039;sanitise&amp;#039; your input to some extent. If, for example, you use the keywords &lt;strong&gt;update&lt;/strong&gt; or &lt;strong&gt;delete&lt;/strong&gt; or include a semi-colon in your text, those will all be stripped out of your text automatically. If the resulting query results in gibberish, so be it: you&amp;#039;ll be told nothing matches your selection criteria. If more than one recording &lt;em&gt;does&lt;/em&gt; match the submitted WHERE clause, then you&amp;#039;ll be offered a chance to save the matching records in a playlist. If you choose not to, fine: playback of the selections begins immediately. If you do save your playlist, playback begins immediately after the playlist is saved.
&lt;/p&gt;

&lt;p&gt;
Here is the playlist resulting from the Britten/Bridge/Chamber/Quartet query you see me submitting above:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_151016.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:playmenu:screenshot_20231102_151016.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/playmenu/screenshot_20231102_151016.png?w=650&amp;amp;tok=f3e286&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
It certainly mentions recordings by the two named composers &lt;em&gt;and&lt;/em&gt; in the two genres requested (and no others!): so multiple selections joined with AND and OR keywords, with judicious use of parentheses to constrain processing order along logically-meaningful lines has certainly worked in this case.
&lt;/p&gt;

&lt;p&gt;
Hopefully, you&amp;#039;ll now see &lt;em&gt;why&lt;/em&gt; the Advanced SQL option exists -but if you aren&amp;#039;t familiar with writing SQL, it&amp;#039;s a high mountain to climb. I would strongly recommend installing a tool such as &lt;a href=&quot;https://sqlitebrowser.org&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://sqlitebrowser.org&quot; rel=&quot;ugc nofollow noopener&quot;&gt;DB Browser for SQLite&lt;/a&gt; and using its &lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt; tools to investigate the Giocoso database structure and to practice SQL selections before hoping to use Play Menu option 4 to meaningfully generate the sort of subtle and complex music selections it&amp;#039;s capable of, anyway.
&lt;/p&gt;

&lt;p&gt;
A couple of notes to conclude.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; If you are &lt;strong&gt;not&lt;/strong&gt; using Giocoso Pro features, the table you&amp;#039;ll be querying is called RECORDINGS, and you can query columns called: DIRNAME (the folder in which a FLAC is physically found), COMPOSER, COMPOSITION, GENRE, COMMENT, PERFORMER and DURATION. Remember that COMMENT is where Giocoso assumes you store your complete list of performers for a recording and PERFORMER is where you store the full name of the &amp;#039;distinguishing artist&amp;#039;. See &lt;a href=&quot;https://www.bbritten.com/articles/axioms&quot; class=&quot;wikilink1&quot; title=&quot;articles:axioms&quot; data-wiki-id=&quot;articles:axioms&quot;&gt;Axioms 3 and 6&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; If you &lt;strong&gt;are&lt;/strong&gt; using Giocoso Pro features, you&amp;#039;ll be querying a table called GLOBAL_RECORDINGS and can query columns called: FILESUFFIX (almost equivalent to DIRNAME), COMPOSER, COMPOSITION, GENRE, COMMENT, PERFORMER and DURATION. The difference between DIRNAME and FILESUFFIX is simply that DIRNAME is the full path to the location of the file on the computer Giocoso is running on, where FILESUFFIX is only the part of the physical location of the file that is common to all computers that are running Giocoso on the same home network.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DURATION is always stored in seconds, so a query of “duration &amp;lt; 30” is asking to play recordings that are less than 30 seconds long! If you want minutes, remember to multiply by 60 to match what&amp;#039;s stored in the database: “duration &amp;lt; 1800” will indeed give you recordings that last less than 30 minutes (because there are 3600 seconds to an hour, of course).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Wildcards can be specified, provided you use the syntax &lt;em&gt;column LIKE %required_text%&lt;/em&gt;. For example, &lt;em&gt;composer like %rit%&lt;/em&gt; would find recordings by Benjamin B&lt;strong&gt;rit&lt;/strong&gt;ten and Mo&lt;strong&gt;rit&lt;/strong&gt;z Moszkowski.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; AND and OR joins are fine, but if you use both, usual SQL rules of ambiguity apply, which can be resolved only by use of parentheses. For example &lt;em&gt;composer like &amp;#039;%britten%&amp;#039; and genre = &amp;#039;choral&amp;#039; or genre = &amp;#039;symphonic&amp;#039;&lt;/em&gt; is ambiguous: do you mean, give me everything by Benjamin Britten, then everything (by anyone) that&amp;#039;s a choral or symphonic work? Or do you mean, give me everything by Benjamin Britten that&amp;#039;s a choral work plus everything that&amp;#039;s a symphonic work regardless of composer. Or (most likely) did you mean, give me everything that Benjamin Britten wrote that&amp;#039;s either a choral work or a symphonic one? If you meant this last one, you would have to re-write the query with brackets: &lt;em&gt;composer like &amp;#039;%britten%&amp;#039; and (genre = &amp;#039;choral&amp;#039; or genre = &amp;#039;symphonic&amp;#039;)&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Values must be single-quoted. It&amp;#039;s &lt;em&gt;composer like &amp;#039;%britten%&amp;#039;&lt;/em&gt; not &lt;em&gt;composer like %britten%&lt;/em&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; If you are querying for a string that itself contains something that looks like a single quote, it must be escaped. If you wanted to search for the works of Vincent d&amp;#039;Indy, for example, your query would have to be in the form: &lt;em&gt;composer=&amp;#039;Vincent d&amp;#039;&amp;#039;Indy&amp;#039;&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Writing useful queries can be tricky, so once you&amp;#039;ve got one that you like, note that Giocoso remembers is &lt;em&gt;so long as you don&amp;#039;t type a new query in&lt;/em&gt;. If you tap the K (or k) key to “re&lt;em&gt;k&lt;/em&gt;all” the previously-submitted SQL query, Giocoso will pre-load the dialog screen where you type fresh queries with the last-submitted query. The recalled SQL can then be modified as you see fit or simply re-submitted as-is.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;

&lt;p&gt;
| &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/software-menu&quot; class=&quot;wikilink1&quot; title=&quot;software-menu&quot; data-wiki-id=&quot;software-menu&quot;&gt;Back to Software Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/giocoso&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:giocoso&quot; data-wiki-id=&quot;softwares:giocoso:giocoso&quot;&gt;Back to Giocoso Documentation Home&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;https://www.bbritten.com/softwares/giocoso/playmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:playmenu&quot; data-wiki-id=&quot;softwares:giocoso:playmenu&quot;&gt;Back to Play Music Menu&lt;/a&gt;&lt;/strong&gt; | 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;!-- cachefile /var/www/dokuwiki/data/cache/a/a99dd16051ce1bf2775234b343553800.xhtml used --&gt;
</description>
    </item>
</rdf:RDF>
