<?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:dbmenu</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:44:47+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/dbmenu/backupdb"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/dbmenu/createdb"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/dbmenu/fastscan"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/dbmenu/fullscan"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/dbmenu/importdb"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/dbmenu/optimsdb"/>
                <rdf:li rdf:resource="https://www.bbritten.com/softwares/giocoso/dbmenu/switchdb"/>
            </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/dbmenu/backupdb">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-22T12:41:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>backupdb</title>
        <link>https://www.bbritten.com/softwares/giocoso/dbmenu/backupdb</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;backup_a_database&quot;&gt;Backup A Database&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Keep in mind that most of a Giocoso music database, by design, can &lt;em&gt;always&lt;/em&gt; be reconstructed from scratch by doing a Full Scan (Option 3): so long as your music files are safe on disk somewhere, you can always get Giocoso to have a fresh look at them and thereby re-create the RECORDINGS table.
&lt;/p&gt;

&lt;p&gt;
But there&amp;#039;s the rub: a Giocoso music database is more than just the RECORDINGS table: it&amp;#039;s also the PLAYS table, storing the history of everything you&amp;#039;ve ever played with Giocoso… and that definitely &lt;em&gt;can&amp;#039;t&lt;/em&gt; be reconstructed, should it ever be lost or corrupted for some reason. Protecting your history of plays is thus a rather important thing to do on a fairly regular basis. The Database Management menu Option 6 has accordingly been provided to make taking a backup of your local music database, including its previous play history cargo, as painless as possible.
&lt;/p&gt;

&lt;p&gt;
I should mention that this option really does only work on the &lt;em&gt;local&lt;/em&gt; database: backups of any remote, shared Pro database you might be using are handled in a completely different way. It is also true to say that a Pro database &lt;em&gt;is&lt;/em&gt; a sort-of backup of your local system&amp;#039;s PLAYS table. In a Pro context, every music play is recorded twice: once in the local database and then on the remote database. You could lose your local database completely… and yet the Pro database will still know what you have listened to. Nevertheless, even in a Pro context, it&amp;#039;s a good idea not to lose your local PLAYS table… so, backing it up remains an important thing to do.
&lt;/p&gt;

&lt;p&gt;
Performing such backups requires that you first say &lt;em&gt;where&lt;/em&gt; you want your backups saved to: take the &lt;strong&gt;Administration&lt;/strong&gt; menu &lt;strong&gt;Option 3&lt;/strong&gt; to edit the configuration file. Once you&amp;#039;ve selected the database you want to work with, you&amp;#039;ll see this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231106_082532.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231106_082532.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231106_082532.png?w=650&amp;amp;tok=2d7d08&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 &amp;#039;Folder where to write database backups&amp;#039; value is a full path to the location where you want backups stored: in the case above, I&amp;#039;m proposing to store things in my home folder, /home/hjr. The default folder is /tmp, but you can set the path to be anything you like, provided only that it exists and you&amp;#039;ve got permissions to write there. If you were to specify a folder that doesn&amp;#039;t exist, for example, then the value is automatically replaced with /tmp anyway.
&lt;/p&gt;

&lt;p&gt;
Once the backup folder has been configured in the Persistent Configuration file in this way, you can simply take the Database Management menu Option 6 to create a fresh backup:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231106_100154.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231106_100154.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231106_100154.png?w=650&amp;amp;tok=7a6ffa&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 have first to specify &lt;em&gt;which&lt;/em&gt; database you want backed up: you can only backup a single database at a time, no matter how many others might exist. Just up- and down-arrow through the list until the right database is highlighted, then press the Space Bar to select that entry. An asterisk will appear in the brackets next to the database name. Press [Enter] to submit the selection when ready: nn practically no time at all, you&amp;#039;ll see this message appear:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231106_100325.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231106_100325.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231106_100325.png?w=650&amp;amp;tok=af9741&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;
Press [OK] to dismiss that message and you&amp;#039;ll be returned to the main menu. But what exactly has been produced by this process and where is it?! Well, it&amp;#039;s time to break out your PC&amp;#039;s file manager:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231106_100503.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231106_100503.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231106_100503.png?w=650&amp;amp;tok=00022d&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;
Here, you see my /home/hjr folder: and the latest entry in it is a file called &amp;#039;main_Classical_database…something or other&amp;#039;. If you compare that with the name of the database I selected to backup about three screenshots back, you&amp;#039;ll be able to work out that the backup file created by Option 6 starts with the name of the database being backed up. The word -backup- is there, too, so that you know, er, that it&amp;#039;s a backup of the database! Finally, a time-and-datestamp is appended to the end of the file name (so, you can tell my backup was taken at 10:03 in the morning on 6th November 2023), along with a .tar file extension.
&lt;/p&gt;

&lt;p&gt;
The tar extension tells you that this backup is created as a &amp;#039;tape archive&amp;#039; -that is, as an &lt;strong&gt;un&lt;/strong&gt;compressed bundle of folders and files, wrapped up into a single output file. On most Linux distros, you can right-click a tar file and say &amp;#039;open in Ark&amp;#039; or some equivalent &amp;#039;archive extractor&amp;#039; tool. If I do that now and click to open all the nested folders included in the tar, you&amp;#039;d see this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231106_101005.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231106_101005.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231106_101005.png?w=650&amp;amp;tok=724b11&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 the entire file structure, right down to the .local/share/giocoso3/db from which the data for this backup was sourced. However the db folder inside the tar file only contains the .db file for the selected database (and any related files, such as the .db-wal and .db-shm files needed to make the Giocoso database work properly).
&lt;/p&gt;

&lt;p&gt;
Recovery from this backup would therefore consist of grabbing those three files out of the tar file and copying them manually into the &amp;#039;real&amp;#039; $HOME/.local/share/giocoso3/db folder, over-writing anything sharing the same file names.
&lt;/p&gt;

&lt;p&gt;
Since backups are &lt;em&gt;so&lt;/em&gt; important to do, Giocoso provides one of its few remaining runtime switches to create them on a scheduled basis, without manual interaction. The relevant command is simply:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;giocoso3.sh --backup&lt;/pre&gt;

&lt;p&gt;
…which will backup &lt;em&gt;&lt;strong&gt;the default database&lt;/strong&gt;&lt;/em&gt; (as specified in the Persistent Configuration file) &lt;strong&gt;only&lt;/strong&gt;. Backing up &lt;em&gt;non-default&lt;/em&gt; databases is &lt;em&gt;only&lt;/em&gt; possible using the Database Management menu Option 6 interactively. As an example, here&amp;#039;s how I backup my primary music database on a nightly basis, using the crontab on my music PC:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# Backup the Giocoso Database every night at 2am
# ---------------------------------------------------------------- 
0 2 * * *      /usr/bin/giocoso3.sh --backup&lt;/pre&gt;

&lt;p&gt;
Bear in mind, however, that the Giocoso database is only a file on a file system: you can perfectly well use standard file system tools to take backup copies of it at any time, without needing to use any of Giocoso&amp;#039;s built-in backup capabilities. Here, for example, is another crontab entry I use to create remote backups of &lt;em&gt;all&lt;/em&gt; my Giocoso databases in one hit:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# Backup the Giocoso Database every Tuesday at 6pm
# ----------------------------------------------------------------
0 18 * * TUE     /usr/bin/rsync -avh --delete $HOME/.local/share/giocoso3/db/ hjr@remote_server:/home/hjr/Documents/GiocosoBackups&lt;/pre&gt;

&lt;p&gt;
…which simply copies everything sitting in my Giocoso /db subfolder into a single folder on a remote server. The backup gets over-written every week by the newest backup, but that&amp;#039;s OK for my purposes. Simple use of &amp;#039;cp&amp;#039; and &amp;#039;mv&amp;#039; could achieve similar results. The main point to make here is not that it necessarily matters &lt;em&gt;how&lt;/em&gt; you backup your music database… but that you &lt;em&gt;&lt;em class=&quot;u&quot;&gt;should&lt;/em&gt;&lt;/em&gt; back it up! Your music play history is at risk if you don&amp;#039;t.
&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/dbmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:dbmenu&quot; data-wiki-id=&quot;softwares:giocoso:dbmenu&quot;&gt;Back to Database Management Menu&lt;/a&gt;&lt;/strong&gt; | 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;!-- cachefile /var/www/dokuwiki/data/cache/0/00bc0ae140f35d2210e60acda850bea1.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/dbmenu/createdb">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-22T12:03:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>createdb</title>
        <link>https://www.bbritten.com/softwares/giocoso/dbmenu/createdb</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;create_a_music_database&quot;&gt;Create A Music Database&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
