BSD Progress

So the site was down today for several hours: my apologies for the unanticipated outage.

The fact is, however, that I have learned at least how to move the website from one ZFS storage pool to another, on the same host. Thus, this site is now running from an SSD instead of a bunch of spinning hard disks: hopefully, it is, in consequence, a bit more responsive than it was. More to the point, I now know how to move this website from one server to another, provided the new server is at least running FreeBSD. In the language of my last post, I am certainly still tied to the FreeBSD bottle, but at least I can navigate that particular ship in directions I find acceptable. I've even been able to migrate this website to run from a 2009 laptop that's running FreeBSD: I am therefore no longer particularly bound to a specific choice of OS appliance. [...] 

Continue Reading

Giocoso Version 3.06 Released

A new release of Giocoso has been made available, fixing a recently-discovered minor, but annoying, bug. This brings the current version of Giocoso up to 3.06.

The bug was that if you used any of the non-default methods of selecting music to play from the Play Music menu (such as Option 2, where you specify filters to control the selection, or Option 5, where a playlist is used to determine what to play and in what order), the number of 'selections' to be played would be remembered if you halted those non-default plays early and then switched to using Option 1's 'play music with defaults' menu option. For example: take Option 2 and say 'play only music that lasts less than 10 minutes': maybe that will generate a list of things to be played that numbers 1345. After playing 4 things from that list, you interrupt the play (by issuing an Autostop request, for example) but do not quit Giocoso. Then you take Play Music option 1: the default, randomised selection of music now takes place... but Giocoso will still declare that there are 1345 items to be played (the top right-hand corner will display something like 'Selection 1 of 1345'). That's because it's a bug of omission: the default play method didn't explicitly set the limit on plays, so if another play option did, the default play method was stuck using that number of selections. [...] 

Continue Reading

Reaching the limits

The graph at the left tells a tale! The context for that tale is that since June 3rd 2021, I've been using Giocoso to play (almost exclusively) only those recordings which have not previously been recorded as having been played, in an attempt to ensure that by the time I come to kick the bucket, I can say, hand-on-heart, that I've listened to every recording I ever bought. On the one hand, the tale is of good news: the graph shows that only 7.1% of my entire collection has not yet been played by Giocoso. So, I've played around 93% of it, which is pretty good going.

It's even better going when you consider that for much of the time since June 2021, I've had time restrictions on my plays: in other words, I've told Giocoso 'play unplayed recordings that last less than 20 minutes' or something similar. As a result, I haven't listened to Wagner's Ring cycle with Giocoso, but I know for certain I've played those recordings multiple, multiple times in the years before 2021. Which is to say: even the 7.1% I haven't 'officially' played contains substantial chunks of recorded music which I know I've played using different tools... so the amount of my collection which is truly unplayed is significantly less than 7%. [...] 

Continue Reading

Work in Progress: Semplice Version 2

It's finally time to mention what I've been up to for the past couple of months: re-writing Semplice, my digital music file manager. It's the tool that lets you tag your FLACs, volume boost them, merge them into 'SuperFLACs' (and split them back out into per-track FLACs if you prefer), convert them into MP3s or most other audio formats, analyse them to make sure they're really high resolution FLACs, and much more besides.

To be honest, I didn't think there was a lot wrong with the original version of Semplice (currently sitting at version 1.02). There wasn't a huge amount of functionality that was missing, in other words: it was more that the user interface was a bit klunky and old-fashioned, particularly in light of the user interface advances I'd implemented when developing Giocoso Version 3. So, Semplice Version 2 was going to be more of a user interface refresh than anything else... but, as I suspected it would, mission creep has resulted in a few additions to Semplice functionality that it turns out I'm rather fond of! [...] 

Continue Reading

Giocoso Tips

I just thought I'd show you how I run Giocoso on my main desktop these days: see the screenshot at the left.

That's just a picture of KDE's default terminal, Konsole, running in 'split view' mode. Open Konsole, click the Split View button at the top of the program area to obtain the drop-down menu and from that select Split View Left/Right[...] 

Continue Reading

Is AccurateRip Accurate?

I mentioned last time that when ripping an audio CD to digital files, it's important to know that this optical drive reads the first audio sample from (say) sample 103, whereas that optical drive reads the same first audio sample from sample 6. The inability to precisely and accurately read the first audio sample from, er... the first audio sample is, unfortunately, inherent in the design of the audio CD standard in the first place (which has no absolute positioning information encoded in the data stream) and in the vagaries of hardware manufacturing, where tolerances vary between manufacturers, designs and even batches of the same design by the same manufacturer!

