The Problem of Portability (Part 1)
I was getting ready to release version 3.36 of Giocoso yesterday: it contained a tiny, but significant bug fix, whereby anyone using a comma as a decimal delimiter (as they do in Europe, say), rather than a period/fullstop (as they do in the UK, for example) would have their music playback garbled when the new ReplayGain feature was in use:
The problem is that ReplayGain is invariably stored, by whatever tool that puts it there, in the form “-1.43”. Confronted with that decimal point, European Giocoso installations declare the ReplayGain value to be 'not a valid number' and do what you see above. A quick fix was thus implemented that forced the use of a decimal point delimiter, whatever a user's general PC's locale would say, and thus guarantee that a ReplayGain would be seen as a valid number, despite the '.' rather than the usual (for them) ','.
Anyway: as I say, that fix is “in” and ready to release… but a bit of mission creep, er… crept in and thus I've deferred the release of version 3.36 until late next week.
The mission creep is to do with a problem I've tried to tackle several times in the past: how do I get music playing on multiple devices around the house, essentially following me as I move about it?
Things started off nice and simply, after all: I have a PC in a drawer connected via optical out to a Douk DAC/Amplifier and a nice pair of speakers in my listening room. Since it's in a drawer, that PC is headless. I therefore tell it what to play by ssh'ing into it from my iMac desktop and tell it to start playing from there. Music comes out of the speakers, sourced from a NAS elsewhere in the house which the drawer PC has mounted. The iMac runs nothing itself but merely tells the 'drawer PC' what to do.
But now I move out into the conservatory. It's no good my 'drawer PC' playing anything now as it will play to the listening room speakers, not anything in the conservatory. I'm also not sitting at my iMac, so I can't really ssh into anything conveniently to initiate play. Previously, I got 'conservatory music' by fitting a little Raspberry Pi in there and attaching it to some speakers. With a small 7 inch monitor, I could log in to that Pi directly and launch Giocoso and start playing music, thanks to the Pi having an NFS connection to my music storage server.
This is not terribly scalable. If I now want to play music in my bedroom, I have an old laptop there, which is again NFS mounted to the music NAS, has Giocoso installed, and can be logged on to directly and I can therefore tell Giocoso to start playing music via the laptop speakers or (more usually at 1AM) via the BlueTooth headphones the laptop can connect to. I mean, it works… but it's three fat PCs, each with their own installation of Giocoso, each requiring direct access to start and stop playback. I at least invented Giocoso Pro so that whatever each of the three PCs did, there would be a single record of who played what, wherever the play took place. Giocoso Pro however makes no difference for the need for three independently-usable, fully-fledged PCs, complete with keyboard, mouse and monitor, in the first place.
The thing is, I have ready access to a device that could SSH into any and all of these PCs: my mobile phone. I could simply have three headless Raspberry Pi 3Bs in each room, each connected to the music NAS, each with Giocoso installed. Whip out my phone, ssh into whichever one I want to start playing music and… and then? Therein lies the perennial problem. Let me give you a clue as to what happens when I try that and launch Giocoso:
It reminds me of the Rosetta stone, only somewhat less translatable! You might just be able to pick out the standard Giocoso main menu: Play Music, Database Management and so on. But the rest of the display is just junk, for the simple reason that there's no Android or iPhone terminal emulator I know of that knows how to display sixel graphics properly. What you';re seeing here, therefore, is how a non-sixel-enabled terminal handles displaying the Giocoso program logo. The same thing happens if you start playing a recording and Giocoso tries to display its album art in-terminal.
Apart from the graphical glitch, the other problem with Giocoso on a phone is that phones are mostly portrait in orientation, whilst Giocoso is definitely a landscape kind of app: wide than it is tall! Hence, on this screenshot, you can see the one-line top bar menu has wrapped onto two lines. Phone screens just aren't wide enough!
It is, of course, for this reason that I invented mgiocoso ('m' for 'mobile'!): it was designed to be a 'portrait' app and it didn't display any graphics, so the terminal wouldn't fill up with nonsense:
Much better! Intelligible output, displaying what the main Giocoso running on the machine I've ssh'd into is already playing, and giving you the ability to pause, skip, terminate or repeat that play, too, all contained within the device you probably already carry with you everywhere. What's not to like?!
Well… you'll notice that you can't initiate play with mgiocoso. You can control an already-playing Giocoso session, but you can't start playback from your mobile device. In my three-room scenario earlier, therefore, I'm doomed to require a screen on each room's PC, or to access all of them from one PC with a screen, via ssh.
So the mission creep for Giocoso version 3.36 is this:
It's in portrait mode, so fits a mobile display. It doesn't have any graphics, so doesn't scramble a mobile display with hieroglyhics. And, drum roll please, it has a 'Play Music' menu option. This is the new Giocoso “mini-player”, which will be part of the next 3.36 release. It can run on a mobile phone, displays OK and will let you initiate playback. So, now I could have three headless PCs, each with access to the music NAS, each with Giocoso installed; I can ssh into each of them as needed, invoke giocoso-player.sh and then start music playing on whatever PC or Pi I've ssh'd into:
I don't see any album art, true enough: but I wouldn't want to on my mobile phone. I do at least get comprehensive data about what's playing and when it's due to end -and I still can control the playback to some extent, with options to Autostop, Terminate, Skip and Repeat available as they would be in a 'normal', full-fat Giocoso session.
The only slight fly in the ointment is that each of my PCs still has to be beefy enough to have an NFS mount capability, to have all the Giocoso dependency packages installed and to be able to run Giocoso (and ffmpeg) without glitching. The new mini-player mode gives me control via my mobile phone device, but it doesn't in itself alleviate the need for the PC its controlling to be reasonably powerful enough to play FLACs by itself.
Fixing that requirement is another bit of mission creep that has delayed the next Giocoso release a little… and I'll discuss it in some detail in Part 2 of this post, in a couple of days: for now, this post has gone on quite long enough!
Poor Peter Grimes
Last Friday, I had a great night out at Nottingham's Theatre Royal to see a performance by Opera North of Benjamin Britten's Peter Grimes. Expectations were high: I don't think I've ever seen a whole performance of this opera live, though I definitely remember walking out of Jon Vickers' mangling of the role at a performance in Covent Garden sometime in the 1980s! Let me say at the outset that I enjoyed the evening, on the whole. The orchestra played wonderfully and the chorus sang vividly: no complaints there, at all. They were thrilling to hear. Balstrode and Swallow were sung magnificently; Ellen Orford was sung rather well; Bob Boles' was also a strong performance. Unfortunately, Auntie was sung by someone who simply couldn't get down to the low alto notes and therefore was practically inaudible throughout. Peter Grimes was also not sung brilliantly: his Act 1 was fine. His mad scene was histrionic without emotion. And throughout, his top notes just weren't really there. When your eponymous hero can't quite sing the best parts of the role, you have a bit of a problem, I feel!
All that said, the music wasn't the main problem of the evening. That belongs with the director. The opera is supposed to open with a “bang!”: “Peter Grimes, Peter Grimes, we are here to investigate the cause of death of your apprentice, William Spode”. Straight in, no messing, scene set, backstory explained, all done within 20 seconds of the conductor raising his baton. What we got in Nottingham was some sort of “pantomime”, in which the curtain rose, silence descended and a torso wrapped in fishing nets was 'discovered' by children scampering across the stage. Presumably, this was the body of William Spode: though I have to say it was an exceptionally well-developed torso of a thirty year-old, not exactly your weedy boy apprentice that William Spode is supposed to have been. Regardless of the incongruent torso's physique, however, the point is: the opera doesn't require a stupid pantomime to contextualise the rest of the action. That's done for you in the first 18 words of the opera, blasted into the auditorium within seconds of the music starting. The pantomime was just the director trying, one presumes, to spoon-feed a context to an opera-illiterate audience. I didn't appreciate it, shall we say?
Worse, the ending: Peter Grimes is supposed to sail off until he loses sight of land, then sink his boat. The Borough's population is then meant to get on with their lives, essentially as if nothing much had happened. Curtain down, cue the applause. What we got, instead, was the music ending but the cast staying on stage swaying ridiculously from side to side with a giant net (see the thumbnail above), which made 'swooshing' sounds as it moved. This lasted an excruciating few minutes before the curtain finally descended and applause ensued. The swooshing sound was, of course, intended to sound like the sea (as some excited woman on the way out of the venue announced she had discerned). The trouble is that the sea is not meant to be a protagonist in the opera, with the last word. It's a character, of course, with varying moods, from thundering storm to twinkling sunlight on glittering waves. But it isn't the villain of the piece: that role is reserved to the people of the Borough whose conformity and resentfulness of difference and vision is what dooms Grimes. Theirs is supposed to be the last word: “Coastguard reports, there's a boat sinking out at sea… I see nothing… Just one of these rumours… move on”. If you detract from that conclusion, you lose the whole point of the opera: of the visionary dreamer against a constrained, conventional society; of the outsider against the indifferent crowd. Opera North comprehensively missed the point: we don't need nets sounding like the sea to conclude this opera. We just need the Borough to shrug its collective shoulders and get on with life, dismissive of the visionary it has just destroyed. The ending of the performance was as gormless as its opening, basically.
Another annoyance, too: at the end of the opera, Balstrode gives advice to Grimes to take his boat out until he loses sight of land, then sink it (and himself) to oblivion. It is meant to be an act of kindness, even of love: to spare Peter from the wrath of the Borough and relieve him of his pain and torment. It is meant to be said kindly and gently. Our Balstrode, however, decided to turn tail, lose patience, metaphorically roll his eyes and clearly couldn't wait to be rid of this Grimes fellow. Again, a total misreading of the opera, its meaning and intent.
I didn't like the staging much, either. When the libretto mentions “Grimes' hut”, you kind of expect “a hut”, not something that looked like a curtailed oil rig in the North Sea (see picture at the right). I'm prepared to suspend my disbelief quite willingly… but no man could live comfortably on a 12 foot square of timber in the upper atmosphere! Watching the new apprentice get hitched to a wire before falling off said platform was just excruciating. He's meant to walk out of a hut, leave the door open… and then we hear him scream as he falls down the cliff off-stage. There's neither reason nor point in making the poor lad do a leap in the centre of the stage, even with a harness laboriously attached. It just looked stupid.
I won't mention (OK, I will) the fact that there are really two big emotional fulcrums in the piece: the clash between Grimes and Ellen outside the Church on Sunday, and Grimes' mad scene. Unfortunately, the Nottingham audience wasn't playing ball for either key moment. During the outside-Church confrontation, a fellow in the rows behind me decided he was going to have some sort of epileptic fit. Which is absolutely fine: these things happen and my sympathies were definitely with him. Unfortunately, his fit took the form of rather loud and continuous moaning and instead of getting him out of the auditorium with all due haste and minimum fuss, this went on throughout the piece. Key moment #1 missed entirely. The lady in the row behind me then decided she would have a coughing fit throughout the Grimes mad scene. Again, I wouldn't have minded so much, except that she apologised to everyone around her in a rather loud stage whisper. Which was, perhaps, considerate… except that she then chose to round things off by getting out the throat sweets and unwrapping them throughout what remained of the mad scene. Key moment #2 thereby ruined.
I lay those misadventures at the feet of the idiotic public, not those of Opera North, of course. But the ham-fisted production of this opera is all their own doing and the less-than-stellar performances of Grimes and Aunty are equally of their own creation. Full marks to the chorus and orchestra, however… and extra marks to the Theatre Royal: it's a proper 'traditional' opera house, in green and gold, in the raked-box style of La Scala and with a most impressive chandelier! I had no idea Nottingham was blessed with such a beauty (and I lived there for six years!).
Overall, 7/10 for the orchestra, chorus and powerful Act 1. Points off for completely unnecessary and misguided prologue and epilogue 'pantomimes', the weak performances from two key singers and the (expected) dreadful behaviour of assorted members of the public. There are reasons I don't go to live performances of opera very often: this outing reminded me of what they are.
Niente Version 4.04 Released (On Time!!)
Completely on schedule, despite a migration of my website to a Proxmox-hosted LXC container and a whole new iMac purchased at the end of January (I trust I am impressing you!), I have today just released a new version of the Niente FLAC-checking program. It is the first new version since 10th April 2025, brings the version number up to 4.04 and is a fairly significant release for a number of reasons.
Principle amongst these is the significant amount of code re-writing needed to make Niente a full first-class citizen on macOS, AlmaLinux 9 and AlmaLinux 10. This website's own page of Niente statistics has been produced by macOS since about the 10th February; between December 2025 and the end of January 2026, they were coming out of AlmaLinux 9; and between February 1st and February 9th, they were the product of AlmaLinux 10. All three new operating systems have been tested pretty comprehensively, therefore.
The other huge new feature is a complete overhaul of Niente's reporting mechanism. Niente is, fundamentally, a metadata collector and a report generator, so to have half its core functionality pretty much re-written from the ground up is fairly significant! All Niente reports have had their logic tweaked and refined… and every one now outputs to your system's default web browser. A new configuration option allows you to specify a specific browser if you prefer, but if you leave it blank (which it is by default) whatever your default browser is will be used to display all reports.
One final key new feature I should mention, too, is that Niente is now ReplayGain aware: its database table acquires a new column to store any ReplayGain_Album_Gain metadata tag values detected within a FLAC: if there is none, that results in a new item on the Aggregate Statistics report, counting the number of FLACs that don't have ReplayGain data. You might have no interest in ReplayGain, of course, in which case you can ignore the statistic: it's listed as an “other” statistic and therefore not actually indicative of a physical or logical metadata problem.
Full details, as ever, are in the Niente changelog.
Upgrading is a bit of an issue, this time round. The last version of Niente was released back in the day when the source of software updates was absolutelybaching.com. It is therefore unfortunately the case that attempting to use the usual Administration menu, Option 5 to update will not work, as the program will be attempting to obtain fresh software from the wrong source. To obtain the latest Version 4.04 software, therefore, the upgrade procedure is simply:
wget software.bbritten.com/neninst bash neninst
…and follow the prompts. It's basically a fresh installation from scratch and is likely to mean that you'll need to perform a full database re-load (Database menu, Option 2) followed by a full integrity check (Integrity Checks menu, Option 1). Apologies for this break in the usual upgrade process: the change of website between absolutelybaching and bbritten.com is the sort of one-off upheaval that has unintended consequences! It shouldn't happen again.
Normal Service will resume in 3...2...1...