All music databases have to be created in the first place: the Database Management menu Option 1 will first prompt you to supply a name for the database you&amp;#039;re about to create. The name can be anything you like, though it&amp;#039;s case-sensitive and spaces will be converted to underscores:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231103_141559.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231103_141559.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231103_141559.png?w=650&amp;amp;tok=25e529&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 were to supply what you see above as the database name, for example, you will eventually end up with this &lt;em&gt;physical&lt;/em&gt; outcome:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231103_141740.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231103_141740.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231103_141740.png?w=650&amp;amp;tok=379728&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 note that all created databases end up in the &lt;strong&gt;$HOME/.local/share/giocoso3/db&lt;/strong&gt; folder, with a .db extension tacked onto the end of their name (and, as I say, with underscores used to replace spaces, but with any upper/lower-case letters preserved).
&lt;/p&gt;

&lt;p&gt;
Since a database name maps to a physical file on disk, if you try to create a database with a name that &lt;em&gt;already&lt;/em&gt; exists, you&amp;#039;ll be told about the problem:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231103_142002.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231103_142002.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231103_142002.png?w=650&amp;amp;tok=a05d2c&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 only thing you can do at this point is press [Enter] and try typing a new name that doesn&amp;#039;t conflict with that of an existing database.
&lt;/p&gt;

&lt;p&gt;
As soon as you&amp;#039;ve supplied a unique database name that doesn&amp;#039;t already exist, Giocoso will prompt you to point at the folder which sits at the root of the folder structure which contains your music files, so that a scan of them and their metadata can take place -and the scanned data will then be loaded into the new database:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231103_142215.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231103_142215.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231103_142215.png?w=650&amp;amp;tok=1319ab&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 screen can be tricky to use properly! The general idea is that you use the upper &amp;#039;pane&amp;#039; to move around your hard disk&amp;#039;s folder structure, whilst the second low-height panel records the full path currently achieved. The tricky bit is that the two panels are inter-linked, so if you simply type a path in the second panel, the upper panel&amp;#039;s contents will change to reflect that, just as if you press [Space Bar] on a folder name in the upper panel, that counts as &amp;#039;entering into&amp;#039; the highlighted folder, whose name thus gets added to the path appearing in the second panel. It takes a bit of getting used to, is the short version!
&lt;/p&gt;

&lt;p&gt;
As mentioned, your job is to point to the &amp;#039;root&amp;#039; or top-most folder in your music file storage structure. For example:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231103_150434.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231103_150434.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231103_150434.png?w=650&amp;amp;tok=31f848&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;
From this screenshot of my file manager, you can see I keep all my music inside the &lt;strong&gt;/sourcedata&lt;/strong&gt; folder -but that, within that, there is quite the forest of folders and sub-folders! Thus you see a particular FLAC file stored inside a folder whose full path is &lt;strong&gt;/sourcedata/music/classical/C/Camille Saint-Saëns/Ballet/Ballet from Henry VIII…&lt;/strong&gt;. So the question is, what folder would, when pointed at, imply &amp;#039;catching&amp;#039; &lt;em&gt;&lt;strong&gt;all&lt;/strong&gt;&lt;/em&gt; my FLACs in one go. It&amp;#039;s no good me pointing at /sourcedata/music/classical/C, because though that would mean scanning Saint-Säens, Dittersdorf, Abel, Weber, Nielsen and others, I would not end up scanning and Aaron Copland or Benjamin Britten! Meanwhile, if I pointed at /sourcedata, that would catch too &lt;em&gt;many&lt;/em&gt; FLACs -because I don&amp;#039;t want anything in &amp;#039;backups&amp;#039; or &amp;#039;audio&amp;#039; to be catalogued as part of my music collection.
&lt;/p&gt;

&lt;p&gt;
I should point out here that there&amp;#039;s an implicit truth being touched on here: a good music catalogue is also a good &lt;em&gt;physical&lt;/em&gt; folder structure! Ideally, your physical folder structure will mirror your &lt;em&gt;logical&lt;/em&gt; data structures as contained within your FLAC metadata. Having physical and logical structures mirror each other like this means you can easily navigate your music collection using both standard tools (like a file manager) &lt;strong&gt;and&lt;/strong&gt; logical tools - such as a selection filter in a music player! If the two are fighting each other, life gets much more complicated than it needs to be :)
&lt;/p&gt;

&lt;p&gt;
Anyway: I digress. For my purposes, the correct folder to point to would be &lt;strong&gt;/sourcedata/music/classical&lt;/strong&gt;. That captures all the A, B, C… and so on sub-folders (and everything they, in their turn, contain). Having used the folder-choosing dialogs to point to that location, Giocoso goes off to scan it for any possible FLACs, which can take a long time for a large music collection -and nothing much happens as it searches, so it can look like Giocoso has frozen: be patient with it! Eventually (after a couple of minutes, perhaps), you&amp;#039;ll see this sort of thing:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_100119.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_100119.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_100119.png?w=650&amp;amp;tok=423275&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 that it has worked out how many folders within the file storage hierarchy you pointed to contain FLACs… and it visits every single one of them in turn to inspect the FLAC files themselves. The percentage bar in the middle of the screen will gradually increment as the file inspections take place. Again, for a large music collection, this inspection process can take a long time: my 15,388 folders get scanned by an asthmatic 2012 i5 CPU in about an hour, for example.
&lt;/p&gt;

&lt;p&gt;
This process is actually a &amp;#039;full scan&amp;#039; refresh of the database contents -something that you can trigger yourself, without the initial database creation bit, by selection &lt;strong&gt;Database Management&lt;/strong&gt; menu &lt;strong&gt;Option 3&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
A full scan wipes every table in the database (apart from the PLAYS one, which obviously at the point of database creation has nothing in it anyway!) and populates it from scratch by extracting the metadata tags from every FLAC inspected, then aggregates the individual tracks into per-recording entries in the RECORDINGS table. When considering what data Giocoso takes from the FLAC files and stores in its database, it helps to think about what &lt;em&gt;use&lt;/em&gt; it will eventually put that data… and the best example of that I can think of is the &lt;strong&gt;Play Music&lt;/strong&gt; menu &lt;strong&gt;Option 2&lt;/strong&gt; search filter:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_105832.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_105832.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_105832.png?w=650&amp;amp;tok=71b153&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 search for a &amp;#039;Composer Name&amp;#039;, you&amp;#039;re actually searching what Giocoso calls &amp;#039;Composer&amp;#039; -and that is extracted from the FLAC&amp;#039;s ARTIST tag. Similarly, the &amp;#039;Composition Name&amp;#039; search field is internally called &amp;#039;composition&amp;#039;, and that&amp;#039;s extracted from a FLAC&amp;#039;s ALBUM tag. The complete set of search field, Giocoso internal name and source FLAC tag is as follows:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Composer Name = composer → ARTIST tag&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Composition Name = composition → ALBUM tag&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Genre = genre → GENRE tag&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Performer = comment → COMMENT tag&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Distinguishing Artist = performer → PERFORMER tag if present, otherwise the COMMENT tag, truncated at first comma, colon or open parenthesis&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Duration = duration → computed by adding the per-track durations of all FLACs housed in the same folder&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
It&amp;#039;s important to note that Giocoso&amp;#039;s composer is derived from the ARTIST tag; the composition name is derived from the ALBUM tag; and the complete list of performers on a recording is derived from the COMMENT tag (all exactly as explained in my &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 article&lt;/a&gt;, in fact).
&lt;/p&gt;

&lt;p&gt;
Confusion may arise between &amp;#039;Performer&amp;#039; and &amp;#039;Distinguishing Artist&amp;#039;! In Giocoso&amp;#039;s world, &amp;#039;performers&amp;#039; are the complete set of people performing on a recording: Herbert von Karajan, the Berlin Philharmonic Orchestra and Christa Ludwig would all be &amp;#039;performers&amp;#039; on a recording of Mahler&amp;#039;s &lt;em&gt;Rückertlieder&lt;/em&gt;, for example …and would all be listed in the COMMENT tag of those FLACs. Only one of those artists counts as the &amp;#039;distinguishing artist&amp;#039;, though: the one artist whose presence distinguishes &lt;em&gt;this&lt;/em&gt; recording of those songs from any other. Many people might think Christa Ludwig is that person; many others might regard Karajan as the more readily-identified person of significance: there&amp;#039;s no rule of the Universe that says it should be one or the other… but it &lt;em&gt;can&lt;/em&gt; only be one!
&lt;/p&gt;

