Giocoso Version 3.02 Released

A relatively small, but nevertheless significant, enhancement to Giocoso has just been released, bringing the program up to Version 3.02.

To understand the new update, you first have to understand the specifics of how Giocoso makes a random selection of a recording to play. It's a two-stage affair: first, a composer is selected at random; second, a recording by that composer is selected. This ensures that an obscure composer has as much chance of being played as the likes of Bach, Beethoven or Brahms.

If, however, you switch on the 'Only play previously unplayed recordings' option in the Giocoso configuration file (accessible via the Administration Menu, Option 3), then this throws a bit of a spanner in the works. Historically, it would mean you first select a composer at random, then you'd select a recording by that composer ...and only then would you check to see if that selected recording was previously un-played. If it turned out you'd randomly selected a previously-played recording, Giocoso would discard its selection entirely and start over from scratch, making a new selection for a composer. Repeat ad infinitum until you happen to get lucky and pick a previously-unplayed recording at the second stage.

This iterative approach has been present since the very first version of Giocoso and works well enough ...provided most of your music collection is previously unplayed. When a vast reservoir of unplayed recordings is available, the second random selection is pretty likely to succeed, after all. The minute you get to the point of having played maybe 80% or 90% of your collection, however, then most random selections are likely to fail the 'unplayed' test, and thus Giocoso spends ever-increasing amounts of time making a selection, discarding it, and trying again.

The new Version 3.02 enhancement is simply to say: if the 'previously unplayed works' filter is on when making that first random selection of a composer, make sure you only select composers who have at least one unplayed recording attributed to them. The second search for 'unplayed recordings by this randomly-selected composer' cannot then fail. By pre-filtering your composers for 'unplayed-ness', in other words, you reduce the number of failures to select unplayed works on the first attempt and thus speed up the random selection process overall.

As I say, you probably won't notice any difference to the speed of random selection if 50% or more of your collection is unplayed in Giocoso. In my case, however, I have 603 composers in the collection of which only 90 have any unplayed recordings associated with them: 513 composers have had their entire set of recordings played at least once. So, when Giocoso was picking a random composer, it would have a 513/603 (85%) chance of picking a composer who couldn't possibly return anything for the second 'pick an unplayed recording' test. In Version 3.02, however, whilst my choice of 'usable' composers is now down to just 90, Giocoso will pick one of those 90 at random and then have a 100% chance of selecting an unplayed recording by that composer.

A second, truly minor, enhancement in the new version is that the previous number of plays is now displayed for each recording as Giocoso starts playing it (or a 0 is displayed if it's a previously-unplayed recording):

The new update is available immediately: just take Option 4 from the Administration menu and follow the prompts. Quit Giocoso once the upgrade is complete and then restart the program, to ensure changes are picked up and applied correctly.