SACD ISO Patcher - приводим библиотеку SACD-образов в нормальный вид

Написал бармену по повода открытия этого топика, но он, видимо, не прочитал. Я побоялся открывать вслепую - вдруг всё же нельзя, и открыл на форуме Эверсоло. Программа написана мной, лежит там же.Отвечать по-русски, если есть вопросы, могу здесь. Если начальство будет не против - оформим топик нормально.
Я привёл библиотеку Эверсоло в идеальный вид. Пробуйте :slight_smile:

Ну, удалят, если что…

SACD ISO Patcher - Windows-утилита для правки метаданных внутри SACD ISO-образов.

Чинит грязную библиотеку Eversolo T8/DMP-A[6,8,10]:

  • одинаковые названия альбомов,
  • разнобой в именах исполнителей,
  • КАПС,
  • отсутствующие названия треков.

Аудио не трогается - патчится только текст. Пригодится тем, у кого десятки или сотни SACD-рипов.

Что это
Программа открывает SACD ISO, показывает исполнителя, альбом, год, каталожный номер и треклист. Всё редактируется руками, или тянется с Discogs’а, и сохраняется обратно в образ за секунды. DSD-поток остаётся бит-в-бит прежним. Это не реавторинг, а патч: правка текста на месте в master TOC, master text и SACDTTxt-блоках.

Какую проблему решает
Eversolo строит библиотеку по метаданным внутри диска - это правильно. Но сами SACD годами штампуют с разнобойными метаданными:

  • “Van Halen” и “VAN HALEN” => два разных артиста.
  • Stereo и Multichannel-версия “Foreigner – 4” => два альбома “4”.
  • Ранние SACD вообще иногда встречаются без названий треков - только Song 1, Song 2…

Раньше лечилось через sacd_extract + Philips SuperAuthor + сборку нового ISO. Долго, хрупко, одна ошибка и всё переделывать с нуля.

Как это работает

  • Пренести образ в окно программы, или Open ISO. Поля редактируются, Save пишет в образ.
  • Discogs встроен. Кнопка “Find” ищет по каталожному номеру и по artist+album. Совпадения по каталогу/году подсвечены и подняты наверх - легче выбрать нужное издание (stereo vs MCH итд). Клик по результату - поля заполнились. “Get cover” тянет обложку. Можно вставить ссылку на релиз вручную.
  • “Title Case” - одной кнопкой чинит КАПС. Не трогает RV/BWV, римские цифры и апострофы.
  • “Folder scan” - сканирует всю коллекцию, помечает диски без названий треков (есть фильтр). Кнопка “Next untitled disc” перескакивает к следующему без повторного сканирования.
  • Обложка, лежащая рядом, подхватывается (cover.jpg) или тянется с Discogs.

Безопасность.
Перед записью бэкапятся ровно те сектора, что будут переписаны. Откат - одна кнопка “Restore backup”. Бэкап не накатится на чужой образ, т.к. там сверка по audio-fingerprint. После записи диск независимо проверяется через sacd_extract (встроен в порграмму).

Папка для бэкапов спрашивается один раз. Сама программа - это один .exe, без установки.

Чего не умеет
Только патчит, не реавторит. Ограничение одно: некоторые диски заавторены “по горло”, где аудио начинается сразу за TOC. А блок с названиями треков должен лечь в конкретное место и занять три сектора. Если там уже аудио, то просто некуда положить, не перезаписав музыку.
Аналогия: блок имён - коробка фиксированного размера, внутри почти пусто, но коробка должна влезть в кузов, а кузов уже забит аудио по самое не могу. То, что коробка внутри пустая, не помогает - вопрос не про содержимое, а про сам объём коробки.
Для таких дисков программа пишет artist/album/year/catalog (они лежат в другом месте, где есть место) и пропускает имена треков - явно сообщая об этом. Это не слишком длинные строки - укоротить не поможет. Лечится только полным реавторингом, ровно тем, чего мы избегаем.

Мелочи: аудио не трогается 100%. Пока только Windows.

Как пользоваться

  • Регистрация на Discogs (бесплатно), если не хочется вводить весь текст руками: На Discogs’е Account => Settings => Developers => создать Token. Никому не показывать.
  • Перетащить ISO в окно (или Open ISO).
  • Поля - руками, либо Find, если есть токен Discogs’а, и выбрать нужный релиз с Discogs’а (или вставить ссылку на релиз). “Title Case” чинит КАПС, “Get cover” тянет обложку.
  • Save => бэкап (папка спросится один раз) => запись => проверка. Всё автоматом.
  • По всей коллекции: Scan folder => жёлтым отмечены диски без названий => открыть => починить => Save => “Next untitled disc”.
  • Что-то пошло не так - Restore backup, образ откатится.

