Giocoso – The Randomising FLAC Player

1.0 Introducing Giocoso

Giocoso is the all-new gapless, trackless, optionally-randomising, optionally-scrobbling command-line FLAC player for Linux. It replaces and improves on the functionality of the earlier Absolutely Baching Music Player. You would not be entirely mistaken in thinking Giocoso is really AMP version 2.0. There are a couple of key differences, though, as follows:

  • AMP scrobbled to unless told not to; Giocoso doesn’t scrobble to, unless told to do so
  • AMP scrobbling required the download and configuration of a separate script; Giocoso’s scrobbling depends on nothing but itself
  • AMP had a lot of odd statistical selection overrides (such as “––levelup”, “––xlevelup” and “––xxlevelup”): those have all been ditched in Giocoso.
  • AMP had ‘fast’ and ‘full’ rescan mode; Giocoso only does ‘full’ rescans of a music collection. This means rescans take longer to complete, but the payback is that Giocoso’s rescan captures compositions’ durations and the min and maxduration filters therefore work with the speed of a simple SQL query, instead of being applied after a music selection has already been made. In AMP’s case, trying to get music that lasts for a specific length of time meant often waiting many tens of seconds for something to be selected that happened to meet the duration criteria. Giocoso now finds such music in mere fractions of a second.
  • AMP displayed album art; Giocoso displays album art with a ‘caption’ consisting of text extracted from the ARTIST+ALBUM tags of the music being played -so the album art display now precisely tells you what is being played at any specific moment and by whom it was written.

Apart from those specifics, the Giocoso code has been completely re-factored and tidied up from its AMP origins, making it more reliable and somewhat easier to maintain. Other than that, however: anyone that has ever used AMP will feel completely at home switching to Giocoso. I should mention, too, that when making the transition from AMP to Giocoso, AMP’s play history can be pulled across into Giocoso, so none of your play history is lost in the move.

2.0 Implications for AMP

Giocoso’s release means that AMP as a product is now discontinued. You can still download it and install it, if you insist, from the usual places. But the script is now effectively ‘abandonware’ and will receive no further updates from me from July 15th 2021 on.

You are accordingly strongly recommended to download and install Giocoso instead and to use that in the future.

3.0 Installing Giocoso

Installation of Giocoso is achieved most simply by issuing the following three commands:

bash --giocoso

The installation process requires access to the Internet and will prompt you for sudo privileges in order to be able to copy files to the /usr/bin folder.

4.0 Product Documentation

The user manual for Giocoso, which covers (I hope) all aspects of the program’s installation, usage and reporting capabilities is available as a PDF download here. (7MB downloads).

If you prefer reading your manuals in an E-reader of some kind, the same documentation is available as an 40MB download in Epub format here.

4.1 Documentation Errata/Additions

  • Please note that on some distros, ImageMagick (which Giocoso uses to display Album Art as a piece begins to play) may be prohibited from converting the name of the composition to displayable text, resulting in a single-coloured bar under the album art, with no text in it. Not all distros do this, but if yours does, the fix is described in this blog post.
  • Starting with version 1.05 (released on November 6th 2021), the default colour scheme uses cyan (i.e., light, pale blue) for the colour of textual elements which previously were displayed in dark, royal blue. If you wish to continue using the dark blue text, a new ––displaycolour=classic option is made available.
  • Starting with version 1.07 (released on November 27th 2021), a new option called ––editor is provided that allows in-program editing of the excludes.txt file. Launching Giocoso with this new run-time option opens the excludes.txt file in whatever text editor your EDITOR environment variable is set to (by default on many distros, this will be vi; others use nano; you can always set EDITOR=xxxx in your .bashrc file to force the use of whichever text editor you prefer). You can then add, edit or delete lines of composer names as you see fit; saving the file causes Giocoso to quit entirely.

5.0 Quick Start Guide

After you have installed Giocoso, it is suggested you run it once with the bare command:


Do that in a new terminal session where the terminal window has been configured to be at least 102 columns wide and 26 lines high, otherwise the display will be scrambled to some extent.

Running the plain ‘giocoso’ command for the first time might prompt you to install other software packages, and you should follow any software installation instructions provided. Once they’ve been installed, try running Giocoso with the bare command once more, having first cd‘d to a folder containing some FLAC files. Once they start playing successfully, you know you can run Giocoso in all its rich functionality!

Having got Giocoso’s ‘Direct Play Mode’ working, you should next create a database and point it at the physical folders where your music collection resides. The command would look something like this:

giocoso --createdb --dbname=main_collection --musicdir=/music/classical

That will create a database called “main_collection” and then scan the /music/classical folder for any FLAC files lurking within that folder hierarchy. You obviously substitute in a database name of your own choosing and specify a location for the musicdir parameter which correctly points to the root folder of your own digital music collection. The results of the scan are stored within the database. Giocoso now knows where your music files can be found. The initial scan may take quite a while to complete, as Giocoso has to compute the play-length of each composition found.

At some point after database creation, you then make Giocoso work in Random Play Mode by issuing the command:

giocoso --dbname=main_collection

With that command, Giocoso will pick a composer at random (with equal probability given to each composer, no matter how much or how little each has contributed to your collection). Having chosen a composer to play, Giocoso will pick a folder containing music by that composer to play from beginning to end, without interruption or pause.

There is a lot more functionality available in Giocoso than that just described, but that at least should get music playing for you easily enough. If it doesn’t, or if you want to start specifying particular audio hardware, factors to consider before making a random selection of music, or you want to start producing reports about what you’ve played, consult the extensive User Manual for details. In particular, see Section 9.7 for instructions on how to bring an AMP play history across into your new Giocoso database.

6.0 Product Iconography

As a classical music aficionado, you’ll already know that giocoso is the tempo indication that means ‘lively, humorous, joyful’ or, particularly, ‘playful‘. Being playful with your music colleciton is what listening to classical music should be all about: even playing a requiem should be a source of joy!

When it came to finding a ‘mascot’ or icon that could represent all that Giocoso stands for in relation to playing classical music, I couldn’t help but think of ‘partying cats’: nothing seems more playful than a partying moggie to me. You will thus see joyful, playful cats in assorted poses all over Giocoso’s user manual and anything I write about the product in these pages going forward. The two partying feline exemplars who have greeted you on this particular page are just two of many (so if you’re a dog-person, I apologise in advance: allergy or aversion to cats is no excuse to avoid Giocoso!)