ISO-handling Bug Fixes

If you rip SACDs to ISO files, which I've previously documented how to do, you will subsequently need to be able to split the ISOs out into separate FLAC files, in order to catalogue and tag them properly. If you do, you need to be aware of a couple of bug-fixes that have recently been made to the AUAC script and associated software.

The usual approach I take is to break apart an ISO is to issue the command: auac -i=iso. But that recently failed to work correctly, and here's why.

First, the extraction of the files from within the ISO would sometimes break when their filenames were very long; there were also occasions when internal mathematical errors would cause the SACD extraction phase of proceedings to fail with a segmentation fault. That's not a problem with AUAC itself, but with the odio-sacd extraction software AUAC calls upon to do the extraction job. Fortunately, Robert Tari, that program's developer and maintainer, is very receptive to bug reports and was able to fix his software to take account of these sorts of issues.

Applying the fix requires that you first de-install both odio-sacd and the libodiosacd library it depends on. You'll have to work out how to uninstall those by yourself, as it will be distro-specific. On Manjaro, I simply used the GUI Package Manager, searched for libodiosacd, selected to delete it, and clicked Apply. The package manager worked out that if it was to delete the lib, the overall odio-sacd package would lose a dependency and would thus need to be deleted as well. I agreed to that: my system was swiftly clean of anything to do with odio-sacd.

Next, I followed Robert's own installation instructions to get the patched libodiosacd. On Manjaro, that just consisted of issuing the following commands, one at a time, and in sequence:

git clone https://github.com/tari01/libodiosacd.git
cd libodiosacd
make
sudo make install

Once the lib was installed that way, I used the GUI package manager to re-install odio-sacd. It was able to work out that a newer version of its dependency was already present on the system and therefore didn't prompt to re-install the older (and unpatched) version of libodiosacd.

So now I was able to extract the ISO that had previously triggered a segmentation fault.

Unfortunately, that's when I discovered the second significant bug -and this time, the problem was with my own AUAC software, not odio-sacd. Put simply, SACDs are typically mastered with a 6dB sound level reduction for assorted technical reasons and AUAC therefore checks, by default, if the extracted FLACs should receive a volume boost to counter this mastering artefact. If it finds that the files can be volume-boosted, it creates a copy of each FLAC with a sound boost, and then deletes the original, quieter FLACs, leaving only the volume-boosted copies behind. The bug was discovered when I extracted files from an incredibly rare ISO that did not need volume-boosting. AUAC worked out, correctly, that no volume boost was required... and then proceeded to delete what it regarded as 'the un-boosted originals'. Except that, since no sound-boosted copies were created (because they didn't need to be!), deleting the "originals" meant deleting the only FLACs that had just been extracted from the ISO! Net result: a laborious ISO extraction process that produced precisely zero FLACs at all 🙁

You can always work around this by running AUAC with the explicit instruction to not try volume boosting (auac -i=iso -v=n does the trick).

But the proper fix is to make sure that AUAC knows that, if it has analysed files to see if a volume boost is required, but determines that it isn't, then it should know not to delete anything! That fix went in this morning, creating a new version 2.09 of AUAC. If you don't already have AUAC installed, then installing it in the standard way gets you the latest, fixed version:

wget https://absolutelybaching.com/abc_installer
bash abc_installer --auac

If you already have an earlier version installed, then you can upgrade to the latest version simply by running the command:

auac --checkver

That should spot the newer release is available, prompt you for your sudo password, and then fetch and install the 2.09 version for you, automatically.

So, the short version of this story is: upgrade your odio-sacd and libodiosacd components to get bug-fixed SACD ISO extraction capability; and upgrade your AUAC software to version 2.09 to avoid having FLACs extracted from an ISO that require no volume boost from being immediately deleted after their extraction!