Советы
Stereo + MCH одного альбома сливаются в одну запись. Решение: дописать [MCH] к multichannel-версии. Тогда в альбомах Eversolo будет “4” и “4 [MCH]”. Я делаю так, мне нравится.
Box set - это просто пачка ISO. По умолчанию у всех один album => весь сет будет схлопываться в одну запись библиотеки (Исполнителя). Добавить номер диска в название альбома - сет выстроится по порядку, а не сольётся и не размажется.

Что в архиве
Нужен только .exe - это вся программа, установка не требуется. Остальное - readme, лицензия и исходники встроенного open-source sacd_extract. Для использования можно игнорировать, или удалить.

много картинок










Как прикрепить архив с программой - я не знаю. Вот ссылка на гуглдрайв.

Простите: текст на русский переводил машиной с английского, который переводился с русского…

41 лайк

Обновил версию по линку на гуглдрайв до 1.1.0
Новых функций нет, пользоваться программой точно так же, ничего нового учить не надо.
Я прогнал ревью по всему коду программы и закрыл несколько вещей, которые мне не нравились. Что именно:

  • Укрепил бэкап и восстановление. Повреждённый бэкап программа теперь
    распознаёт и отказывается его применять вместо того, чтобы записать испорченные данные обратно в диск. Восстановление больше не может обрезать образ из-за битого служебного файла бэкапа. И исключает два бэкапа, сделанные в одну и ту же секунду - больше не затирают друг друга.
  • Discogs. Закрыл путь, по которому токен Discogs теоретически мог уйти не на тот сервер. Токен по-прежнему уходит только на Discogs и больше никуда.
  • Аккуратные сообщения об ошибках вместо тихого вылета, укреплён разбор формата SACD.

Звук, как и раньше, не трогается совсем.

Рекомендую обновиться, особенно из-за фиксов бэкапа и восстановления

10 лайков

1.2.0

Что нового в 1.2.0

  • У папки бэкапа теперь короткое фиксированное имя
    (backup_<метка_времени>). Старое имя содержало полное имя ISO и
    могло превышать ограничение Windows на длину пути, из-за чего
    папку бэкапа невозможно было перенести на NAS или другой диск.
    Новое имя копируется куда угодно без проблем.
  • В папке бэкапа теперь лежит README.txt - в нём указан исходный
    ISO, его размер, время создания бэкапа, версия программы и как
    восстанавливать. Это только для пользователя - самой функции
    Restore он не нужен.
  • Старые бэкапы с длинными именами папок продолжают
    восстанавливаться - имя папки для Restore не используется.
  • Внутренние подготовительные изменения для будущей функции
    редактирования треков. Эта часть пока пользователю не видна.

Что нового в 1.1.1

  • Правки совместимости и надёжности после тщательного аудита и
    сквозного теста на корпусе из 8 SACD-дисков. Новых функций нет.
  • Байты, которые патч 1.1.1 пишет в ISO, соответствуют формату строже,
    чем в 1.1.0. Несколько мелких полей метаданных и один edge-case
    обработки layout-а теперь корректны; некоторые диски, которые после
    патча 1.1.0 давали в сторонних SACD-утилитах сообщение «disc has
    errors», после патча 1.1.1 этого сообщения больше не дают.
  • Диски, патченные 1.1.0, со звуком в порядке - их можно безопасно
    перепатчить 1.1.1 чтобы подхватить правки.
5 лайков

Доброго дня. Спасибо за программу! Но по ссылке на гугл драйв предлагается запросить доступ. Это нормальное поведение ссылки?

Попробуйте ещё раз, я вроде права правильно выставил. Просто кликайте на линк.

На зидовском форуме файл прикреплён к 1-му посту (требуется регистрация на форуме). Здесь, как я заметил, такие файлы цеплять нельзя.

1.1.0 больше нет (ссылка на гуглдрйв 1-го поста), но отредактировать 1-е сообщение я уже не могу. Кликайте на 1.2.0

А ещё я понял, что вы - первый, кто действительно захотел скачать и запустить эту программу :wink:

1 лайк

Да, скачал новую версию, спасибо! И я не просто скачал, прошлой версией я наконец поправил страшно бесившие меня SACD образы с концертами Баха, где не было названия треков.

1 лайк

К сожалению, правка названия треков возможна не на всех дисках - я писал об ограничениях в 1-м посте. Но я работаю над этим и расширяю функционал.