&lt;p&gt;
Well, in an ideal world, you&amp;#039;d pick one and write it into a PERFORMER tag: and if a dedicated PERFORMER tag is present, Giocoso will extract the data from that and stick it in a column it internally also calls &amp;#039;performer&amp;#039; and which the search filter references as &amp;#039;Distinguishing Artist&amp;#039;.
&lt;/p&gt;

&lt;p&gt;
If you don&amp;#039;t have a dedicated PERFORMER tag, though, then Giocoso improvises: it again looks to the COMMENT tag and grabs the first name it finds before the first comma and assumes that first name is the most important or &amp;#039;distinguishing&amp;#039; artist.
&lt;/p&gt;

&lt;p&gt;
So, if you&amp;#039;ve tagged your Mahler songs with COMMENT=&lt;strong&gt;Herbert von Karajan, Berlin Philharmonic Orchestra, Christa Ludwig (mezzo-soprano)&lt;/strong&gt;, and there&amp;#039;s no dedicated PERFORMER tag present, then Giocoso will grab &lt;strong&gt;Herbert von Karajan&lt;/strong&gt; (the first name before the first comma) and use that as what it calls the &amp;#039;performer&amp;#039; and what the search filter refers to as &amp;#039;Distinguishing Artist&amp;#039;.
&lt;/p&gt;

&lt;p&gt;
Obviously, that makes a difference as to what fields you&amp;#039;d search if, one day, you fancied listening to something being sung by Christa Ludwig.
&lt;/p&gt;

&lt;p&gt;
The automatic determination of a PERFORMER tag uses three bits of punctuation to determine where names stop and lists start: commas, colons and open brackets. For example, if your COMMENT tag was &lt;strong&gt;Utrecht String Quartet (Eeva Koskinen (violin), Katherine Routley (violin), Sven Arne Tepl (viola), Sebastian Koloski (cello))&lt;/strong&gt;, the &lt;em&gt;performer&lt;/em&gt; value in Giocoso&amp;#039;s database would end up being &lt;strong&gt;Utrecht String Quartet&lt;/strong&gt;, because the &amp;#039;chop&amp;#039; at the &lt;em&gt;first&lt;/em&gt; open bracket would break the whole string at that point. Another example: a COMMENT of &lt;strong&gt;Rinaldo Alessandrini, Concerto Italiano, Akademia: Ensemble Vocal Regional Champagne &amp;amp; Ardenne, Deborah York, Patrizia Biccire, Sara Mingardo&lt;/strong&gt; would result in the distinguishing artist being &lt;strong&gt;Rinaldo Alessandrini&lt;/strong&gt;, because the first comma kicks in as the delimiter at that point. Finally, &lt;strong&gt;Robert King: The King&amp;#039;s Consort&lt;/strong&gt; in COMMENT would become &lt;strong&gt;Robert King&lt;/strong&gt; as distinguishing artist, because the first colon acts as the only available delimiter.
&lt;/p&gt;

&lt;p&gt;
Generally, it&amp;#039;s not a great idea to have to guess what a program has interpreted as the distinguishing artist if you&amp;#039;re intending to &lt;em&gt;use&lt;/em&gt; that data later on! It&amp;#039;s therefore best if you make sure your tagging software creates proper, dedicated PERFORMER tags (as &lt;a href=&quot;https://www.bbritten.com/softwares/semplice/semplice&quot; class=&quot;wikilink1&quot; title=&quot;softwares:semplice:semplice&quot; data-wiki-id=&quot;softwares:semplice:semplice&quot;&gt;my own Semplice program&lt;/a&gt; does, for example), long before Giocoso gets to look at the metadata. Then all you have to remember is COMMENT is all the performers, and PERFORMER is the one, special performer that makes this recording particularly memorable.
&lt;/p&gt;

&lt;p&gt;
Anyway: once the analysis of the discovered FLACs has completed, the progress bar will disappear and be replaced with this message:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_123220.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_123220.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_123220.png?w=650&amp;amp;tok=1a9fd6&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;
Press [Enter] to submit an &amp;#039;ok&amp;#039; response, and you&amp;#039;ll be returned to the main menu:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20251119_122735.jpg&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20251119_122735.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20251119_122735.jpg?w=650&amp;amp;tok=724eca&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 might notice that the blue text at the top of the display now says you are using (in my case) &amp;#039;Main_Classical_database&amp;#039;: that indicates the newly-named database has been created and populated correctly and is ready to use: you could press P, then tap 1… and music chosen at random from your database will then begin to play. Be aware, however, that unless the Persistent Configuration File (see &lt;strong&gt;Administration&lt;/strong&gt; menu, &lt;strong&gt;Option 2&lt;/strong&gt;) lists (again, in my worked example) &amp;#039;Main_Classical_database&amp;#039; as the &lt;strong&gt;default&lt;/strong&gt; database, then the next time you launch Giocoso, this is &lt;em class=&quot;u&quot;&gt;not&lt;/em&gt; the database that will be used for other plays automatically.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;In Summary, therefore&lt;/em&gt;&lt;/strong&gt;: Creating a database means (a) providing a unique name that doesn&amp;#039;t already exist; and (b) pointing Giocoso to a folder within which the music you want Giocoso to catalogue can be found, after which © Giocoso performs the equivalent of a &amp;#039;full refresh&amp;#039; of the new database. Metadata tags embedded with each discovered FLAC are used to populate the Giocoso database with values that can subsequently be searched and filtered by, thereby allowing Giocoso later on to play music you want to be played. A freshly-created database can be used immediately to play music, but won&amp;#039;t subsequently be used automatically unless the Persistent Configuration file mentions it, by name, as the &amp;#039;default&amp;#039; database.
&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/dbmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:dbmenu&quot; data-wiki-id=&quot;softwares:giocoso:dbmenu&quot;&gt;Back to Database Management Menu&lt;/a&gt;&lt;/strong&gt; | 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;!-- cachefile /var/www/dokuwiki/data/cache/c/c71aeba8a03ed546cddb81b4e8a5e6e2.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/dbmenu/fastscan">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-06T22:36:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>fastscan</title>
        <link>https://www.bbritten.com/softwares/giocoso/dbmenu/fastscan</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;fast_scan_for_new_recordings&quot;&gt;Fast Scan For New Recordings&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Fast Scan For New Recordings&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fast_scan_for_new_recordings&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-43&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;
When you create a database, you tell Giocoso where your music files can be found and it reads all of them and populates its database with details gathered from them. As such, the Giocoso database is first created as a &amp;lt;em&amp;gt;snapshot&amp;lt;/em&amp;gt; of your music files: that is, a statement about what files exist, and the metadata they contain, &lt;em&gt;at a specific point of time&lt;/em&gt;. If you add new music to your collection, or alter the details associated with existing music files, or even delete unwanted music files -well, the previous snapshot is going to be out-of-date. Giocoso will, in other words, not know about these new additions, deletions and changes. To &lt;em&gt;make&lt;/em&gt;it aware of these sorts of changes, you need periodically to run the Database Management menu, Option 2: &amp;lt;strong&amp;gt;Fast Scan for new recordings&amp;lt;/strong&amp;gt;. This option makes Giocoso take a fresh look at your hard disk, whereupon it will notice if new things have appeared it ought to add to its own database. From Version 3.30 on, it will also spot when folders which &lt;em&gt;used&lt;/em&gt; to be accessible on a hard disk have disappeared for some reason (perhaps actually deleted, perhaps merely re-named) and remove the corresponding entries for them from its database.
&lt;/p&gt;

