Play and Scan Locks

1.0 Introduction

Starting with Giocoso version 2.01, locks are placed whenever Giocoso is used to play music or scan music files for inclusion in a database. The lock prevents a second music-playing or music-scanning session being launched whilst the first is still running -because to do so means files needed by the first session would be over-written by the new session, resulting in both sessions getting completely confused!

Prior to version 2.01, for example, launching a second music-playing Giocoso session would cause the music already playing to be immediately halted, but the second session wouldn't then start playing music either. Result: total silence! Similarly, before version 2.01, if you launched a new database refresh process whilst the first was already running, the result would be that your music database would end up completely empty (of recordings, not plays): neither session would complete correctly. The new locks prevent this sort of 'collision'. [...] 

Continue Reading

Resuming, Repeating and Terminating

1.0 Introduction

Starting with Giocoso version 2.01, it is now possible to (sort of!) pause and resume music playback. It is also possible to request a repeat of the currently-playing recording or to request that all playback terminate immediately (again, both features of Giocoso version 2.01 and above only).

The pause/resume and repeat options are made available by two new runtime parameters (--resume and --repeat). [...] 

Continue Reading

Giocoso 2.01 - The Simplified Menu Interface

1.0 The Giocoso Menu Interface

Giocoso version 2.01 introduces an entirely new (and optional!) way to interact with and control the program: a menu interface. It consists of a simple screen of numbered options that you can take to achieve particular outcomes:

All these options are simply new ways of achieving what, in earlier Giocoso versions, would have been possible only by constructing potentially lengthy and typo-prone command line sequences of runtime parameters. To autostop in Giocoso version 2.0, for example, you'd have to open a new terminal and type giocoso --autostop. To re-display album art, you'd again have had to open a new terminal and type giocoso --artwork. With the new menu interface, you simply type '5 -> Enter' or '8 -> Enter' to achieve the same results, respectively. [...] 

Continue Reading

Giocoso - Changelog

This page describes the changes made in each point release of Giocoso since its first release as version 2.00 in July 2022.

Release 2.04 - 23rd April 2023

  • Enhancement: Added the sampling frequency to mini display output (eg, "44100Hz" etc).
  • Bugfix : Various issues arising from requesting no album art be displayed now resolved.
  • Bugfix : Added a test for reachability of absolutelybaching.com: don't fetch updated messages if the site is not accessible.