Не борюсь за первенство, но тоже скачал сразу же, с версии 1.0.1 - очень полезная программа, огромное спасибо. Жаль, но ROON требует “один трек = один файл”, поэтому давно все свои ISO порезал.
Но в дачном сетапе (без ROON) буду использовать - ещё раз спасибо.

Такое уже наверняка постили. Если ещё всё-таки есть непонимание про dsd/dst/dsf/итд:

Картинка-схема

1 лайк

v2.0.0

Сильно обновил SACD ISO Patcher - сразу до версии 2.0.0. Тут последняя была 1.2.0.

Главное: теперь названия треков можно вписать на любой диск. Раньше, если на диске не было текстового блока, добавить их было нельзя. Теперь программа сама освобождает под них место - просто вписываешь и сохраняешь.

Что ещё появилось:

  • Теперь правятся почти все теги: название, исполнитель, издатель, копирайт - и у альбома, и у диска, и у каждого трека. Плюс - каталожные номера, дата, номер диска в наборе, жанры и ISRC. Можно добавить на диск второй язык, например, японский, с фонетикой (хех, вам это - охренеть, как важно).
  • Сделал своё извлечение в файлы: DSF, DFF (DSD), DFF (DST - точная копия с диска) и Edit Master. Сторонние программы (sacd_extract) больше не нужны. Выбираешь стерео или многоканал и нужные треки, дальше видно прогресс и сколько осталось. Теги в файлы тоже проставляются.
  • Можно заполнить данные из Discogs или MusicBrainz - по каталожному номеру, штрихкоду, по исполнителю с альбомом или просто вставив ссылку на релиз. Заодно качается обложка. SACD-издания показываются в результатах первыми, чтобы не искать их среди обычных сиди/винилов/итд. (Discogs намного круче MusicBrainz, база данных которого не имеет многих SACD описаний)

Про сохранность: перед каждой записью программа делает копию того, что меняет, и всё можно откатить. Но рипы незаменимые, поэтому важно - держите свою копию образа на всякий случай.

И как раньше: один файл, ничего ставить не надо. Бесплатно, под винду.

Здоровая критика приветствуется. Пожелания - тоже :wink:

7 лайков

Приветствую! Очень полезную программу Вы сделали! Огромное спасибо за труды!

А можно, что то подобное сделать, только для lossless форматов? Много чего править приходиться.

1 лайк

DST - это уже сжатие DSD без потерь (для мультиканала обязательно по спецификации, для стерео - нет, но не запрещается).

Я имел ввиду flac, ape и тому подобное

Наверняка таких программ полно. А у меня отдельных файлов нет - всё в образах SACD.

1 лайк

SACD ISO Patcher 2.1.0

С версии 2.0.0 накопилось очень много, рассказываю по разделам.

Звук: извлечение и сжатие

Большая часть этих недель ушла именно сюда, и это, пожалуй, главное.
Код, который распаковывает сжатый DST-поток с диска и пакует обратно, я переписал заново. Извлечение стало быстрым и грузит все ядра. Но важнее скорости - точность: распакованный звук совпадает с эталоном бит в бит.
Обратная упаковка в DST идёт без потерь, и по размеру файл обычно не больше, чем было на диске: в среднем плотнее примерно на 1-2%, на удачных записях до 6-7%, а кое-где выходит вровень с диском. Режимов на выбор четыре, все без потерь - разница между ними в основном в скорости кодирования, размер при этом гуляет на доли процента:

  • max - максимальное сжатие, стоит по умолчанию (самый медленный);
  • high и fast - заметно быстрее, размер почти тот же;
  • turbo - самый быстрый, файлы чуть крупнее.

Для ориентира: в режиме максимального сжатия стерео кодируется примерно в ~9 раз быстрее реального времени, многоканалка - около 1,6×; остальные режимы быстрее.

Извлекать можно в .dsf, в .dff (распакованный DSD), в .dff со сжатым DST (точная копия с диска, быстро и компактно) и в Edit Master (один файл на всю область с метками треков). Поддержаны и “чистые” DSD-образы без DST - их тоже можно извлечь и при желании (сразу, в процессе) сжать в DST без потерь.

Теги в извлечённых файлах два формата ведут себя по-разному:

  • .dsf: полный набор тегов пишется стандартно (ID3v2 в конце файла, как и положено формату DSF), его читают практически все плееры и тэггеры. Поля: название, исполнитель, album artist, альбом, номер трека и всего, номер диска и всего, год, жанр, композитор, издатель, копирайт, ISRC, каталожный номер, автор, исполнитель.
  • .dff: из стандартных полей формата DSDIFF надёжно читаются только артист и альбом (плюс короткий комментарий). Весь остальной богатый набор я дополнительно кладу в отдельный ID3-блок внутри файла - его читает, например, foobar2000, но это не часть стандарта DSDIFF, поэтому другие плееры могут его не показать (в Eversolo не проверял).