&lt;p&gt;
Note that the fast refresh only works on the basis of &lt;em&gt;folder&lt;/em&gt; detection. If a new folder is spotted, then fine: its &lt;strong&gt;file&lt;/strong&gt; contents are analysed and added to the database. However, if you change the metadata tags associated with a FLAC file, or physically change the name of the FLAC file itself, but leave the folder name the file is inside unaltered, then that will &lt;em&gt;not&lt;/em&gt; be detected as a change that should trigger updates to the Giocoso database. The fast refresh is oblivious to file-level alterations: but if you rename a folder or create a new folder, then the fast refresh will spot those easily and make appropriate changes to the database for you. If you need the database to be aware of file-level metadata (tag) changes, that&amp;#039;s what Option 3: &lt;strong&gt;Full Scan all recordings&lt;/strong&gt; is for.
&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;44-2087&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;the_fast_scan_process&quot;&gt;2.0 The Fast Scan Process&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The Fast Scan starts by asking you what database you want to refresh:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_140822.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_140822.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_140822.png?w=650&amp;amp;tok=878727&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 dialog box is simply listing all files with a .db extension that can be found in the &lt;strong&gt;$HOME/.local/share/giocoso3/db&lt;/strong&gt; folder. You arrow up and down the list until the database you want to work with is highlighted, then press the Space Bar to select it: an asterisk appears in the brackets next to the selected database name. Note, therefore, that whilst you can create and maintain multiple databases, you can only refresh one of them at a time.
&lt;/p&gt;

&lt;p&gt;
Next, Giocoso will prompt you for details as to where it should look to discover new music files:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_141039.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_141039.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_141039.png?w=650&amp;amp;tok=8a40ab&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 the same folder-selection dialog you had to deal with when first creating your database. You can navigate your on-disk folder structures by arrowing around the entries in the top pane and pressing the Space Bar when a correct folder name is highlighted. As you &amp;#039;descend&amp;#039; into a folder, its name is appended to the full path that appears underneath the folder list, in the second panel of the form. Alternatively, you can simply type the path in that second panel, and the top panel will automatically adjust itself to display the last folder on the path you&amp;#039;ve supplied.
&lt;/p&gt;

&lt;p&gt;
The folder you point to should be at the &amp;#039;root&amp;#039; of your music collection (or, somewhat confusingly, be the top-level folder in a folder hierarchy, depending on how you think of things!): Giocoso will search &lt;em&gt;every&lt;/em&gt; sub-folder beneath the one you point to, looking for FLACs.
&lt;/p&gt;

&lt;p&gt;
Once you&amp;#039;ve got the right &amp;#039;root&amp;#039; folder mentioned in the second panel, press [Enter] and Giocoso will run off to that folder and start searching for FLACs:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_141528.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_141528.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_141528.png?w=650&amp;amp;tok=8fa6a1&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 &amp;#039;Scanning file system…&amp;#039; message will let you know that Giocoso is at least thinking about things, but there won&amp;#039;t be any other evidence of it actually doing any work (potentially for many minutes, if your music collection is large). Eventually, however, that one, slightly cryptic message will give way to a proper progress dialog:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_141748.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_141748.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_141748.png?w=650&amp;amp;tok=342371&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 the specific folder being investigated at each moment, and an overall progress bar clicks slowly up to the 100% mark. Eventually, you&amp;#039;ll see a message to say the refresh has completed: click [Enter] on that and you&amp;#039;ll be returned to the main menu.
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s important to understand what this fast scan process will and will &lt;em&gt;not&lt;/em&gt; do for you. Putting it simply:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; New recordings will be added to the database&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Existing recordings that have changed physical &lt;strong&gt;folder&lt;/strong&gt; name will be added to the database&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Existing recordings that have had metadata changed will remain &amp;lt;strong&amp;gt;unchanged&amp;lt;/strong&amp;gt; in the database&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Recordings that have been physically moved or deleted from disk will be cleared from the database&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Putting it even more simply: new recordings, or old recordings that &amp;lt;em&amp;gt;look&amp;lt;/em&amp;gt; new because their folder names have changed, are added to the Giocoso database by a fast scan. Folders now found to be &amp;#039;missing&amp;#039; are also cleared from the database (for Version 3.30 and above). But under no circumstances are the details of non-modified folders and their contents altered by doing a fast refresh.
&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 Fast Scan Process&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_fast_scan_process&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2088-5505&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;fast_scans_and_giocoso_pro&quot;&gt;3.0 Fast Scans and Giocoso Pro&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
All fast (and full) refreshes of Giocoso are updates to the Giocoso &lt;em&gt;local&lt;/em&gt; database only. Each installation of Giocoso on different music-playing computing devices will have its own, unique database, periodically refreshed and kept accurate by fast or full refreshes.
&lt;/p&gt;

&lt;p&gt;
However, the release of Version 3.30 introduced the concept of &amp;#039;Giocoso Pro&amp;#039;, whereby a device&amp;#039;s &lt;em&gt;local&lt;/em&gt; database contents can be &amp;#039;pushed&amp;#039; to a remote MySQL/MariaDB database that is shared amongst all music-playing devices. Accordingly, from that version onwards, and &lt;strong&gt;&lt;em&gt;if&lt;/em&gt;&lt;/strong&gt; Pro functionality has been enabled by setting a remote database server&amp;#039;s IP address in the Giocoso configuration file, a fast refresh will complete its local work by going on to copy the refreshed local RECORDINGS table to the remote shared database. Essentially, the local &lt;strong&gt;RECORDINGS&lt;/strong&gt; table&amp;#039;s data is inserted into the remote database&amp;#039;s &lt;strong&gt;GLOBAL_RECORDINGS&lt;/strong&gt; table.
&lt;/p&gt;

&lt;p&gt;
Where a full local refresh triggers a complete &lt;strong&gt;replacement&lt;/strong&gt; of the GLOBAL_RECORDINGS table content, a &lt;strong&gt;fast&lt;/strong&gt; local refresh triggers a process of working out what records the local database has the remote one hasn&amp;#039;t (those &amp;#039;missing&amp;#039; records need to be added to the global table). There&amp;#039;s also a process of working out whether the global database knows about recordings that the local database no longer thinks exist: those need to be &lt;em&gt;removed&lt;/em&gt; from the remote database. In either case, a full or fast refresh keeps the remote database completely &amp;#039;in sync&amp;#039; with the local one, but the fast refresh is, as its name implies, considerably faster to perform than a full one, especially if it&amp;#039;s just a question of keeping the databases informed after you&amp;#039;ve catalogued 3 or 4 new CDs that day!
&lt;/p&gt;

&lt;p&gt;
If you are using Version 3.30 or higher of Giocoso and have &lt;em&gt;not&lt;/em&gt; enabled Pro functionality, then fast refreshes do as they have always done and keep only the device-specific &lt;em&gt;local&lt;/em&gt; database up-to-date.
&lt;/p&gt;

&lt;p&gt;
Note the implication here: if Device A refreshes itself, it wipes and replaces the global_recordings table that &lt;strong&gt;all&lt;/strong&gt; devices see and use. If Device B then comes along and refreshes itself locally, &lt;em&gt;it&lt;/em&gt; too will want to wipe and replace the global_recordings table… and so on for every other device. The assumption underlying Giocoso Pro, however, is that &lt;em class=&quot;u&quot;&gt;all&lt;/em&gt; devices see the &lt;em&gt;same&lt;/em&gt; digital music collection, so Device B really didn&amp;#039;t need to do a refresh at all if Device A had already done it: they&amp;#039;d both be scanning for the same files and both would discover the exact-same number of music files. In other words, in a Giocoso Pro environment, the sensible thing to do is to pick just &lt;strong&gt;one&lt;/strong&gt; device to be the one that does routine refreshes: all other devices just need to be pointed to the &lt;strong&gt;global&lt;/strong&gt; database to get their source of plays. They themselves do &lt;em class=&quot;u&quot;&gt;not&lt;/em&gt; need to perform routine refreshes to pick up the latest arrivals to the collections, provided only that one designated device has done so. For this reason, the &lt;strong&gt;Administration&lt;/strong&gt; menu, &lt;strong&gt;Option 2&lt;/strong&gt; allows you to designate a Giocoso installation as being &lt;strong&gt;a Primary Device&lt;/strong&gt;:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20251119_123942.jpg&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20251119_123942.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20251119_123942.jpg?w=650&amp;amp;tok=aca470&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 declare PC &amp;#039;A&amp;#039; to be yes, a Primary Device; and you further declare PC &amp;#039;B&amp;#039; to be, no, &lt;em&gt;not&lt;/em&gt; a Primary Device; then when PC A performs a fast refresh, its RECORDINGS will become the new GLOBAL_RECORDINGS table. PC B running in Pro mode will then immediately become aware of any new recordings that PC A has discovered: it doesn&amp;#039;t need to do a local fast refresh &lt;em&gt;at all&lt;/em&gt;. If it were nevertheless to perform a local fast refresh, its results would &lt;em&gt;not&lt;/em&gt; be pushed to the Pro database: non-primary devices don&amp;#039;t push their RECORDINGS table to the GLOBAL_RECORDINGS one.
&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 Fast Scans and Giocoso Pro&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fast_scans_and_giocoso_pro&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;5506-9286&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;scheduling_fast_scans&quot;&gt;4.0 Scheduling Fast Scans&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
If you are actively adding new recordings to a growing music collection, you will probably want to perform frequent full scans so that new folders of music are recognised and added to Giocoso&amp;#039;s database of &amp;#039;playable&amp;#039; music. Obviously, you can take the Database Management menu, Option 2 and do the job manually… but you can also use one of Giocoso&amp;#039;s few remaining &lt;strong&gt;runtime switches&lt;/strong&gt; to &lt;em&gt;schedule&lt;/em&gt; the running of the appropriate database refresh operation without you needing to be present to watch it plod its tedious way to completion!
&lt;/p&gt;

