What is Giocoso?

1.0 What is Giocoso?

Giocoso Version 3 is a gapless, trackless, optionally-randomising command-line FLAC player, intended primarily for the playback of digital classical music, on Windows, Mac and Linux.

Which is a bit of a mouthfull! So let's break that down a bit:

  • Gapless: Giocoso plays one FLAC file after another without detectable pause between them, so if you have three movements of a string quartet that are supposed to flow into each other without a break, Giocoso will play that as a continuous stream of music without silence between the movements. Most media players these days can do 'gapless playback', but some do it better than others. Giocoso does it properly.
  • Trackless: Giocoso plays entire folders of music as though they were one composition (which, if you follow my axioms of classical tagging, they should be!) If a "Symphony No. 5" folder happens to contain four files, because the CD they were ripped from regarded the four movements of the symphony as separately-indexed tracks, Giocoso doesn't care: it simply plays all four files in sequence before declaring the symphony as a whole complete. No other music players I can think of behave quite like this! The reasoning is simply that you don't go to a classical music concert and walk out of the concerto after just the first movement -or walk in to it after the first two movements have played just so you can listen to the nice tune in the third movement! Giocoso pays classical music the respect it deserves: composers wrote entire compositions, not 'tracks' or 'movements' that can be ripped from their context and played standalone.
  • Optionally Randomising: Giocoso can be instructed to play specific pieces of music (for example, 'play Peter Grimes' or 'play Fantasia on a Theme of Thomas Tallis'). But it can also be asked to 'play a choral work', or 'play something by Beethoven': in which case, the choice of which specific choral work or Beethoven piece will be a matter of random chance. In this randomised-play mode, you can supply additional filters so that the 'degree of freedom of choice' the randomiser will exercise can be limited: for example, 'Play me Choral works by Prokofiev that last between 30 and 50 minutes'.
  • Command Line: Giocoso has been written to get out of the way and not consume too many computing resources. It therefore runs within a simple terminal session, with instructions given to it by selecting variously numbered menu options. As a concession to making things look 'pretty', Giocoso will by default display the album art associated with the composition it's playing at any given time (assuming you've remembered -or bothered!- to tag the music files with that album art in the first place. Even this can be turned off, however.
  • FLAC Player: Classical music deserves being listened to in excellent audio quality. This means that playing music files which are encoded as MP3, OGG or other lossy audio formats, where some of the music signal is thrown away in order to achieve smaller file sizes on disk, is not of any interest to Giocoso at all. It cannot see such files, much less play them. The only audio format that Giocoso sees, understands and plays is FLAC -the Free Lossless Audio Codec. There are other lossless audio formats in existence of course, such as lossless WMA or the Apple Lossless Audioc Codec (ALAC): but these are or were proprietary, generally tied to a specific operating system platform (WMA=Windows, ALAC=Mac, for example) and may be patent-encumbered. Only FLAC fits the bill, as its name suggests, of being open source, freely available on all platforms, and widely supported.
  • Classical Music Player: To be honest, Giocoso plays FLACs and couldn't care whether a particular FLAC was composed by Johann Sebastian Bach or Madonna: it makes neither moral nor artistic judgments in that regard! There's nothing intrinsically that makes Giocoso only a classical music player, in other words. However, it has been deliberately designed to talk the language of composers and compositions, not albums and tracks -so the music it is most tailored to play correctly is classical music that has been properly tagged with metadata describing composers, performers, compositions and movement titles. The fact that it plays gaplessly and tracklessly also means its playback model most closely resembles that of the classical music concert hall.
  • Windows, Mac and Linux: Giocoso is fundamentally merely a Bash shell script, orchestrating the work of other programs such as metaflac, ImageMagick and ffmpeg. Any computing platform that can run Bash and those extra programs is therefore a suitable platform on which to run Giocoso. Windows 10 and up provides the Windows Subsystem for Linux that allows it to run full-fat Linux 'within' the standard Windows desktop paradigm, so can be persuaded to run Giocoso with little difficulty these days. Apple's macOS operating system is, one way or another, a sort-of version of BSD, a Unix derivative: so things like Bash, ffmpeg and ImageMagick are almost as much native applications as they are on Linux. Giocoso therefore has no problems at all running on any version of macOS from Sierra upwards.

