SACD ISO Patcher — a tidy SACD library on your Eversolo

Discussion in 'All about Eversolo' started by losinka, May 21, 2026.

  1. losinka

    losinka Member

    Further releases of new versions will be posted here: https://reauthor.foreigner.cc

    ===

    Hi everyone. Let me show you what I put together, and why. Maybe it will be useful to someone. Constructive criticism and feature ideas are welcome.

    Everything below is strictly about SACD images (not DSD/DST/DSF, not FLAC, not WAV, not MP3, and so on).

    I've built up over three hundred SACDs as disc images (ISO). Stereo plays on an Eversolo T8, multichannel on a DMP-A6ME. Let me be clear up front, because it matters: the Eversolo library scan works exactly as it should. It builds the library from the metadata stored inside each disc image, not from folder names or anything outside the disc. That is the correct approach. The catch isn't the scanner - it's the source material. The metadata baked into SACD discs over the years is wildly inconsistent from one disc to the next, and a scan faithfully reflects whatever each disc actually contains. So you can end up with one artist split into several entries, and the albums you wanted to organize scattered all over the place. A few examples - and in every one, the cause is the disc itself, not Eversolo:
    * One disc stores the artist as "Van Halen", another stores it as "VAN HALEN". The library lists them as two different artists, because that's literally what the discs say.
    * A stereo "Foreigner - 4" and a multichannel "Foreigner - 4" (the one that also carries a stereo layer) come through as two separate "4" albums, because that's how each disc identifies itself. If the covers are different enough to tell apart, you're lucky; if not, you're left guessing.
    * Some SACDs from the early 2000s (and the very first ones) were pressed with no track names at all, so any player can only show Song 1, Song 2, Song N (or Track 1, Track 2...). There's nothing for Eversolo to fix there - the names were simply never written onto the disc - but it still doesn't make life any easier for us :)

    The way I used to "fix" this: pull the DSD out of the image (sacd_extract), pull the track durations, work out the gaps between tracks, and feed all of it into Philips SuperAuthor. That would author a fresh disc, which then had to be converted back to an ISO. One mistake anywhere and the whole thing was wasted - start over.
    Eventually I just ran out of patience for all of this and started trying to work out how the Eversolo scan actually reads a disc, so I could get a tidy library with less effort.
    In the end it clicked: the image doesn't have to be re-authored at all. It can be patched instead - you edit the text right inside the image, in place, and the audio is left completely alone. So I sat down and took the format apart piece by piece (master TOC, master text, the SACDTTxt blocks that hold the per-track text), and wrote a utility. The name took no imagination: SACD ISO Patcher.

    I really hope it helps make your Eversolo library clean and easy to read. And if you have a big pile of SACD images, it will save you a lot of time - that part I'm certain of.

    What it does.
    * Open an ISO image, or just drag and drop one onto the window, and you get the artist, album, year, catalog number and the track list. Everything is editable by hand; press Save and the changes go straight into the ISO. Takes seconds. The audio is never touched - the DSD bitstream stays bit-for-bit what it was.
    * Discogs is built in. Press Find and it looks the release up by catalog number and by artist-plus-album, then shows you what it found. Catalog and year matches are highlighted and pushed to the top, so it's easier to pick the right edition (the exact stereo or multichannel one). Click a result and the fields fill in; the cover is one button away with Get cover. Or do it the old-fashioned way and paste a release link by hand.
    * Title Case - one button to tidy up old rips where EVERYTHING IS SHOUTING IN CAPS. It leaves RV/BWV numbers, Roman numerals and apostrophes alone. So there's your fix for "VAN HALEN" => "Van Halen".
    * Folder scan - point it at your whole collection and the program shows which discs still have no track names (with a filter to show only those). Fix a disc, save it, and the "Next untitled disc" button jumps you straight to the next one, no re-scan needed.
    * Cover art. If there's a cover.jpg sitting next to the image, it shows up in the editor. You can also pull it down
    from Discogs.
    * A safety net. Before every write the program backs up the exact sectors it's about to touch, so a rollback is a
    single button. And a rollback won't paste a backup onto the wrong disc - the image is checked against an audio
    fingerprint first. After a write, the disc is also re-checked independently by sacd_extract (the reference tool, built in) - a second opinion that the image is still intact.
    * It asks for a backup folder once and remembers it after that. The program itself is a single .exe, no install.

    How to use it.
    * Sign up at Discogs, it's free. Under Settings => Developers, create a Token and don't tell anyone what it is :)
    * Drag an image onto the window (or Open ISO).
    * Fix the fields by hand, or press Find and pick a release on Discogs (or paste a link/URL to a Discogs release), and the fields fill themselves in. Title Case sorts out the caps; Get cover pulls the cover art.
    * Save - the program asks for a backup folder (once), makes the backup, writes your edits, and runs the check itself.
    * To go through the whole library in one go: Scan folder => a list of discs, the yellow ones have no track names => open one => fix it => Save => "Next untitled disc" to the next.
    * If something goes wrong, Restore backup, and the image goes back to its original state.

    A couple of tips.
    * When the same album exists both as a stereo disc and as a multichannel disc, the two collide as a single entry in the library (the Foreigner case above). Adding something like "[MCH]" to the album field of the multichannel one keeps them apart - "4" and "4 [MCH]".
    * A box set is just a stack of separate ISOs - open and fix each disc like any other. By default they all share one
    album name, so the whole set collapses into a single library entry. The fix is to give each disc a distinct album
    name; the simplest way is to add the disc number, so the set lines up in order instead of merging into one.

    I built it for myself, but since it turned out genuinely useful, I'm sharing it.

    From the archive you only need the .exe - that is the whole program, and it needs no installation. The rest is a short readme plus the licence and source files for the open-source tool built into it (sacd_extract). To use the
    program yourself you can ignore those, or delete them. One thing though: if you ever pass the program on to someone else, share the whole archive as it is, not just the .exe - the bundled tool's licence requires its source code to travel with it.
     
    Last edited: Jun 18, 2026
  2. losinka

    losinka Member

    And a few screenshots:

    1.png

    2.png

    3.png

    4.png

    5.png

    6.png

    7.png

    8.png

    9.png

    10.png
     
  3. Markswift2003

    Markswift2003 Well-Known Member SUPER Administrator Zidoo Beta Tester Contributor

    This looks like a great utility - stickied!
     
    Alan Rutlidge likes this.
  4. SausageDog

    SausageDog Active Member

    Someone please give this guy a Nobel Prize!
     
  5. Markswift2003

    Markswift2003 Well-Known Member SUPER Administrator Zidoo Beta Tester Contributor

    Brilliant :D
     
  6. losinka

    losinka Member

    v1.1.0
    Up front: no new features - this is a reliability and safety release. Using the app is exactly the same, nothing new to learn.

    * Backup and restore. This is the safety net against damaging an image, and I hardened it considerably. A corrupted
    backup is now detected and refused, instead of being written back into the disc. Restore can no longer truncate the image because of a damaged backup manifest. And two backups made within the same second no longer overwrite each other.
    * Discogs. Closed a path where the Discogs token could in theory be sent to the wrong server. The token still only ever
    goes to Discogs, nowhere else.
    * General robustness. Clean error messages instead of a silent exit, and hardened SACD-format parsing.
     
  7. losinka

    losinka Member

    What's new in 1.2.0
    - Backup folder gets a short fixed name (backup_<timestamp>). The
    old name embedded the full ISO filename and could exceed the
    Windows path-length limit, which made the backup folder
    impossible to move onto a NAS or another drive. The new name is
    safe to copy anywhere.
    - The backup folder now contains a README.txt that names the source
    ISO, its size, when the backup was made, the tool version, and
    how to restore. This is for the user only - Restore itself does
    not need it.
    - Older long-named backups continue to restore - the folder name is
    not used by Restore.
    - Internal preparation for a future track-editing feature. No
    user-visible change from this part yet.

    What's new in 1.1.1
    Compatibility and reliability fixes following a thorough audit and
    end-to-end test against a corpus of 8 SACD discs. No new features.
    The on-disc bytes a 1.1.1 patch writes follow the format more
    strictly than 1.1.0 did. Several minor metadata fields and a
    layout-handling edge case are now correct; some discs that used to
    produce a "disc has errors" notice in third-party SACD tools after
    a 1.1.0 patch no longer do so after a 1.1.1 patch.
    Discs patched with 1.1.0 keep their audio intact and can be safely
    re-patched with 1.1.1 to pick up the fixes.
     
    PaTe, SausageDog and Nutul like this.
  8. Jorgo

    Jorgo Active Member Eversolo Beta Tester

    Thanks for this, looks very useful! Would you consider adding MusicBrainz (Picard) as a lookup source?
     
  9. losinka

    losinka Member

    Thanks! Yes, MusicBrainz support is a good idea and I've added it to the roadmap as a secondary lookup source - Discogs still has noticeably better SACD coverage, especially outside classical/jazz, so it'll stay the primary, but
    having MusicBrainz alongside it makes sense (open API, no token, good metadata quality). Not at the top of the list, but it'll come.
    By the way, this is the first and so far only piece of feedback ;) So either everything works perfectly and there are no questions at all, or nobody needs this damn thing ;)
     
  10. SausageDog

    SausageDog Active Member

    I don't have any SACD to make use of your utility (at now, in the future who knows...) but I can recognise a competent effort so you have my full appreciation and plenty of support for you to continue this remarkable project. Keep on... :)
     
    losinka likes this.
  11. Roman Unucka

    Roman Unucka Member

    Hi,

    Great job!

    Is it possible to edit the "GENGRE" entry in the SACD ISO image, if it exists?

    Thanks.

    Roman
     
    Last edited: May 26, 2026
  12. losinka

    losinka Member

    Hi Roman,

    Thank you.

    For this patcher, I will probably only add MusicBrainz support and fix bugs if people report them. I do not plan to extend its functionality much further.
    Full re-authoring, including all possible fields, editing them, and so on, will be part of a separate program. I do not know yet what I will call it.
    So for now, editing the “GENRE” entry inside the SACD ISO image is not planned for this patcher.
     
  13. Jorgo

    Jorgo Active Member Eversolo Beta Tester

    Thanks for considering it! I am an editor on Musicbrainz especially for multi-channel releases on SACD and Blu-ray, so the info there is great, IMHO ;-) But you are right, in some ways Discogs is superior, for example when it comes to genre info and ratings. I usually tag all my files with both MB and Discogs info.
     
  14. Jorgo

    Jorgo Active Member Eversolo Beta Tester

    Another quick question: On foobar2000 I use the DISCOGGER add-on to tag files. There I need a token AND a secret... how come your app only works with a token?
     
  15. Jorgo

    Jorgo Active Member Eversolo Beta Tester

    Sorry, another question... your project gives me a lot of ideas! You probably also use foobar2000 to playback SACD ISO. In that case you're familiar with the tagging concept, that tags can be saved in an .xml file next to the ISO. All my ISO appear perfectly tagged in foobar2000 because I have spent a lot of time writing Musicbrainz and Discogs tags. It would be so great of those .xml files could be used to retag the .ISO itself!

    Here are some .xml files from my collection to try out: https://filebin.net/r7tlcgyb2szjjmjh/SACD_xml.zip
     
    Last edited: May 26, 2026
  16. losinka

    losinka Member

    Hi, thanks for both questions - quick answers:

    Token vs token+secret: The Discogs API has two authentication modes. A Personal Access Token (PAT) is a single token that lets an app read from the public Discogs database on its own behalf. Full OAuth (consumer key + consumer secret + access token + access token secret) is only required when the app writes to your personal Discogs collection — marking items as owned, adding to your wantlist, etc.
    My patcher only does read-only DB lookups (search by catalog number, fetch tracklist, fetch genre) - it never writes anything back to your Discogs profile - so a PAT is the right credential and matches Discogs's intended use for this class of access. DISCOGGER apparently writes to your collection too, which is why it asks for the full OAuth credential set.

    foobar2000 .xml tag sidecars:
    thanks for the suggestion, but I want to clarify the direction before promising anything, because I don't actually use foobar2000 myself - my own listening chain is Eversolo (primary streamer), Zidoo, and occasionally Audirvana on the desktop. Eversolo doesn't read sidecar .xml tag files for ISO SACDs - it reads only the on-disc metadata, which is precisely why this patcher edits the bytes inside the .iso instead of writing a sidecar. So could you say which direction you'd want?
    - Import (your existing foobar / Musicbrainz Picard .xml => patch the ISO with those values): doable in principle, but since I have no foobar setup to dogfood it with, I can't realistically build and test that path properly. MusicBrainz lookup directly from inside the patcher is already on the roadmap for the next major version - that might cover your underlying need (you'd get the same Musicbrainz metadata, just without going through foobar as an intermediate step).
    - Export (the patcher writes a foobar-readable .xml next to the patched ISO): useful only for foobar users - and again, I can't test it on my own playback chain.

    If you can describe your actual workflow (what playback device or app reads those .xml files for you, and what's currently missing on the in-ISO metadata side), I'll be able to weigh it properly against the roadmap.

    upd:
    The patcher is a small part of what I'm working on. There really isn't much more to expand functionality-wise on the patcher side - MusicBrainz and Genre editing are coming soon, and that pretty much closes out what an in-place editor can do. But the patcher was the foundation for a proper SACD re-authoring tool that lifts the in-place constraint - track-level edits, locale management, structural fixes, and a lot more. I'm working on that now. It's not simple though :)
     
    Last edited: May 26, 2026
  17. Jorgo

    Jorgo Active Member Eversolo Beta Tester

    Thanks for thinking this through with me. Since you don't use foobar2000 it's better not to pursue that avenue as I don't want to misuse your resources. Musicbrainz is a preferable avenue since it usually has perfect title cases for all languages. That is where Discogs fails most for me. Your app tries to fix this but with mixed results.

    On the other hand, the Musicbrainz guys are obsessed with using typographical replacements of "common" ASCII stuff, like using ‘ instead of ' for example, which personally I find very annoying. I replace values via script like this:

    " ", " "
    " ", " "
    " ", " "
    " ", " "
    " ", " "
    " ", " "
    "…", "..."
    "‥", ".."
    "․", "."
    "·", "."
    "•", "*"
    "–", "-"
    "—", "--"
    "‣", "-"
    "‹", "<"
    "›", ">"
    "‘", "'"
     
  18. Jorgo

    Jorgo Active Member Eversolo Beta Tester

    Minor setback... I just realized that when i patch an ISO, it invalidates the sidecar .xml. There's a "store id" hash value which changes if the ISO is patched, like this
    <store id="5A7CB595C64CC2E9E7D04A536810227D" type="SACD" version="1.2">

    I'm guessing patching the .xml would be too much to ask... but do you recognize that type of hash and would it be possible to store the new value in the manifest.json for easy copy/paste?
     
  19. losinka

    losinka Member

    Quick research: that sidecar is foobar2000's foo_input_sacd metabase format. The store id is a 128-bit MD5 hash (32 hex chars) of some region of the ISO - most likely the Master TOC sector (LSN 510) or the first few kilobytes; without diving into the plugin source I can't say exactly which bytes.
    The patcher legitimately rewrites parts of the ISO (Master_TOC, Master_Text, Track_Text) when you edit metadata, so any hash computed over those regions will change. That's not really a patcher bug - it is just how foo_input_sacd ties its xml to the disc.
    Easiest fix on your side: re-open the ISO in foobar2000 after patching, let it compute the new store id, and either let it create a fresh xml or copy your existing tags across.
     
  20. Jorgo

    Jorgo Active Member Eversolo Beta Tester

    Yeah, that's what I did of course. Let's be realistic. Your tool is great for what it sets out to do and I only found 6 SACDs in my collection that didn't have any info. 4 of those didn't have enough space to save track titles. All in all, the edits are surprisingly swift and efficient and the time and effort to change your tool would be much much greater than the time it took me to fix my ISOs. So let's keep it as it is. Unless the improvement bug bites you ;:)
     
    Nutul likes this.

Share This Page