&lt;p&gt;
To this end, it&amp;#039;s possible to schedule fast and full scans (using a tool such as cron). Here are my own crontab entries:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# Refresh the Giocoso Database every night at 11pm
# ----------------------------------------------------------------
0 23 * * *     /usr/bin/giocoso3.sh main /sourcedata/music/classical --fastrefresh

# Full Refresh Giocoso every 1st and 15th of month at 4am
# ----------------------------------------------------------------
0 4 1,15 * *     /usr/bin/giocoso3.sh main /sourcedata/music/classical --fullrefresh&lt;/pre&gt;

&lt;p&gt;
When launching Giocoso in this manner, as well as having to pass the database name, you have to pass the root of your music folder and, finally, the type of database refresh you want to perform as a double-hyphened &amp;#039;switch&amp;#039; or parameter. In this case, I&amp;#039;m scheduling a fast refresh every night at 11PM (23:00 for military types!) and saying to refresh a database called &lt;strong&gt;main&lt;/strong&gt;, finding music in &lt;strong&gt;/sourcedata/music/classical&lt;/strong&gt; and that I want a &lt;strong&gt;--fastrefresh&lt;/strong&gt;, not a full one. 
&lt;/p&gt;

&lt;p&gt;
I also schedule 4AM &lt;strong&gt;full&lt;/strong&gt; refreshes on the 1st and 15th of every month… but how precisely full refreshes work is a matter for another bit of documentation!
&lt;/p&gt;

&lt;p&gt;
Summing up, therefore: to schedule a database refresh you pass &lt;strong&gt;database, music folder&lt;/strong&gt; and a fast or full &lt;strong&gt;runtime switch&lt;/strong&gt;, in that order, to the basic command needed to launch Giocoso. The rest is down to standard cron shenanigans (for which &lt;a href=&quot;https://crontab.guru&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://crontab.guru&quot; rel=&quot;ugc nofollow noopener&quot;&gt;the Crontab Guru website&lt;/a&gt; is an excellent guide!)
&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 Scheduling Fast Scans&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;scheduling_fast_scans&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;9287-11411&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;conclusion&quot;&gt;5.0 Conclusion&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Fast Scans are relatively quick ways of adding &lt;em&gt;new&lt;/em&gt; recordings into a Giocoso music database, and for pruning out old ones that no longer exist. They are, however, completely useless when it comes to updating the metadata associated with existing recordings, since fast refreshes see folders, not files …and thus the metadata &lt;em&gt;within&lt;/em&gt; a file can be changed as often as you like and the fast refresh process will never spot the alterations!
&lt;/p&gt;

&lt;p&gt;
Functionally, the way a Fast Refresh works is as follows:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Produce a list of unique folder names already in the database&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Go off to the file system and produce a list of unique folder names from there&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Compare the two lists&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; If anything on the second list is not already in the database, those are &amp;#039;new folders&amp;#039;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Visit every new folder discovered and add the metadata for the FLACs found there to the RECORDINGS table&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
This is why &lt;strong&gt;folder&lt;/strong&gt; name changes to existing recordings &lt;em&gt;will&lt;/em&gt; trigger the addition of the newly-named recording to the database, whereas mere changes to &lt;em&gt;file&lt;/em&gt; names or to metadata values will &lt;strong&gt;not&lt;/strong&gt;.
&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/dbmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:dbmenu&quot; data-wiki-id=&quot;softwares:giocoso:dbmenu&quot;&gt;Back to Database Management 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 Conclusion&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;conclusion&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;11412-&amp;quot;} --&gt;
&lt;!-- cachefile /var/www/dokuwiki/data/cache/e/e4797ac568878c5e8e294dd1c3d89ae0.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/dbmenu/fullscan">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-22T12:06:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>fullscan</title>
        <link>https://www.bbritten.com/softwares/giocoso/dbmenu/fullscan</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;full_scan_all_recordings&quot;&gt;Full Scan All Recordings&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Full Scan All Recordings&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;full_scan_all_recordings&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-39&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;performing_a_full_scan&quot;&gt;1.0 Performing a Full Scan&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Fast scans are great for picking up the existence of new recordings. From Version 3.30 onwards, they also clear out old recordings that no longer exist on disk. A Fast Scan, however, &lt;em&gt;never&lt;/em&gt; picks up modifications to the metadata inside existing FLAC files. For that, you&amp;#039;d need to completely re-scan your music collection, starting with a totally blank slate -and that&amp;#039;s called a &lt;strong&gt;Full Scan&lt;/strong&gt; and is what the &lt;strong&gt;Database Management&lt;/strong&gt; menu &lt;strong&gt;Option 3&lt;/strong&gt; will do for you.
&lt;/p&gt;

&lt;p&gt;
When you first take this menu option, you are required to specify which database you want to refresh:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/software/screenshot_20231105_145717.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:software:screenshot_20231105_145717.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/software/screenshot_20231105_145717.png?w=650&amp;amp;tok=b7414e&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 simply list every file with a .db extension that&amp;#039;s found in the &lt;strong&gt;$HOME/.local/share/giocoso3/db&lt;/strong&gt; folder. Whilst there may be many such files, you can only select one of them at a time with this form: you simply arrow up-and-down the list of file names until the correct one is highlighted, then press the Space Bar to select it. Doing so causes an asterisk to appear in the brackets next to the selected database&amp;#039;s name. You can then press [Enter] to complete the selection.
&lt;/p&gt;

&lt;p&gt;
Giocoso then prompts you for the &amp;#039;root&amp;#039; folder of your music collection: the one folder that is at the &amp;#039;base&amp;#039; of your folder structures in which all FLACs can be found, no matter how many sub-folders they may be buried in:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/software/screenshot_20231105_145923.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:software:screenshot_20231105_145923.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/software/screenshot_20231105_145923.png?w=650&amp;amp;tok=ae83b7&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 navigate your on-disk folder structures by arrowing around the entries in the top pane and pressing the Space Bar when a correct folder name is highlighted. As you &amp;#039;descend&amp;#039; into a folder, its name is appended to the full path that appears underneath the folder list, in the second panel of the form. Alternatively, you can simply type the path in that second panel, and the top panel will automatically adjust itself to display the last folder on the path you&amp;#039;ve supplied.
&lt;/p&gt;

&lt;p&gt;
Once you&amp;#039;ve got the right &amp;#039;root&amp;#039; folder mentioned in the second panel, press [Enter] and Giocoso will run off to that folder and start searching for FLACs:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/software/screenshot_20231105_141528.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:software:screenshot_20231105_141528.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/software/screenshot_20231105_141528.png?w=650&amp;amp;tok=236599&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 &amp;#039;Scanning file system…&amp;#039; message will let you know that Giocoso is at least thinking about things, but there won&amp;#039;t be any other evidence of it actually doing any work (potentially for many minutes, if your music collection is large). Eventually, however, that one, slightly cryptic message will give way to a proper progress dialog:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/software/screenshot_20231105_141748.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:software:screenshot_20231105_141748.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/software/screenshot_20231105_141748.png?w=650&amp;amp;tok=4de8b2&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 the specific folder being investigated at each moment, and an overall progress bar clicks slowly up to the 100% mark. Eventually, you&amp;#039;ll see a message to say the refresh has completed: click [Enter] on that and you&amp;#039;ll be returned to the main menu.
&lt;/p&gt;