Perhaps a simpler description of Giocoso after all of the above is: it's a personal 'radio station' for classical music, capable of playing a 'wall' of constantly-varied classical music on a wide variety of platforms and PCs.

2.0 Why Giocoso?

Linux, Windows and Mac are not exactly short of software for playing digital music files! From programs such as VLC, Foobar2000, iTunes or the weirdly-named DeaDBeef, there is a media player to cater for, apparently, everyone's whims and wishes. So why bother writing a new one? Because none of the media players on any of the platforms I've mentioned were, I think, designed with classical music in mind and thus none of them were entirely 'right' for me and my classically-inspired requirements. Some of these requirements I've already touched on in Section 1, but they perhaps bear repeating a little here!

2.1 Tracks

Every software music player I know of displays and works with 'tracks'. Here's DeaDBeef playing some Brahms, for example:

Is the display here of any usefulness? To some extent, yes: it's good to know that Brahm's Symphony No. 3 consists of four movements, and it's nice to know each movement's general tempo marking. The trouble is that the display invites 'selective clicking' on the individual tracks. Now, it's your music and you listen to what you like and how you like, I guess... but to my mind, Brahms wrote a symphony, not four separate 'things' which together make a symphony. So to click on track 3 there and just play the Poco allegretto would be doing Brahms a disservice. It is, of course, true that Brahms is long-since dead and therefore incapable of caring about what you choose to do in the privacy of your music listening room, so you are of course free to listen how you like... but getting into bad classical music listening habits is an undesirable thing, regardless of whether anyone is taking notice of you doing it! If you get into the habit of only playing 'bits' of a larger work in the privacy of your own room, you're going to be in for a surprise when you finally make it to a live concert! For myself, I think the discipline of being 'made' to listen to entire symphonies, masses and concertos in one sitting is a good musical habit to get into. For British radio listeners, it's the equivalent of learning to listen to Radio 3 instead of Classic.fm!

If you take your classical music even slightly seriously, in other words, you do not want to be distracted or tempted by the existence of 'tracks' -and that meant I needed a trackless music player.

2.2 Randomising

Over the years, I have got into the bad habit of over-playing some composers and under-playing others. There's nothing morally wrong with doing that! We have favourites, of course, and there's no harm in indulging ourselves with our favourites, whether that's favourite food, favourite drinks or favourite music! But over-doing the favouritism means you miss out on a chance to experience new things and -perhaps- develop new favourites. For a wider musical experience, in other words, I wanted a music player that would make me listen to composers who were not on my list of favourites. Essentially, that meant taking the choice of what to listen to out of my hands -and for that, I needed a music player that would select to play compositions at random for me, regardless of who had written it. Giocoso's ability to randomise its plays was thus a crucial and key reason for writing it in the first place.

To be honest, a randomising music player essentially becomes your own private classical music radio station: you can kick off plays of things at breakfast and have an ever-changing, always-fresh stream of music broadcast to your ears for the rest of the day without involving yourself in the choice of that play list at all. In the year or so since I first came up with this idea, Giocoso has transformed my classical music habits in ways which I would commend to anyone who cares about classical music -and in ways which I don't know any other software music player is capable of doing.

2.3 Work with the Metadata

Most other software music players will happily display the metadata tags you embed in your FLAC files when first ripping them from CD, but few seem to be able to work with that metadata. In other words, though I've carefully tagged all my music with composer, composition and performer names, it can be difficult to find a software music player that will easily let me say 'please find me something composed by Bernstein (and not just conducted by him)'. It is undoubtedly true that a lot of players will let you search for the word 'Bernstein', but they tend to search 'greedily', returning results where the search term can be found in any tag, not just the ones you care about in the moment.

So, for example, the Strawberry music player will certainly let me search for the word 'Bernstein':

...but why are works by Copland, Berg, Milhaud,  Mahler and Wagner appearing in that list? Because Bernstein conducted those recordings, even if he didn't compose them! Now, it's possible with Strawberry and other players I know of to fix this by adding some 'search syntax' to proceedings:

By using the search term 'Composer:Bernstein', you force Strawberry to inspect only the 'composer' tag, and that obviously works to narrow things down nicely. Different players will use different syntax to achieve the same outcome, though -and I for one can never remember to type 'Composer:Bernstein' rather than (say) 'Composer=Bernstein'. Making you change your search term in order to alter what tags will be inspected by the search seems counterintuitive to me, anyway.