Как всё это проверялось: многодневный прогон по почти семистам треков сверял каждый из них с эталоном бит в бит и проверял, что после распаковки и обратной упаковки данные совпадают один в один. Расхождений - ноль.

Стерео и многоканалку теперь можно править по отдельности:
Раньше, если на гибридном диске в этих областях лежали разные треки или разные названия, программа правила их как одно целое (а у некоторых дисков из-за этого путались ISRC и жанры). Теперь, когда содержимое различается, появляются вкладки, и каждую область правишь саму по себе, со своими ISRC и жанрами. Одинаковые области - как прежде, одна панель. Импорт из Discogs и MusicBrainz при этом раскидывает релиз по областям по названиям треков. Это редкие случаи (разный контент в стерео и мультиканале), но такие случаи есть.

Поддержка почти всех дисков и диагностика:
Раньше часть образов программа не бралась трогать - из-за необычной внутренней структуры или потому что рип добит пустыми данными (нулями) до полного объёма диска (так пишут некоторые рипперы и старые PS3-образы). Теперь правится практически всё: из почти 3,5 сотен дисков в моей коллекции - все, кроме откровенно битых рипов.
При открытии диска программа тихо сверяет его со стандартом и, если что-то не так, спокойно об этом сообщает, не поднимая паники. А если диск всё-таки нельзя тронуть безопасно или он вообще не открывается, вместо сухого “не получилось” выводится понятное окно с объяснением и адресом, куда можно прислать ссылку на образ или скриншот, чтобы я разобрался. Ещё появилась кнопка “привести диск к стандарту”: она аккуратно чинит зеркальные копии служебных таблиц и расклеивает общие строки текста, которые иначе пришлось бы править руками.

Метаданные:
Теперь из MusicBrainz и Discogs тянется не только исполнитель, но и композитор, автор и аранжировщик - по каждому треку. Исполнителей можно тянуть сразу с инструментами, в том же виде, как показывает MusicBrainz: “Имя (инструмент); Имя (инструмент); …”, и перестали теряться роли вокалиста и оркестровщика.
Небольшое честное уточнение про исполнителей: эти кредиты пишутся в метаданные трека на самом диске, и их видят плееры и тэггеры, которые читают слой SACD напрямую (например, foobar2000). А в медиатеке Eversolo отдельной полки “Performers” нет, так что отдельным фильтром там они не появятся - это особенность самого Eversolo, а не программы (композитора, артиста, альбом и жанр Eversolo показывает).

После поиска релиза в Discogs или MusicBrainz в поле остаётся ссылка на выбранный релиз - удобно скопировать и открыть, чтобы убедиться, что совпало именно нужное. Пока печатаешь, программа подсказывает, если символ не помещается в кодировку диска. И в очень редком случае, когда текст не влезает в лимит формата SACD (на практике почти не встречается), теперь показывается понятная подсказка вместо технической строки.

Резервные копии и сохранность:
Я очень старался сделать так, чтобы образ при правке не пострадал: перед каждой записью все затрагиваемые секторы сохраняются в резервную копию (по умолчанию рядом с самим образом), а правка идёт по принципу “либо целиком, либо никак” - если что-то пошло не так, файл остаётся байт в байт прежним, и его всегда можно вернуть из копии. Звук при правке метаданных не трогается вообще. Всё, что касается формата диска, я сверял дословно по официальной спецификации Scarlet Book и прогонял код через несколько независимых проверок. И всё же общий совет: держите собственную копию ценных рипов - это правильно в любом случае.

По мелочи:
Значение поля трека (исполнитель, композитор, жанр и так далее) можно одной кнопкой применить сразу ко всем трекам области. Автоматический регистр в названиях теперь применяется только к латинице и не калечит другие письменности. Подписи в интерфейсе переводятся на лету при смене языка, отметка изменённой даты стала видимой, счётчик изменений в раздельном режиме считает точно. Плюс пара сотен мелких правок по интерфейсу и формулировкам.

Нашли ошибку - пишите.

10 лайков

2.1.2

Фиксы

пароль на архив: dastereo.ru

4 лайка

2.2.0

пароль на архив: dastereo.ru

Добавлена консольная версия (CLI), тег ALBUM ARTIST на одно-дисковых альбомах
заполняется из артиста диска, а исправимые предупреждения больше не пугают
красным.

3 лайка

Страничку сделал: SACD ISO Patcher - edit SACD .iso metadata in place

3 лайка

v2.5.0

2 лайка