&lt;p&gt;
The Full Scan &lt;em&gt;completely wipes&lt;/em&gt; Giocoso&amp;#039;s existing RECORDINGS table (though it &lt;strong&gt;never&lt;/strong&gt; touches the PLAYS table: Giocoso&amp;#039;s play history contained in PLAYS is far too precious to ever be deleted, truncated or modified in any way, shape or form). It re-populates it from scatch, which means the process is exhaustive and will accordingly take quite a lot of time, depending on the size of your music collection. With 15,000+ unique recordings, for example, my i5 from 2012 takes about an hour to complete a Full Scan. Functionally, the Full Scan is exactly what happens when you &lt;em&gt;create&lt;/em&gt; a database in the first place: every FLAC is analysed and its metadata tags read; that metadata is then loaded into an empty RECORDINGS table.
&lt;/p&gt;

&lt;p&gt;
Practically, this means that a Full Scan will not only add new recordings into a Giocoso music database, but will pick up any metadata changes to existing recordings and will also notice (and record the fact) that this or that recording no longer exists on disk, because you chose to delete it. In other words, if you are actively curating your music collection -adding new stuff to it, deleting obsolete recordings from it, whilst also modifying the metadata associated with particular recordings- you will want to periodically perform a full scan of the collection, so as to ensure that Giocoso&amp;#039;s &amp;#039;picture&amp;#039; of it is as accurate and up-to-date as it can be.
&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 Performing a Full Scan&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;performing_a_full_scan&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;40-4316&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;scheduling_full_scans&quot;&gt;2.0 Scheduling Full Scans&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
In fact, you will probably want to run &lt;strong&gt;fast scans&lt;/strong&gt; on a &lt;strong&gt;daily&lt;/strong&gt; basis (so that new additions to your collection are picked up in a timely fashion), whilst reserving &lt;strong&gt;full scans&lt;/strong&gt; to be performed maybe &lt;strong&gt;once a week&lt;/strong&gt; (so that metadata edits and recording disposals are taken notice of in a reasonable amount of time).
&lt;/p&gt;

&lt;p&gt;
To this end, it&amp;#039;s possible to schedule fast and full scans (using a tool such as cron). Here are my own crontab entries:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# Refresh the Giocoso Database every night at 11pm
# ----------------------------------------------------------------
0 23 * * *     /usr/bin/giocoso3.sh main /sourcedata/music/classical --fastrefresh

# Full Refresh Giocoso every 1st and 15th of month at 4am
# ----------------------------------------------------------------
0 4 1,15 * *     /usr/bin/giocoso3.sh main /sourcedata/music/classical --fullrefresh&lt;/pre&gt;

&lt;p&gt;
Notice that when you want to automate the unattended running of Giocoso in database maintenance mode, you have to launch Giocoso with one of its few remaining &lt;strong&gt;runtime switches&lt;/strong&gt;: &lt;strong&gt;–fullrefresh&lt;/strong&gt; or &lt;strong&gt;–fastrefresh&lt;/strong&gt;, depending on what type of database maintenance you&amp;#039;re wanting to perform. You will also note that it&amp;#039;s necessary to pass two additional parameters to the program when launched in this manner: the database name you want to refresh and the &amp;#039;root&amp;#039; music folder in which Giocoso will find all its FLAC files. The three variables you add to the basic call to run Giocoso are, therefore, and in order: &lt;strong&gt;database name&lt;/strong&gt; (without the .db extension of the file name associated with that database), the root of &lt;strong&gt;the music folder&lt;/strong&gt; containing the FLACs you want to scan and, finally, the full or fast refresh &lt;strong&gt;runtime switch&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
From the above crontab entries, you can see that whilst I do a nightly &lt;em&gt;fastrefresh&lt;/em&gt;, I only do a &lt;em&gt;fullrefresh&lt;/em&gt; once a fortnight. That&amp;#039;s a mix of maintenance functions which is about right for me: I do add new recordings to my collection quite often, so I want Giocoso to take notice of those very qickly. However, I try to get my tagging correct at the point of adding the new recordings to my collection, so I don&amp;#039;t do a lot of metadata correction or modification &lt;em&gt;after&lt;/em&gt; they&amp;#039;ve been added. Accordingly, I personally don&amp;#039;t need to do very frequent full refreshes. So this particular mix of nightly fast scans and only infrequent full scans makes sense for me and the way I interact with my music collection. You will obviously want to strike your own balance, depending on what you do with yours!
&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 Scheduling Full Scans&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;scheduling_full_scans&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;4317-6887&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;full_scans_and_giocoso_pro&quot;&gt;3.0 Full Scans and Giocoso Pro&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
All fast (and full) refreshes of Giocoso are updates to the Giocoso &lt;em&gt;local&lt;/em&gt; database only, by default. Each installation of Giocoso on different music-playing computing devices will have its own, unique database, periodically refreshed and kept accurate by separate fast or full refreshes.
&lt;/p&gt;

&lt;p&gt;
However, the release of Version 3.30 introduced the concept of &amp;#039;Giocoso Pro&amp;#039;, whereby a device&amp;#039;s &lt;em&gt;local&lt;/em&gt; database contents can be &amp;#039;pushed&amp;#039; to a remote MySQL/MariaDB database that is shared amongst all music-playing devices. Accordingly, from that version onwards, and &lt;strong&gt;&lt;em&gt;if&lt;/em&gt;&lt;/strong&gt; Pro functionality has been enabled by setting a remote database server&amp;#039;s IP address in the Giocoso configuration file, both a fast &lt;em&gt;and&lt;/em&gt; a full refresh will complete its local work by going on to copy the refreshed local RECORDINGS table to the remote shared database. Essentially, the local RECORDINGS table&amp;#039;s data is inserted into the remote database&amp;#039;s GLOBAL_RECORDINGS table.
&lt;/p&gt;

&lt;p&gt;
This data copying process is &lt;em&gt;always&lt;/em&gt; a complete &lt;strong&gt;replacement&lt;/strong&gt; of the GLOBAL_RECORDINGS table contents. It starts by deleting all rows from that table and then re-loading it from scratch. In this way, the GLOBAL_RECORDINGS table always contains up-to-date data about the recordings that the device doing the full refresh can (and can no longer) see.
&lt;/p&gt;

&lt;p&gt;
Note the implication here: if Device A refreshes itself, it wipes and replaces the global_recordings table that &lt;strong&gt;all&lt;/strong&gt; devices see and use. If Device B then comes along and refreshes itself locally, &lt;em&gt;it&lt;/em&gt; too will want to wipe and replace the global_recordings table… and so on for every other device. The assumption underlying Giocoso Pro, however, is that &lt;em class=&quot;u&quot;&gt;all&lt;/em&gt; devices see the &lt;em&gt;same&lt;/em&gt; digital music collection, so Device B really didn&amp;#039;t need to do a refresh at all if Device A had already done it: they&amp;#039;d both be scanning for the same files and both would discover the exact-same number of music files. In other words, in a Giocoso Pro environment, the sensible thing to do is to pick just &lt;strong&gt;one&lt;/strong&gt; device to be the one that does routine refreshes: all other devices just need to be pointed to the &lt;strong&gt;global&lt;/strong&gt; database to get their source of plays. They themselves do &lt;em class=&quot;u&quot;&gt;not&lt;/em&gt; need to perform routine refreshes to pick up the latest arrivals to the collections, provided only that one designated device has done so. For this reason, the &lt;strong&gt;Administration&lt;/strong&gt; menu, &lt;strong&gt;Option 2&lt;/strong&gt; allows you to designate a Giocoso installation as being &lt;strong&gt;a Primary Device&lt;/strong&gt;:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20251119_123942.jpg&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20251119_123942.jpg&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20251119_123942.jpg?w=650&amp;amp;tok=aca470&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 declare PC &amp;#039;A&amp;#039; to be yes, a Primary Device; and you further declare PC &amp;#039;B&amp;#039; to be, no, &lt;em&gt;not&lt;/em&gt; a Primary Device; then when PC A performs a full refresh, its RECORDINGS will become the new GLOBAL_RECORDINGS table. PC B running in Pro mode will then immediately become aware of any new recordings that PC A has discovered: it doesn&amp;#039;t need to do a local full refresh &lt;em&gt;at all&lt;/em&gt;. If it were nevertheless to perform a local full refresh, its results would &lt;em&gt;not&lt;/em&gt; be pushed to the Pro database: non-primary devices don&amp;#039;t push their RECORDINGS table to the GLOBAL_RECORDINGS one.
&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/dbmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:dbmenu&quot; data-wiki-id=&quot;softwares:giocoso:dbmenu&quot;&gt;Back to Database Management 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;3.0 Full Scans and Giocoso Pro&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;full_scans_and_giocoso_pro&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;6888-&amp;quot;} --&gt;
&lt;!-- cachefile /var/www/dokuwiki/data/cache/2/2f749fea5aa33e58cac17721eac56759.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/dbmenu/importdb">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-22T12:20:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>importdb</title>
        <link>https://www.bbritten.com/softwares/giocoso/dbmenu/importdb</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;import_plays_to_a_local_database&quot;&gt;Import Plays To A Local Database&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Suppose you created a database called &amp;#039;renaissance&amp;#039; and a separate database called &amp;#039;post-renaissance&amp;#039;, thinking that keeping the two separate would be useful. Each database thus has its own set of recordings and its own play history. One day, you decide it&amp;#039;s pointless keeping the two databases separate in this way, so you create a brand new database called &amp;#039;classical music&amp;#039;. You get the new database to scan a folder that contains within it both your renaissance and post-renaissance music files. No problem: you now have a new database that contains a single &lt;strong&gt;RECORDINGS&lt;/strong&gt; table containing &lt;em&gt;both&lt;/em&gt; sets of music, created from scratch. 