Giocoso Version 3's approach to this is as follows:

By typing the search term against the 'Composer Name' filter, I ensure Giocoso is only looking for music files tagged as having been composed by Bernstein. It's going to ignore anything just conducted by Bernstein and, as a result, the playlist Giocoso generates from this search looks like this:

...and there's not a dose of Mahler or Bartók in sight!

If I fill in the search filter this way instead:

...now I'm asking Giocoso to look for any recording where Bernstein is listed as one of the performers (perhaps as pianist, but most commonly he's going to be the conductor). The playlist this search produces looks as follows:

Same search term, but very different results, with lots of pieces by non-Bernstein composers -simply because Giocoso makes it easy to specify which tags, precisely, you want to search through at any time by merely altering the placement of the search term within the filter screen. The search term itself doesn't change; merely the location where you type it -and there's no weird syntax to get right to ensure the search works, either!

I wanted a music player, in other words, that understood how I'd tagged my music and would work with that tagging strategy to enable meaningful musical discovery possible. Giocoso puts metadata filtering front-and-centre in what it does and how it does it!

2.4 Statistics

I am quite fanatical about keeping track of what I've listened to, who my most-listened-to composers are, and so on. Few music players I'm familiar with allow you to build up readily-accessible statistics about your listening habits. Transmitting your play history to Last.fm can certainly help in this regard -but some people might not be too keen on sharing their play histories with the rest of the world in the way that scrobbling does! I therefore wanted a music player that would build up a local play history that could be interrogated and used for analysis of a flexible and extensible nature. As it happens, I then decided to publish this statistical data to my own website in ways which allow easy, graphical visualisation of what I've been listening to (see any of the links under the 'Listening Analysis' menu option at the top of this very page, for example).

I certainly realise that not every classical music listener is going to find this sort of data helpful or even interesting -but I wrote Giocoso to at least provide this data to those for whom it might prove useful.

2.5 Summary

Given all of the above points, the short version is simply this: none of the software music players on Linux, Windows or Mac with which I was familiar met all of these specific needs which I was aware I had -and that's why Giocoso exists! If any of these points ring a bell with you, then you're definitely the target market for Giocoso -and I think you'll find it useful, too.

3.0 Is Giocoso for Everyone?

With all the above in mind, I hope it's clear that Giocoso isn't intended as a general purpose music player that everyone will find appropriate! Whilst music can be pure entertainment, to be sampled and dabbled in, like a plate of petits fours, Giocoso doesn't expect you to be listening to music that way! It plays without interruption; it doesn't display pretty visualizations on your computer screen whilst it's doing it; it puts sound quality above hard disk space; it expects you to have tagged your music files up 'properly'; and it expects you to own your music, rather than be streaming it (Giocoso, in fact, has no streaming capabilities at all, except over a local network). It doesn't have to be classical music that you're listening to, but Giocoso was written expecting it to be. If you're the kind of listener that loves classical and jazz, for example, I think you'll find Giocoso a good fit for playing the classical part of your music collection... but I have no idea how well or ill it works with Jazz. I am pretty certain, however, that it won't play well with "pop music", however that might be defined.

Fundamentally, Giocoso is written in the belief that not all music is nails, so not all music players should be hammers! It is a tool tailored for playing certain kinds of music in a particular kind of way. If you don't fit its model, it's not going to fit your requirements, therefore.

4.0 What's with the name?

As a classical music fan, you will probably already know that the word giocoso is a tempo indication that means ‘lively, humorous, joyful’ or, particularly, ‘playful’. I couldn’t think of a better name for something designed to ‘play’ my music collection in a way that brings me joy and makes music choices for me that are always fresh and lively.

On a slightly less cerebral note, a random search for ‘giocoso’ one day brought forth pictures of a party-mode cat. Adoring cats almost as much as I adore music (and wine!), I thought the pairing was ideal.

Joe Playful (and his feline brethren) are thus the official mascots of Giocoso. They will be used relentlessly in all future documentation and news releases about the program!

Meanwhile, regardless of why the name came about, draw inspiration from the party-loving cats and feel free to use Giocoso to listen to your classical music collection in new, insightful and, above all, playful ways!

[Back to Front Page]