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.

I'll go through each of these areas in turn in the sections that follow, drawing your attention to things you may see from time to time in the usual course of using the program. As I do so, I'll link to appropriate parts of the wider documentation, so if you are unfamiliar with any of the terms used or concepts discussed, follow those links and be enlightened 🙂

2.0 The Header Area

The header area is 9 lines that fall into two halves. The very top three lines consists of 'boilerplate': the program name, the program version number and so on. Although it's mostly boring stuff, two parts of it should be of interest: first, the program version number. It always pays to know what version of Giocoso you're running, so you can see if a later release fixes some problem or other you may be running into. Second, the 'using database XXX' text tells you that (a) you're running in Database Play Mode and the name of the database Giocoso is using as its source of information about what music files exist on disk (and where they live). The database name will be init-capped here, purely for 'attractiveness of display' reasons. That is, my database name is actually 'main' (all lower case), but Giocoso is here displaying it as 'Main', with a capitalised initial letter. It's to make it stand out a bit more from all the text around it.

If you are not using a source database, you're running in Direct Play Mode and the 'boilerplate' will tell you this fact:

Here, I am in 'local' Direct Play Mode, but it's also possible to have the boilerplate tell you you're in 'remote' Direct Play Mode if you've used the --musicdir parameter.

The last three lines of text in the header area tell you something about what music Giocoso is playing:

  • The 'Now in' displays the physical folder that Giocoso has navigated to in order to play any FLAC files it contains. A long folder name will be truncated at the 85th character to make sure it fits in the program display area.
  • The 'Playing' indicator tells you how many separate FLAC files Giocoso has found in that folder. Note, as in the example shown in the above screenshot, the number of tracks might be displayed with an asterisk next to it. In my case, it's display "07 Tracks*", for example. The asterisk indicates that the seven tracks Giocoso has found aren't 'real'. That is, there aren't actually seven separate FLAC files in that folder. Instead, Giocoso has found a single FLAC file that contains an embedded cuesheet which describes the existence of seven virtual tracks. Read my pages on the "Composition-At-Once" (CAO) program I produce for more details about embedded cuesheets and how to make them work for you. The point is that Giocoso is aware of embedded cuesheets and can play FLACs using them just fine -but it will at least give you an indicator that a single 'superFLAC' is, in fact, made up of multiple virtual tracks internally.
  • The Duration indicator is a calculated field that tells you how long the currently-playing music will play for (in hours and minutes). In a folder containing multiple separate FLAC files, each file is assessed for its length and then all the lengths are added up to give you a 'total composition length'. If only one FLAC file exists, then the duration of that one file is simply determined and displayed.
  • The Selections indicator shows you how many pieces of music Giocoso expects to play in a single 'session' and how many it's actually played to date. The default number of 'selections' is 1, but you can specify any number between 1 and 99 using the --selections runtime parameter or the SELECTIONS persistent configuration file parameter. In the screenshot shown at the start of this article, you can see that I must have launched Giocoso asking for 9 total 'plays' and Giocoso is playing the first of them. At the end of each 'play', Giocoso will pause for a short time (determined by the --pause runtime parameter or the PAUSE persistent configuration file parameter) and then move on to the next piece of music to play. Once it's played (in my case) nine recordings, it will stop playing anything else until re-launched.
  • The Time Bar indicator shows you whether or not composers are excluded from being selected for play because they were previously played within X hours of now. From the earlier screenshot, you can see I have a 6 hour time bar in place. That means if Giocoso played some Mozart at 9AM, Mozart couldn't be re-selected until at least 3PM. A 6 hour time bar is the default, but any number of hours for the bar can be set with the --timebar runtime parameter or the TIMEBAR persistent configuration file parameter. If you set it to 0, you are disabling the time bar completely and the indicator in the header of the program display area will display 'Not in use' accordingly.

3.0 The Message Area

The message area makes up the bulk of the program display. It is mostly used to tell you details about the recording Giocoso is currently being played but can also show you 'I am doing something...' messages or information messages that give clues as to why the currently-playing recording was chosen for play. For example:

The really important bit of information in this message area example is the fact that I'm currently listening to Brahm's Serenade No. 1, played by Dirk Joeres and the Westdeutsche Sinfonia. That information is being read from the ALBUM and COMMENT metadata tags associated with the first FLAC file found in the folder that the 'now in' information in the header area tells you Giocoso has visited to find music. This might seem to be duplicating information: surely the 'Now in' data already tells you what's playing? Not really: it tells you which folder on disk Giocoso is playing from; but the information in the message area is coming from the metadata tags embedded within the music files themselves. Usually, you wouldn't expect a folder name to be substantially different from the ALBUM tag, but there's no rule that says that the two things have to be identical, so the two things could diverge. Giocoso will show the difference if that ever happens.