&lt;/p&gt;

&lt;p&gt;
Of course: the new database will not have any &lt;strong&gt;play history&lt;/strong&gt; associated with it -and you surely don&amp;#039;t want to lose the play history you built up when the two databases were separate entities! So, how do you port those separate play histories to the new database?
&lt;/p&gt;

&lt;p&gt;
This is where the &lt;strong&gt;Database Management&lt;/strong&gt; menu &lt;strong&gt;Option 5&lt;/strong&gt; comes in handy. You use it to &amp;#039;point&amp;#039; to a &amp;#039;source&amp;#039; database and Giocoso will extract the plays out of the source and write them into a second database you &amp;#039;point&amp;#039; to, the &amp;#039;destination&amp;#039; database&amp;#039;s play history table. You can do that as many times as you like, using different source databases: the plays fetched into the destination database are &lt;em&gt;added&lt;/em&gt; to the plays already stored there. So, by running Option 5, pointing to &amp;#039;renaissance&amp;#039;, the plays are pulled into &amp;#039;classical music&amp;#039;. Run Option 5 again and this time point to &amp;#039;post-renaissance&amp;#039;: the &amp;#039;classical music&amp;#039; database now contains plays from &lt;strong&gt;both&lt;/strong&gt; source databases: the two original databases have effectively now been merged into one (though they remain as separate databases on disk: you can delete them yourself at some time of your choosing).
&lt;/p&gt;

&lt;p&gt;
Here&amp;#039;s a worked example. I start with two databases, one called &amp;#039;main&amp;#039; and one called &amp;#039;main Classical database&amp;#039;. Here is the aggregate statistics report for main:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_183702.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_183702.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_183702.png?w=650&amp;amp;tok=94ecad&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;
That&amp;#039;s a database with data concerning recordings by 603 composers, 13 of which have been played. Now here is the aggregate statistics report for &amp;#039;main Classical database&amp;#039;:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_184348.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_184348.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_184348.png?w=650&amp;amp;tok=ca66fa&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;
So that&amp;#039;s a database with only a single composer&amp;#039;s work represented in its database, and with just 5 of those recordings having been played.
&lt;/p&gt;

&lt;p&gt;
My goal now is to create a single database that records 13+5=18 plays!
&lt;/p&gt;

&lt;p&gt;
So, first I create a blank database: for speed, I&amp;#039;ll point Giocoso at a folder containing just a single recording for now. Immediately after creation, therefore, this new database&amp;#039;s aggregate statistics are:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_184633.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_184633.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_184633.png?w=650&amp;amp;tok=f08018&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;
So, a new database containing just 1 recording by 1 composer …and zero plays. We are starting with a very blank slate, in other words!
&lt;/p&gt;

&lt;p&gt;
So now I take Database Management menu Option 5:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_184904.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_184904.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_184904.png?w=650&amp;amp;tok=ee8255&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 are first directed to pick a &lt;strong&gt;source&lt;/strong&gt; database. In my case, that&amp;#039;s going to be &amp;#039;main&amp;#039;:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185004.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_185004.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185004.png?w=650&amp;amp;tok=cd6b73&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 program now displays all .db files it has found in $HOME/.local/share/giocoso3/db: your job is to use the up- and down-arrows to highlight the required source database and to press the Space Bar when it&amp;#039;s highlighted in order to select it. You can only select one source at a time. An asterisk appears in the brackets next to the selected database name. Press [Enter] to proceed:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185152.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_185152.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185152.png?w=650&amp;amp;tok=2b34cf&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 are now instructed to select the &lt;strong&gt;destination&lt;/strong&gt; database: the one into which the source&amp;#039;s plays will be piped. Note that you can select any database to be the destination: it doesn&amp;#039;t have to be the one currently in-use by the main Giocoso program. As before:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185340.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_185340.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185340.png?w=650&amp;amp;tok=acc7e7&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 are presented with a list of all possible databases. You just up- and down-arrow to highlight one and press the Space Bar to select it. In this case, I&amp;#039;m wanting main&amp;#039;s plays to be ported across to the &amp;#039;newclassical&amp;#039; database. Press [Enter] to confirm your selection:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185504.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_185504.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185504.png?w=650&amp;amp;tok=b5866c&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;
A confirmation is given that the source has &lt;em&gt;X&lt;/em&gt; number of plays and that those will be ported across to the newclassical database. You can back out at this point if you prefer: note that &amp;#039;No&amp;#039; is the default option selected. Were you to just reflexively press [Enter] here, therefore, the import process would end with no harm being done to either database. But I &lt;em&gt;do&lt;/em&gt; want to proceed, so I left-arrow to get the &amp;#039;Yes&amp;#039; option highlighted and only then press [Enter]:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185707.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_185707.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185707.png?w=650&amp;amp;tok=df5107&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;
A confirmation message appears: just press [Enter] again to dismiss it. Now, all I have to do is repeat the entire process, just remembering to pick &amp;#039;main Classical database&amp;#039; as my source database, whilst also remembering to pick &amp;#039;newclassical&amp;#039; as the destination (as before). This time, I see this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185759.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_185759.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185759.png?w=650&amp;amp;tok=1cc82f&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;
At this point, I can select the Reporting menu, Option 1 once more:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185935.png&quot; class=&quot;media&quot; title=&quot;software:giocoso:screenshot_20231105_185935.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/software/giocoso/screenshot_20231105_185935.png?w=650&amp;amp;tok=7c20a9&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 newclassical database is now said to contain 1 composer&amp;#039;s music as before and only 1 recording… but 18 plays. The plays from the two source databases have been migrated to the new database, just as intended.
&lt;/p&gt;

&lt;p&gt;
I should point out that if you merely want to move an entire database from one PC to another (for example), the simpler procedure is literally to copy the .db file, physically, from one hard disk to another. Physically copying a database in this way moves both the RECORDINGS &lt;em&gt;and&lt;/em&gt; the PLAYS tables from one device to another: there is no need in this case to extract the plays and handle them in this special way. Remember, too, that the RECORDINGS table can always be re-constructed from scratch, just by performing a new Full Scan (Option 3) and pointing Giocoso at your music collection&amp;#039;s hard disk folders afresh. It is therefore only when you need to preserve &lt;em&gt;just&lt;/em&gt; the PLAYS table in a database that this &amp;#039;Import plays to a database&amp;#039; functionality makes any sense -and that&amp;#039;s usually going to be because you wish to merge the plays from multiple prior databases, as I&amp;#039;ve described here.
&lt;/p&gt;

&lt;p&gt;
Note that an import doesn&amp;#039;t &lt;em&gt;delete&lt;/em&gt; anything in the destination PLAYS table before running. Imports are therefore cumulative -and there&amp;#039;s nothing to stop you importing and re-importing from the same source database multiple times, if you are of a mind so to do.
&lt;/p&gt;

