Giocoso - Version 2.01 now available

A new version of Giocoso, the randomising classical music FLAC player, is released today: the version number increments to 2.01.

The new version's main new features are most documented here, but the short version is:

              • FLAC Pause/Resume
              • FLAC Repeat
              • Multiple bug fixes

FLAC Pause/Resume means you can Ctrl+C to terminate the playing of a recording early (i.e., before its natural end) and then launch Giocoso with the giocoso --resume command to re-start playback from the point previously reached. It's Giocoso's concession to needing to pause music playback whilst you go answer the door or make a cup of tea.

FLAC Repeat simply means that if you run the command giocoso --repeat in a second terminal window whilst the first is playing a great piece of music, the same piece of music will be played again once it has reached its first time play's natural conclusion. There's no limit to how many times you can repeat a recording, so if you just keep issuing new repeat requests, the same recording will play on and on and on...

The various bug fixes are too many and numerous to mention here, but are mostly listed on the Changelog page.

That lot would have made Giocoso 2.01 quite useful and significant all by itself, but the most significant new feature in Giocoso 2.01 turns out to be something I casually invented most of the way through the development cycle: the simplified menu interface. By launching Giocoso with the command giocoso --menu you cause a persistent menu interface to be displayed, from which you can launch a music playing session simply by taking option 1; or a filtered music playing session by taking option 2, and so on. Whenever the menuing system is used to launch a Giocoso play session, the playing window is displayed in its new, 'minimal', format. The effect works out something like this:

Here, the menu interface is displayed in the top terminal console; the album art is displayed in the middle-lower of the screen; and the new minimal play window is displayed over on the left-lower of the screen. Control of what gets played and whether it's repeated, terminated or paused/resumed is all handled by taking simple numbered menu options in the top terminal session. Editing of the excludes.txt or the persistent configuration file are also all handled by taking numbered menu options from that same, persistently-running terminal session. Reporting, too, is now made much easier by taking options 9 to 11 (though the reports produced by these options now only ever appear on-screen: if you want to export the data they contain to text files, you'll still need to launch Giocoso using the --report and --recordinglist runtime parameters, as in previous versions).

The menu interface is optional. Giocoso 2.01 can still, if you prefer, be run in the same way version 2.0 was, using lots of runtime parameters to control its behaviour. Thus, you can ask Giocoso to play Britten's own recording of Peter Grimes by issuing this command:

giocoso --dbname=main --composition="Peter Grimes" --performer="Benjamin Britten"

But you can now also achieve exactly the same thing by typing the command: giocoso --menu and then taking Option 2 and filling in the screen that appears like so:

The former way of doing it is certainly more concise for those who accurately remember all of Giocoso's 50+ runtime parameters! Typing in appropriate entries when prompted, as in the new menu-driven example, might be a lot easier for most people, though!

Technically, I'm declaring the menu interface 'experimental' at this stage: I haven't worked out all the quirks with it, for example, and menu items may be added, removed or moved around in the future. I do feel, though, that the menuing interface might be the more 'standard' way of running Giocoso going forward, so I'd certainly experiment with it for now, in an effort to getting used to it! If you run the bare command giocoso without any runtime parameters at all, version 2.01 will act as if you supplied the "--menu" parameter anyway, for example.

Note that Giocoso 2.01 requires one new parameter added to the end of the $HOME/.local/share/giocoso/giocoso.conf persistent configuration file, as follows:

# TERMINAL_FONT is the name of the font you want to use when launching Giocoso with the --menu
# runtime parameter. It should ideally be a fixed-width ('monospaced') font, otherwise the display
# will look very peculiar. Whatever your operating system's default terminal font is set to is
# always a good option to set here. The font name needs to be set correctly, however, including
# being case-sensitive. Failure to set a value for this parameter results in the default of
# 'Courier' being used, which may not work well on your particular system.
# ----------------------------------------------------------------------------------------------
TERMINAL_FONT="DejaVu Sans Mono"

Copy-and-paste that lot onto the end of your existing configuration file to get it up-to-date. If you don't, then any minimal playing window you launch from the menu interface will use 'Courier' as its font by default, which may or may not be desirable (or work!). Having pasted it in, you can of course set the TERMINAL_FONT parameter to whatever value suits you, though it should match (exactly!) the name of a monospaced font on your system.

If you would rather automatically obtain a fresh copy of a default configuration file that already contains the appropriate new TERMINAL_FONT text, you can take menu options 12 -> 3. Be warned that this will completely over-write your existing configuration file, though, so any special settings you've made in it will be lost. However, before the new configuration file is downloaded, any existing configuration file is first backed up (to a file called giocoso.conf.bkp). You could therefore re-obtain any necessary tailored settings from that .bkp file and paste them into the appropriate points of the new, default .conf file.

Other than that manual update to the persistent configuration file, updating the Giocoso program itself requires only that you issue the standard command:

giocoso --checkver

...and follow the prompts (including supplying the sudo password when asked).

Note that macOS users will also need to make sure that the Ports version of findutils has been installed. This was not a prerequisite for version 2.00, but has been made so in version 2.01. It provides a GNU version of the find utility that the database create and refresh process now requires. The command sudo port install findutils will add the required program to your macOS system relatively painlessly.