The blue text you see in the message area tells you what filters and selective pressures I put on Giocoso which helped it decide to play some Brahms. First, I said to play recordings that I haven't previously played (with Giocoso: if I've played them with other media players, clearly Giocoso is not going to know about that!). Next, I have an excludes.txt which lists four composers who Giocoso is forbidden to play, for whatever my reasons may have been. Clearly, Brahms is not on that list, otherwise Giocoso couldn't be playing him! Finally, I've said to play music which has a maximum length of 60 minutes -and from the 'Duration' information shown in the header area, you can see that Giocoso has picked this piece of Brahms to play precisely because it's only 45 minutes long and thus within my upper limit.

You can set lots of selection filters whenever you run Giocoso and the blue text will list all the filters you supply here.

If you ever ask Giocoso to 'skip' -that is, immediately stop playing the current selection and select something new to play- the message area will indicate this has happened:

The message indicates a 3-second countdown before the new selection is played (this number of seconds is not configurable), allowing the audio buffer to be emptied before play of the new selection starts. That's a fancy way of saying that Giocoso tries to ensure the start of the new recording doesn't overlap the last, dying notes of the skipped recording!

4.0 The Footer Area

The footer area displays a countdown time, allowing you to see when the currently-playing recording will finish and how long you've got left before that happens. In addition, Giocoso extracts some technical information about the first FLAC found in a folder of music files and displays it in the footer.

  • Thus, Giocoso will let you know the 'bitrate' of the music file in question. Standard CD Audio is recorded at 44,100 Hz, but if you have ripped SACDs, you may have music files that play at 88,200 Hz, 96,000 Hz or even 192,000 Hz. Whatever the bitrate of your music, Giocoso will show it to you here.
  • Giocoso will also know whether you are playing mono or stereo audio. Be warned that most 'mono' recordings are actually supplied on CD as two identical stereo tracks: Giocoso cannot distinguish between that sort of 'stereo mono' and 'stereo stereo'. Mono will only be displayed for recordings that genuinely consists of only a single audio channel, therefore (which will be vanishingly rare, I would have thought!)
  • Giocoso will then display the audio device you've specified to use by setting the --device runtime parameter or the DEVICE persistent configuration file parameter. If you haven't specified a specific hardware device, the word 'Default' will display instead. On macOS, it will display 'Audiotoolbox'; on Windows, it will display 'Pulseaudio'. If you are running on Linux but have used the --forcepulse runtime parameter (or set FORCE_PULSE in the persistent configuration file) then the word 'Pulseaudio' will display here instead of a specific hardware identifier.

Finally, the last part of the footer area is usually blank, but if you issue an autostop request in another terminal window, the footer area will indicate that the request has been received and will be acted on when the currently-playing recording has completed:

The 'Autostop' indicator tells us that this Giocoso session knows to stop playing all music once the currently-playing recorded finishes in 4 minutes' time. When the currently-playing recording reaches its natural conclusion, the footer area will indicate that all further playback has been stopped because of the autostop request, like so:

5.0 Area Display at the Conclusion of Play

When Giocoso finishes playing a recording, but --selections has been set so that there are further recordings to play after it, the message and footer areas will display this sort of message:

That tells you the fact of the completed recording having finished is being recorded in Giocoso's database as well as being transmitted to (which is what 'scrobbling' means!). If you are running Giocoso in Direct Play Mode (that is, without a source database), you may well not see the 'Recording play' message, because (by default) there is no database in which to store the fact of a completed play (though if you supplied the --destdb runtime parameter, you can record play history in a database, even if no database was used to source the music in the first place). The scrobbling message will only appear if you've configured scrobbling to happen and actually ask for scrobbling to take place. The message about 'pausing between plays' is displayed as a countdown, allowing a moment of peace and quiet between successive selection plays. The length of the pause is determined by the --pause runtime parameter (or the PAUSE persistent configuration file parameter).

When the last available selection concludes, the message and footer areas will look like so:

The messages that relate to the particular track just played (i.e., recorded in the database, scrobbled) are displayed in the message area as usual; the footer area gets a special message, though, indicating that all outstanding scrobbles have been performed and that all playback has finished.

[Back to Front Page]