&lt;p&gt;
Finally, note that this option &lt;strong&gt;only&lt;/strong&gt; works on the &lt;em&gt;local&lt;/em&gt; music database. If you&amp;#039;ve switched on the Giocoso Pro features to enable working with a remote, shared music database, this import option will have zero effect on that remote database. You will need to use the &lt;strong&gt;Pro&lt;/strong&gt; menu, &lt;strong&gt;Option 2&lt;/strong&gt; to push a local PLAYS table to a remote pro database: you could push the plays from two or more local databases to the remote, shared database to achieve the same sort of &amp;#039;merging&amp;#039; of databases in the pro &amp;#039;context&amp;#039;.
&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/dbmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:dbmenu&quot; data-wiki-id=&quot;softwares:giocoso:dbmenu&quot;&gt;Back to Database Management 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/b/b36afd35398879d4f22b83ed19c31bed.xhtml --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/dbmenu/optimsdb">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-22T12:42:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>optimsdb</title>
        <link>https://www.bbritten.com/softwares/giocoso/dbmenu/optimsdb</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;optimise_a_database&quot;&gt;Optimise A Database&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
You won&amp;#039;t need to use this menu option very often, if ever; and I&amp;#039;m not going to spend a lot of time explaining it. Putting it as simply as I can, databases that are constantly being written to, and deleted from, and on the end of lots of updates, can get &amp;#039;flabby&amp;#039; over time. Internal space that was used to store a piece of data that gets deleted may never get re-used, meaning it&amp;#039;s taking up space and doing nothing to earn its keep. Over time, that wasted space means the database has to process &amp;#039;blanks&amp;#039; rather than real data. That can slow things down.
&lt;/p&gt;

&lt;p&gt;
Database developers are aware of this, however, and therefore provide &amp;#039;vaccuming&amp;#039; options which tidy up all the dead space, compacting things back to maximum efficiency, and rebuilding indexes to make them as small (and hence as fast) as possible, too.
&lt;/p&gt;

&lt;p&gt;
This inherent database functionality is what Giocoso&amp;#039;s Database Management menu Option 7 triggers.
&lt;/p&gt;

&lt;p&gt;
Taking this option triggers the appearance of the standard &amp;#039;select a database&amp;#039; form. Once a database has been selected and the [Enter] key pressed, the relevant internal database maintenance commands are given and a confirmation message that the database has been &amp;#039;compacted and optimised&amp;#039; will be displayed. And that&amp;#039;s really all there is to this option!
&lt;/p&gt;

&lt;p&gt;
There are a couple of caveats to mention, however. The first and most significant is: don&amp;#039;t take this menu option if music is actually being played by another Giocoso session elsewhere. The optimisation process is &amp;#039;blocking&amp;#039;: that is, it will prevent the music-playing session from reading or writing from the database. The second point is: don&amp;#039;t use this option very often. Compacting a database is a &amp;#039;good&amp;#039; thing, like chocolate. But, also like chocolate, too much of a good thing is a bad thing: constantly compacting a database risks corrupting it, and you definitely don&amp;#039;t want that happening!
&lt;/p&gt;

&lt;p&gt;
The only reason for ever using this menu option is if you have an enormous music database and are constantly deleting from it, adding to it, and updating what&amp;#039;s inside it. Even then, those sorts of operations should not cause noticeable &amp;#039;bloat&amp;#039; in the database -so, you&amp;#039;d only even consider taking this optimisation option if you noticed real and significant degredation in, say, the length of time it takes Giocoso to find a piece of music to play at random, or if a report that used to be created in sub-second time starts to take multiple tens of seconds to complete. Short of that sort of obvious deterioration in performance, you are best to leave this menu option entirely alone.
&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/dbmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:dbmenu&quot; data-wiki-id=&quot;softwares:giocoso:dbmenu&quot;&gt;Back to Database Management Menu&lt;/a&gt;&lt;/strong&gt; | 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;!-- cachefile /var/www/dokuwiki/data/cache/1/1b83e5ea055449baf4530df1f1087993.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="https://www.bbritten.com/softwares/giocoso/dbmenu/switchdb">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-22T12:06:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>switchdb</title>
        <link>https://www.bbritten.com/softwares/giocoso/dbmenu/switchdb</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;select_use_a_different_database&quot;&gt;Select &amp;amp; Use A Different Database&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
When Giocoso is first launched, it opens and uses as its music database whatever database is mentioned in the Persistent Configuration file (which can be viewed by taking Administration menu Option 3):
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/dbmenu/screenshot_20231105_173647.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:dbmenu:screenshot_20231105_173647.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/dbmenu/screenshot_20231105_173647.png?w=650&amp;amp;tok=f7d478&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;
…or which can be viewed simply by opening the configuration file (&lt;strong&gt;$HOME/.local/share/giocoso3/txt/giocoso.conf&lt;/strong&gt;) in the text editor of your choice:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/dbmenu/screenshot_20231105_173547.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:dbmenu:screenshot_20231105_173547.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/dbmenu/screenshot_20231105_173547.png?w=650&amp;amp;tok=54fbf4&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;
Taking the &lt;strong&gt;Administration&lt;/strong&gt; menu &lt;strong&gt;Option 3&lt;/strong&gt; to set a default database will trigger the display of &lt;em&gt;all&lt;/em&gt; databases found in the $HOME/.local/share/giocoso3/db folder, but only the one of them that you select to put an asterisk next to it will be the program&amp;#039;s &amp;#039;default database&amp;#039;, the one is opens by default each time it is run.
&lt;/p&gt;

&lt;p&gt;
Most people are likely to only create a single music database with Giocoso anyway, as they would presumably want the program to be able to play any part of their collection: in that case, the &amp;#039;default database&amp;#039; in the Persistent Configuration file is probably the &amp;#039;only&amp;#039; database, and there would never need to be a way to make Giocoso use any other database.
&lt;/p&gt;

&lt;p&gt;
Some people, however, may wish to create different Giocoso databases for (say) classical v. jazz, or renaissance, classical, romantic and modern music. In these sorts of cases, whilst it&amp;#039;s fine for Giocoso to &lt;em&gt;open&lt;/em&gt; with one specific database, you would want to be able to easily switch to &lt;em&gt;another&lt;/em&gt; database. This is what the &lt;strong&gt;Database Management&lt;/strong&gt; menu &lt;strong&gt;Option 4&lt;/strong&gt; is all about:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/dbmenu/screenshot_20231105_174139.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:dbmenu:screenshot_20231105_174139.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/dbmenu/screenshot_20231105_174139.png?w=650&amp;amp;tok=beb9d9&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 menu option displays the above screenshot: once again, it&amp;#039;s listing all the files with .db extensions that it has found in the $HOME/.local/share/giocoso3/db folder. You arrow up-and-down the list until the database you want is highlighted, then you press the Space Bar to select it. That causes an asterisk to appear in the brackets next to the database name. Once the right database has been selected, you just press [Enter] and Giocoso will open and use that database from then on as its &amp;#039;current working database&amp;#039;
&lt;/p&gt;

&lt;p&gt;
The top of the main program window will always change to display the currently-operative database name:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.bbritten.com/_media/softwares/giocoso/dbmenu/screenshot_20231105_174406.png&quot; class=&quot;media&quot; title=&quot;softwares:giocoso:dbmenu:screenshot_20231105_174406.png&quot;&gt;&lt;img src=&quot;https://www.bbritten.com/_media/softwares/giocoso/dbmenu/screenshot_20231105_174406.png?w=650&amp;amp;tok=259f7d&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 third line of text will display the in-use database name, though for &amp;#039;artistic&amp;#039; reasons, it will capitalise the first letter of the name! If you were now to switch to the &lt;strong&gt;Play Music&lt;/strong&gt; menu and take &lt;strong&gt;Option 1&lt;/strong&gt;, the next random selection of music to play will be from the &lt;em&gt;currently in-use&lt;/em&gt; database, regardless of what the default database might be set to in the Persistent Configuration file.
&lt;/p&gt;

&lt;p&gt;
The currently in-use database remains in-use until either (a) you take this same &lt;strong&gt;Database Management&lt;/strong&gt; menu &lt;strong&gt;Option 4&lt;/strong&gt; once more and pick a different database; or (b) you quit out of Giocoso altogether and then re-launch it (at which point, the database specified as default in the Persistent Configuration file will be the new in-use database).
&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/dbmenu&quot; class=&quot;wikilink1&quot; title=&quot;softwares:giocoso:dbmenu&quot; data-wiki-id=&quot;softwares:giocoso:dbmenu&quot;&gt;Back to Database Management Menu&lt;/a&gt;&lt;/strong&gt; | 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

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