On the whole, however, a given optical device product will be consistent about its failings. If one specific ASUS DRW-20B1 device reads its first sample from actual sample -6, then you can be fairly sure that almost all ASUS DRW-20B1's will do the same thing. You can therefore build up a database of known optical device models with a record of what their read positioning errors are -and this is exactly what the AccurateRip database of CD drive offsets is. Knowing these 'offset corrections', you can then tell your device to read (say) sample 103 knowing that this will actually make it read sample 0 (computers usually start counting at zero!), which means you now know you're actually reading the correct 'start of audio'. Thus, once you know the read offset that applies to each make of optical drive, then the same audio CD can be read from the same absolute starting position in the audio signal no matter which make of drive is doing the reading. AccurateRip therefore lets you produce consistent rips with different optical drives, because applying the read offsets always ensures each drive can read the start of the audio data on the CD correctly. The story of me doing precisely this (once my code was correct and tools like EAC and dbPowerAMP were configured correctly!) is what my last blog post was all about, after all. [...] 

Continue Reading

Ripping Yarns

Down the rabbit hole we go! I wanted to rip a new CD I purchased recently, shown at the left, of the reconstructed Elgar 3rd Symphony. Prestoclassical had the physical CD listed at £5.75, where the FLAC download was £8.04 -which, by the by, is a very oddly specific number!- so I went for the physical product rather than the digital download because I'm a cheapskate! Physical product is rather unusual for me these days, though. So I then had to rip the purchased CD to FLAC files myself -and that's where the fun started! Bear with me as I set the scene...

My desktop PC doesn't have an optical drive, so I use USB-connected ones when I need to. I have two: a DVD-ROM (i.e., reader only) that identifies as a TEAC; and a DVD-RW (reader/burner) that identifies as an HP device. So I ripped the Elgar with each drive in turn, using my own somewhat unloved CCDR program. Out of interest, I then checked the MD5 sums per ripped file (essentially, the digital fingerprint of the audio component of each file), using the command metaflac --show-md5sum "filename" and... they were different, depending on which optical drive they'd been ripped with! [...] 

Continue Reading

Giocoso Version 3.03 Released

Another tiny bug-fix in Giocoso has been released, bumping the program version to 3.03.

This time, it's a very minor correction to the way the program pauses and resumes music playback: if no music was being played when the pause request is made, then the program would output nasty-looking (but ultimately harmless) error messages from the operating system. Now, the pause/resume function tests that music is actually being played before trying to do something: net result, error messages are no longer produced and the program display remains 'pretty'! [...] 

Continue Reading

Mission Accomplished!

My turn-of-the-year project to move this website off a vintage 2012 server running Ubuntu onto a slightly-less-vintage 2019 server running TrueNAS Core (an 'appliance' built on top of FreeBSD) is now complete. What's more, there's a backup of it running on a TrueNAS Scale server (another 'appliance' built on top of Debian), on a server I was gifted when the company I was working for in Australia in 2012 sold itself off to a rival and all the staff were made redundant. It's my oldest-ever server, I think: vintage 2010 or thereabouts, but I've specc'd it up with 2 12-thread Xeon CPUs (so, 24 threads in all) running at 2.8GHz, and with 192GB of RAM. So definitely old, but not exactly shabby -and more than capable of running the 30 or so virtual machines I need to test my software against most varieties of Linux and Windows, in addition to acting as my music, video and website backup server.

Apart from a couple of outages today as the final moves of the (very noisy!) servers into their designated loft space took place, I don't think anyone would have noticed much by way of change or disaster! In fact, 95% of the move was finished on January 1st, well before my own announced deadline. The other 5% has been getting the backup server configured properly, which took longer than I expected because I chose to upgrade the CPUs and the RAM... and then managed to buy two sticks of faulty RAM and had to wait for replacements to be shipped from Germany. [...] 

Continue Reading

End-of-Year Report

As 2023 draws to its close, I thought I'd trawl through my Giocoso music player's database and work out what I've spent the past twelve months doing, as far as listening to classical music goes.

The headline news is that I've played 3,007 unique recordings this year which, cumulatively, lasted for about 69 days (68.93 if you want to be accurate about it!). [...] 

Continue Reading

Bug-hunt!

I've reached the persnickety bug-hunting phase of Giocoso Version 3 development! This is good, because it means a release of Version 3 is not too far away. It's bad, though, because as you uncover new, obviously stupid bugs, you spend your days thinking, 'How could I be so stupid!'

A case in point was just triggered by what I thought was going to be a trivial little addition to this website: adding a 'play count' column to my music play history listing. Adding the column itself and getting it populated from my Giocoso database was indeed quite simple. What wasn't expected was this: [...] 

Continue Reading