My apologies for the fact that this site was down for most of yesterday. I was in the middle of a long-planned move of the site from a virtual machine to an LXC container, for efficiency reasons, when real life intervened and I had to leave the migration in mid-move. I believe everything has been brought across now and normal service should have resumed, but see the picture at the right….
Let me know if you spot any outstanding issues.
Giocoso Version 3.35 Released (Early again!!)
I have just released Giocoso Version 3.35, a few days earlier than planned. It is a decently-significant release, in that it contains more bug fixes for running on macOS and a completely new reporting infrastructure: instead of attempting to display data within the confines of a size-restricted terminal, all Giocoso reports now open in a browser. By default, your system's default browser will be used, but a new configuration parameter allows you to specify any already-installed web browser instead:
In addition, a new report and selection filter allows you to see who your 'rarely-performed' composers are: that is, composers who haven't had anything played within the past 120 days. The selection filter is configurable (so you could declare 'not played within 82 days' to be 'rarely-performed') but the report is not.
Anyway: full details as ever are over in the changelog. Upgrading is the usual business of using the Administration menu, Option 2 and following the prompts. For assorted reasons that needn't detain us, you may be told at the end of the upgrade process that 'something went wrong': ignore that, quit Giocoso (ignoring any error messages that might appear on the way out) and then re-launch the program. A second attempt at an upgrade should give you a message along the lines of 'you're all good: nothing needs updating', at which point you're good to use the program as normal.





