SACD ISO: Knifing a Fork!

The world of open source software can sometimes be confusing, because if someone likes your code, they can take it and 'fork' it -that is, essentially, copy it and declare it to be a new piece of software altogether. As a mere user, it can then be difficult to know if you're supposed to use the original, or the copy (which, potentially, might be better than the original).

This is precisely what has happened to me and the utility needed to unpack/convert SACD ISO music files.

In the beginning, a guy called Robert Tari wrote a piece of software called sacd to do this important job. Some other guys decided to fork his work (for reasons I can't fathom), and thus was born the Sound Linux More version of sacd. If you look at their Github page for that specific piece of software, you'll see that apart from a bug-fix posted back in April 2020, not much has happened to the software in over two years... and they're still recommending you contact Robert Tari for raising issues, at his Gmail.com email address. Why you'd go to the effort of forking something and then direct people to contact the original software author, I have no idea. It doesn't seem entirely legit to me, anyway!

Unfortunately, somewhere along the line, I got suckered into thinking this Sound Linux More version of sacd was the version of sacd to use. Except that it isn't, because Robert Tari has spent the years since the fork developing and refining his original version of the program, which he now calls odio-sacd. You can visit his website to find odio-sacd and a host of other useful tools he makes available. From there, you could visit his Github source code repository for odio-sacd and you'll discover that it's very much under active development still, with code updates dating back no more than a few months. So odio-sacd is the more actively-developed code, written by the same guy that wrote the original software in the first place. The Sound Linux More version is a dead-end copy of an old version of his, apparently no longer actively maintained, and still pointing people at Robert's gmail address if they want to raise any issues with him.

Which is how I came to find out about this unholy mess in the first place: I emailed Robert (using the Gmail address shown on the Sound Linux More webpage) to ask him if he'd ever considered making sacd work on the Raspberry Pi (because it currently depends on the sort of Streaming SIMD Extensions that only Intel/AMD x86_64 chips use, so it cannot compile on the Pi at all). He replied back almost immediately to say (a) no, and he wouldn't be the right person to do that; and (b) where did I get his email address from, since he hasn't actively used Gmail in nearly a decade!

Anyway, he seems a cool guy and was very helpful (even if not to Raspberry Pi users directly!), and I realised I've been somewhat hoodwinked all this time, because I took what was a mere copy of his original work as the 'real thing'. It seems much better all round if I stopped relying on the copy and relied instead on Robert's original -and continuing- work. Accordingly, I need to go and update my AUAC article which has long had a section about how you add the ability to decode SACD ISOs to the AUAC software -and it basically boils down to how you install the sacd utility. Unfortunately, through my ignorance, it has told you how to install the Sound Linux More version of sacd and not the 'correct' version which is Robert's odio-sacd. That will be changing in just minutes, I can assure you!

If you were wishing to change your own previously-installed version of sacd and still have your existing AUAC work, the following commands will do the job:

cd

sudo rm /usr/bin/sacd
git clone https://github.com/tari01/libodiosacd.git
cd libodiosacd
make
sudo make install

git clone https://github.com/tari01/odio-sacd.git
cd odio-sacd
make
sudo make install

sudo ln -s /usr/bin/odio-sacd /usr/bin/sacd
cd
rm -rf libodiosacd 
rm -rf odio-sacd

Simply put, you first hard-remove the existing Sound Linux More version of sacd; you then download and compile two bits of Robert's code; and you finish off with a command that makes a soft-link called 'sacd' to the actual program name 'odio-sacd'. That way AUAC, which is coded to use something called 'sacd', will still find what it needs -though it will be via a mere alias/shortcut to the real thing called odio-sacd. The final two 'rm' commands simply remove the source code folders once you no longer need them. Future releases of AUAC will probably be coded to use 'odio-sacd' directly, but this little trick with a softlink keeps things working for now, even though you switch from the slightly-dodgy copy of sacd to the real thing.

I should mention in passing that Robert's software can be installed on some distros using standard package installation commands (such as apt install for Ubuntu or pamac for Manjaro/Arch). But compiling it from source in the way I've just described will mean it works on all the distros AUAC runs on, without having to fiddle with repository sources and the like.

And the especially good news about killing off the fork of Robert's software in this way? It turns out that his odio-sacd software works perfectly on the Raspberry Pi anyway! It's only the Sound Linux More copy which has hard dependencies on the Intel/AMD Streaming SIMD Extensions. Robert's own software just runs fine, no matter that it's an ARM CPU it's running on! As proof:

Naturally, given that the Raspberry Pi is a bit lacking in CPU heft at the best of times, extracting and converting high-resolution audio from an SACD ISO on it requires considerable powers of patience and Zen-like obliviousness. But it gets there in the end! AUAC really can handle ISOs perfectly on every distro it runs on, which is immensely satisfying 🙂