This release includes a slew of very minor tweaks and improvements. The most visible one is that the sampling rate and bit-depth are now displayed in the mini display window. That is, if the previous version displayed 1996 - Vocal - 00:42:23 (meaning 'this recording was recorded in 1996, it's genre is 'vocal' and it lasts for 42 minutes 23 seconds'), the display will now show 1996 - Vocal - 00:42:23 - 44100Hz/16-bit, with the "44100Hz" (in this case) indicating the recording was ripped from a standard CD, and the "16-bit" part indicating similarly. On music ripped from an SACD, though, you might see "192000Hz/24-bit" or "88100Hz/24-bit" and so on. [...] 

Continue Reading

Giocoso Playing across a Network

1.0 Introduction

This is a little bit out-of-scope for a set of documentation articles about how to install and use Giocoso, but I wanted the chance to document what I think is a really cool way to use Giocoso: to have it run on a small PC somewhere inconspicuous (in my case, it's the loft, and it's a Raspberry Pi 4) and send its audio signal across the home network to my desktop PC, which happens to be hooked up to a relatively decent set of audio gear and speakers.

To be fair, it's not really Giocoso that's able to do this (which is why this is a little out of scope!): it's actually the PulseAudio sound system, which has network playback built-in (rather as x11 has the ability to send graphical data across a network). All Giocoso does is to hook in to these PulseAudio features... and exploit them, mercilessly! [...] 

Continue Reading

The Giocoso Program Display

1.0 Introduction

Giocoso's main program display, when you finally get it running, consists of three distinct 'areas', as follows:

The particular colours displayed for the text used in each area will vary, depending on your choice of terminal profile colours (here, I'm using 'Blue on Black', which is why all the horizontal lines look blue) and your choice of Giocoso colour scheme with the --displaycolour runtime parameter, or the DISPLAYCOLOR persistent configuration file parameter. Here, I'm using the default, 'newclassic' scheme which attempts to impart a bit of meaning into the display by its choices of colour: green is just boilerplate; blue is persistent information that depends on inputs you have provided when running Giocoso; yellow is dynamic information that changes depending on what Giocoso is playing or doing at any given time; white is just for text labels. [...] 

Continue Reading

Upgrading Giocoso

1.0 Introduction

Upgrading to Giocoso version 2 from any previous Giocoso version 1 installation uses the same --checkver runtime parameter as you'd have used when moving between different point releases of Giocoso version 1: it's extremely easy, non-destructive and requires mere moments to complete.

In this article, I'll start with a Linux Lite installation of Giocoso 1.13 (the last version of Giocoso version 1) and show you how I end up with a fully-functioning Giocoso version 2. I'll start by showing you that Giocoso version 1 is running, via a database, thanks to the command giocoso --dbname=main, perfectly happily: [...] 

Continue Reading

Licensing and Debugging

1.0 License (or Licence)

If you launch Giocoso with the --license (or --licence) runtime parameter, the program will fetch and display the GNU General Public Licence Version 2 under which Giocoso is licensed. All other runtime parameters you might accidentally (or otherwise!) throw onto the command line are silently ignored. Thus, this command:

giocoso --license [...] 

Continue Reading

Database Play Mode

1.0 Introduction

Giocoso runs in two basic 'playback modes': Direct Play Mode, where you tell Giocoso what music exists and where it can be found on disk; and Database Play Mode, where a database persistently stores details of what music exists and where it can be found on disk.

The advantage of using a database as the 'source' of information about what can be played is that Giocoso can select from its data in all sorts of different ways. If you want to listen to music that lasts longer than 20 minutes but less than 30 minutes, Giocoso can do that -because the database stores the duration of each piece of music it knows about. If you want to listen to 'some Beethoven', that's fine too: the database stores the composer name associated with each recording it knows about. A database, in other words, lets you filter and select music to be played via all sorts of qualities intrinsic to the music files themselves. Giocoso can even go one step further: it is able to pick something from the database entirely at random. That will mean the music you listen to will be unexpected -and hopefully, more 'fresh' and enjoyable as a result. [...] 

Continue Reading

Giocoso and your music collection

1.0 Introduction

There are some fairly obvious things that need to be true before you can successfully use Giocoso as a music player, but it's probably a good idea to spell them out anyway!

First and foremost, you must store your digital music files in the lossless FLAC format. Giocoso only plays FLAC and will not (by design!) play APE, WAV, MP3, OGG or any other digital music format. It was designed to play classical music: it takes the view that classical music needs to be listened to in as high quality as possible. Lossless formats are the only way to do that. It’s also a piece of open source software and therefore was designed to play open source audio formats only: the Free, Lossless Audio Codec seemed to invite itself to the party, given the huge clues in its name! I am aware that there are other open source lossless audio codecs out there (such as ALAC): none are as ubiquitous or as cross-platform as FLAC. FLAC, therefore, it must be! [...] 

Continue Reading

Giocoso Frequently Asked Questions

1. Why doesn't Giocoso play anything other than FLAC? What if I want to play MP3s?

There are two answers to this question, really. First: Giocoso is a classical music player, and classical music deserves to be taken seriously; which in turn means listening to it in the best possible quality. Therefore, the audio codec in which you store your digital music ought to be lossless, in my opinion.

Now: there are several lossless codecs out there I could have supported. Lossless WMA is Microsoft-proprietary and I have no idea whether it's on life-support or will remain properly supported and developed by Microsoft in the years ahead. Apple Lossless (ALAC) used to be Apple-proprietary, but has been open source and royalty-free since 2011... but the clue is the name: it's mostly going to be used on Apple hardware and Giocoso is primarily a Linux player. That doesn't leave a whole lot of lossless audio codecs that are genuinely and broadly cross-platform and non-proprietary. FLAC, however, fits the bill. [...] 

Continue Reading

Direct Play Mode

1.0 Introduction

Giocoso Version 2 introduces the concept of separate source and destination databases. That is, the source database is a permanent store of where, physically, music files exist on your hard disk, whilst the destination database is a permanent store of what music has been played and when. If you get Giocoso to use the source database to decide on what music to play next, you're running Giocoso in Database Play Mode. If you instead tell Giocoso specifically what music to play next, providing your own details about the physical location of those music files, then you are not using a source database at all and are instead running Giocoso in Direct Play Mode.

If you run Giocoso in Database Play Mode, all completed plays of music are always stored in the same database as was used to source the plays in the first place. That is, in Database Play Mode, source and destination database are always (and irrevocably) the same. You do not need to specify a destination database in Database Play Mode (and it's ignored if you try anyway!) [...] 

Continue Reading