Today, I'm releasing Version 2.0 of my Niente FLAC integrity-testing tool. It comes about 4 months after version 1.0 was made available -and during those 4 months I've spent a lot more time focussed on PC migrations and cataloguing my backlog of new music acquisitions than on checking the internal integrity of my existing music files (which is never a wise trade-off!) But hopefully that explains the distinct lack of updates to Niente in all that time: I was barely paying it any attention at all, to be honest.
Had I been doing so, however, I would have swiftly realised that whatever medication I was taking at the time of the Version 1.0 release (and I think at this point I'm going to blame the Covid vaccine; or Aspirin; or something!), it was having serious effects on my coding abilities! Because, putting it bluntly, I've spent the past couple of weeks reviewing the code and wondering what on Earth I thought I was doing releasing it at all, since it was total rubbish, to the point where if you didn't run it with the --force switch, it barely did anything functional!
Mea cupla, basically. It wasn't a complete disaster: the bones of a useful program were there all along. But they needed cloaking with working flesh!
To make amends, Version 2.0 (note the very major version number uplift!) has now fixed all the issues I finally discovered lurking in Version 1.0. It is backwardly-compatible with Version 1.0, so that if you've created a Version 1.0 database of all your music files, Version 2.0 code will work with that without issue... but now it works correctly, does what it was always promised it would do, and correctly identifies internal file corruption (a.k.a. "bit-rot") as well as internal metadata inconsistencies (such as recording dates mentioned in both YEAR and ALBUM tags not being in agreement). It manages (finally!) to do these things without needing the --force switch to make it work, too!
Other than now actually working, the 'method of operation' of Niente hasn't really changed at all: you still (a) create an empty Niente database, which is then auto-populated with details about your music files; (b) keep the contents of the database up-to-date by performing regular and frequent refresh operations; (c) periodically perform an integrity check of the music files mentioned in the database; and (d) review the results of the integrity check by asking for on-screen or text based reports.
However, I've added one new run-time option to Version 2.0: --nuke. As you add new music to your collection and re-catalogue or even delete old music from it, the contents of the Niente database will get progressively more mixed up. Everything starts in nice alphabetical order, but over time, this strict ordering will get jumbled up. That isn't a problem, since the Niente program itself is oblivious to row-ordering within the database. But if you (like I do) periodically review the database contents using third-party tools, the mixed ordering might get irritating over time. The Version 1 fix to this was to delete the database and create a new one -and you can still do that in Version 2 if you like. But now you can also run Niente with the --nuke run-time option: all existing rows in the database will be deleted and then the empty database will be freshly re-populated by taking a brand-new look at the state of your music files. It's not exactly a feature you'd want to use very often, but it's a bit neater than the old manual delete-recreate approach, so I thought it worth doing. The Niente documentation has been upgraded to accurately reflect the existence of this new option.
One other minor tweak that might be worth mentioning: I've changed the default colour scheme so that "blue" now is displayed as "cyan" (or, light blue if you prefer). It's a bit more legible. If you want to revert back to the original dark blue, you can do so with the --displaycolour=classic option: the "classic" option is new in Version 2.
Upgrading to Version 2 is a bit of a no-brainer if you actually want to check your FLAC files for silent, internal degradation! It's easy to do, too, by simply running the command:
...and I recommend you do this as soon as possible! Version 1.0, meanwhile, is -frankly- so badly written that I haven't bothered to archive it on the software pages and the hope is you'll simply forget that it ever existed!