Делаем auCDtect Task Manager всеядным конвейером!-ПРЕАМБУЛА
Коллеги, перед проверкой файлов с высокой битностью и частотой обычно требуется выполнить дополнительные манипуляции. В качестве альтернативного варианта я использовал fooCDtect. Этот инструмент обладает многими преимуществами, но для работы требует наличия foobar2000, отдельных настроек и выводит лог специфичного не очень информативного стандарта. Со временем формат лога auCDtect Task Manager стал наиболее удобным стандартным решением и заменил большинство других проверяющих программ (аудиочекеров), благодаря функции записи контрольных сумм в логах и автоматическому созданию спектральных анализов сомнительных треков. Это значительно упрощает процесс проверки и делает использование дополнительных инструкций по спектрам практически ненужным. В данном руководстве я расскажу, как можно расширить возможности этого инструмента, повысить его универсальность и ускорить работу за счёт использования нового высокоэффективного декодера. МАТЕРИАЛЫ ДЛЯ СБОРКИ
1. Оригинальный auCDtect Task Manager можно скачать тут: https://codecpack.co/download/auCDtect-Task-Manager.html. Сразу удаляем папку Codecs, она нам не понадобится.
2. Официальная страница кодека ffmpeg на Github: https://github.com/BtbN/FFmpeg-Builds/releases (берём ffmpeg-[...]-latest-win64-gpl-[...].zip для современной 64-битной Винды (с 2024 года поддержка от Windows 10) или смотрите сами по своей системе, возможно надо поискать более старую/совместимую версию).
3. Также следует обновить SoX до финальной версии: https://sourceforge.net/projects/sox/files/sox/14.4.2/ (берём sox-14.4.2-win32.zip). Содержимым заменяем старую версию в подпапке \sox. МАНИПУЛЯЦИИ
1. ffmpeg.exe кладём в папку к auCDtect Task Manager.
2. Открываем файл Codecs.ini и заменяем содержимое кодом из спойлера.
МЕХАНИЗМ РАБОТЫ ffmpeg является поистине многозадачным кодеком/муксером, который умеет из чего угодно раскодировать и во что угодно кодировать. Он имеет огромное количество разных ключей и фильтров, вообще-то он главным образом разрабатывался для работы с видео-форматами, но и поддерживает всевозможные манипуляции с аудио. В принципе широта его применения может быть поистине безграничной. Таким образом передаём следующую команду: ffmpeg.exe -i "%s" -vn -ar 44100 -sample_fmt s16 %d, где
-i "%s" — входной файл, %s - это путь к файлу, рекомендуется его помещать в кавычки, так как он может содержать пробелы, что создаёт большинство проблем с консольными приложениями
-vn — запрет на передачу выходному файлу любой видео и графической информации из входного контейнера, в том числе вшитых обложек - просто страхует от лишнего хлама
-ar 44100 — ключ -а задаёт настройки аудио, -ar - частота дискретизации выходного файла
-sample_fmt s16 — этот не совсем очевидный по названию ключ ставит формат выходного файла 16 бит
%d — это (временный) выходной файл, который будет помещён во временную папку, которая указана в настройках auCDtect Task Manager, его название формируется псевдослучайным методом. ДОПОЛНИТЕЛЬНЫЕ КОММЕНТАРИИ
1. В Codecs.ini в Path можно писать только пути внутри рабочей папки auCDtect Task Manager. Он не поддерживает возвратные пути вида: "..\..\сodecs\ffmpeg.exe". Если вы не хотите дублировать уже имеющийся у вас где-то в другом месте ffmpeg.exe, то используйте hardlink или junction (Link Shell Extension вам в помощь).
2. В Codecs.ini можно задать любые другие форматы входных файлов, в том числе видео, по той же простейшей схеме. Проверить естественно можно только аудио-дорожку из видео файлов.
3. ffmpeg с такими параметрами выводит временные файлы наиболее приближённые к исходным, в случае если они имеют бо́льшую частоту дискретизации или битовую глубину – не добавляет дизеринг, тем самым не искажает результат проверки auCDtect.
4. Если добавить ключ -ac 2, то можно приводить к стерео формату многоканальные аудио файлы, источником которых являются DVD-Audio/DVD-Video/BD-Audio/SACD. Правда, не совсем ясно, как именно ffmpeg поступит с дополнительными каналами - то ли смиксует всё в стерео по "стандартной формуле", то ли выбросит ненужные. Как оказалось, этот ключ можно не использовать вовсе – всё прекрасно работает, auCDtect по всей видимости игнорирует (не видит) дополнительные каналы и тестирует только фронты, чего более чем достаточно для музыкальных лосслесс форматов, а вот SoX внезапно делает нечто совершенно фантастическое (см. спойлер в самом низу)!
5. ffmpeg имеет в том числе фильтры: -af emphasis - применение/снятие преэмфазиса разных типов (см. документацию), -af hdcd - раскодирование 20-бит из 16-битных дисков HDCD, а так же поддерживает входной формат DSD (с некоторыми тонкостями, см. комментарии на Github).
6. Единственный из более-менее известных форматов, который точно не поддерживает ffmpeg - OptimFROG, но он достаточно давно заброшен и практически не встречается в природе. Однако причина этого в том, что формат имеет закрытый код. Все остальные форматы в настройках выше мной лично проверены.
sklk
В 44-16 и проверяй. Лог потом в 24 папку закинуть. Все эрроры, убрать кракозябры, лучше вообще теги удалить. И путь покороче.
Короче, катаю копию на рабстол, конверт в 44-16, проверка. Лог в нужную папку, остальное нах.
Klorus X
sklk, а смысл делать промежуточное действие, если можно сразу из любого формата получить лог прямо в папку с финальными файлами? При проверке из временных файлов будут ещё одни временные файлы создаваться где-то в другом месте... У меня временная папка назначена на отдельный хард для временных файлов, туда в 32 потока гонит на раскодирование файлы. Все сомнительные я сразу по спектрам смотрю прямо в чекере, спектры тоже сыпет туда во временную папку, потом это всё в помойку идёт.
manijak1
Программа "Fakin' The Funk?" вроде всеядная - проверяет и 16 и 32.
Есть и на Винду и на Мак.
Klorus X
manijak1, раньше не слышал. Но похоже программа платная и не базируется на aucdtect, а использует какой-то свой подход. В таблице сравнений у них на сайте написано абсурдное сравнение с кучей других программ, которые все являются нишевыми разработками для экспертов, представляют собой GUI для aucdtect 2004 года и якобы ничего из них не обновляется, но там и обновлять нечего, aucdtect является законченным и совершенным продуктом, звук не может каким-то образом стать ещё каким-то, чтобы программа не справлялась со своей задачей. Тут уже стоит говорить о том, что результаты Fakin' The Funk нужно как-то иначе интерпретировать, для этого нужно техническую и опытную базу составить. Стандартом у нас является aucdtect, вряд ли это когда-либо изменится. Хотя я и любитель новых технологий, но думаю, что тут не стоит менять рабочий инструмент на что-то неизвестное. Мой вариант Task Manager лишь улучшает ту стадию, которая является узким местом исходной программы, мне кажется большего тут и не нужно. Хотя конечно если бы Task Manager исправил некоторые баги было бы совсем идеально. Я уже не говорю о том, что слушательская (труЪ-аудиофильская) культура умирает, а её место занимает деградантская стримминговая культура потребления. За деградированием потребления следует и предложение, сама музыка (и другое искусство) выходит в исполнении "жрите, свиньи, подавитесь!" - качество продакшена, смысловой нагрузки современных продуктов в среднем очень низкое.
Андрамедон
Klorus X, а ни где не попадались исходники Task Manager'а и auCDtect? Я вот что-то не нашел. Сами программы очень устарели, нет, не по алгоритмам, а чисто технически, например беглый просмотр вызовов API функций показывает очень плохую поддержку юникода, отсюда известная проблема с путями содержащими специфические символы к файлам... И в принципе это не сложно было бы исправить при наличие исходников, но походу они тупо утеряны...
Klorus X
Андрамедон, aucdtect закрытый, ему аналогов почти не существует, его разработали авторы TTA. Конкретно с ним никаких проблем нет, так как ему файлы даются с временными названиями. Проблема в Task Manager, и он тоже закрытый - это у него прямо в About написано. Кстати там же есть и мыло автора на Гмыле, можно написать попробовать. Стоит говорить о том, что проще его переписать заново, так как там и программы-то нет по сути, каркас один, он только передаёт всё во внешнюю обработку, а сам только выводит результаты, не сказать, чтобы очень удобно. Было бы намного лучше, если бы было превью спектра при выделении трека, а не приходилось каждый трек тыкать и там ещё вкладку выбирать. В идеале хорошо бы конвертировать сразу 2 временных файла - 44/16 для aucdtect и как есть для sox, тогда можно было бы смотреть полный спектр.
Klorus X
Пришло время доработать проверку и ввести ещё кое-какие возможности. Конкретно в командную строку конверсии надо добавить следующие ключи перед -i в строке CommandLine= в Codecs.ini
Это включит все возможные проверки на ошибки и сделает эти ошибки фатальными, то бишь конверсия будет умирать с ошибкой и тогда ATM будет показывать не какой-то статус аудио, а ERROR, это позволит ловить битые файлы. На данный момент мы их пропускаем и совсем не ловим - это плохо. Результат - ловим поломки.
Минус - в логе будет только failed ExitCode ..... - к сожалению ATM давит любой вывод в консоль от кодеков и не показывает суть ошибки Решения с выводом лога нормального нет. Можно добавить ключ -report, но лог будет создаваться в папке ATM.
DrStandBy
Если хотим пойти ещё дальше и писать лог ошибки рядом с файлом, придётся ещё похимичить.
В этом случае строчку их первого вариант не добавляем?
Klorus X
DrStandBy, забудь про батник. Я писал это в процессе тестирования, там всё плохо. Судя по всему ATM запускает процесс через CreateProcess, батники там не работают и он сразу с ошибкой падает. Просто добавь ключ -report и лог будет падать в папку с ATM. Ничего лучше уже не придумать, к сожалению напрямую путь к файлу лога задать нельзя, как например "%s.log".
-v error - можно warning, info, debug - подробность лога Всё-таки полагаю битые файлы - это исключение, и в случае чего можно и там посмотреть.
Klorus X
Кстати на данной стадии знаний я без проблем могу написать заново aucdtect Task Manager. Другое дело, что я не вижу смысла возвращаться к этому барахлу, его пора отправить на свалку истории вместе с закрытым aucdtect и всем остальным подобным хламом, что работает на основе оценки среза ВЧ - это убогий подход. Сейчас нужно делать нейросеть, которая умеет на основе обучения по спектрам делать оценку был ли материал обработан лосси кодеком - с какими параметрами и каким. И это реально сделать, просто нужно пошуршать мозгами.
DrStandBy
забудь про батник
Самое простое решение положить на файлообменник готовую сборку или просто codec.ini с нужными параметрами.
Сейчас нужно делать нейросеть, которая умеет на основе обучения по спектрам делать оценку был ли материал обработан лосси кодеком - с какими параметрами и каким.
Идея хорошая, и полезная.
Pretender
aucdtect - медленная и бесполезная тулза, которая почему-то стала стандартом. Если ей проверить диски 80-х, то будет много сомнительных раздач. Следующий кандидат на замену устаревший и ни разу не аккуратный EAC. Автор отключил функционал по определению pre-emphasis'a в субканалах по требованию правообладателей. С тех пор её нельзя считать эталоном. Некоторые диски вообще можно рипать несколько раз с разными результатами CRC и они будут проходить по базе. Проще тогда не издеваться над приводом и снимать всё с быстрых режимах.
protoz
Если ей проверить диски 80-х, то будет много сомнительных раздач.
В середине 80-х многие перешли в студии на цифровые магнитофоны. А там жесткий срез по верхам. Вот aucdtect и ругается на эти записи.
Автор отключил функционал по определению pre-emphasis'a в субканалах по требованию правообладателей.
Неправда. Весия EAC последняя 1.8. Проверил сейчас на Klaus Schulze - Dreams.
Всё на месте и индексная карта с FLAGS PRE как положено.
Некоторые диски вообще можно рипать несколько раз с разными результатами CRC и они будут проходить по базе.
И тут не соглашусь. Пример приведите.
DrStandBy
и снимать всё с быстрых режимах.
Это не наш метод )
Pretender
Неправда. Весия EAC последняя 1.8. Проверил сейчас на Klaus Schulze - Dreams.
Значит у Вас преэмфазис нормально прописан в TOC'е. Я говорю про другой случай, когда он в субканалах.
У меня есть диск - "Billy Joel / Piano Man". ЕАС не показывает, что там есть Pre-emph, а в старой версии его можно обнаружить через функционал: "Action - TOC Alternations - Detect TOC Manually" (EAC V0.95 prebeta 3).
Кстати, CUERipper сразу определяет наличие флага, без шаманства.
Некоторые диски вообще можно рипать несколько раз с разными результатами CRC и они будут проходить по базе.
И тут не соглашусь. Пример приведите.
Из последнего. Roger Taylor - Strange Frontier (1996 Reissue)
1. Образ снялся корректно, CRC совпали, множественно совпадение по AccuRip.
2. Потрековый рип. Два трека не совпали, множественное совпадение по AccuRip всех треков.
3. Потрековый рип. Теперь один трек не совпал, множественное совпадение по AccuRip всех треков.
4. Потрековый рип через сутки, а вдруг!! Тот же один трек не совпал + несовпадение по AccuRip (no match) только этого трека.
5. Попытка рипнуть только этот трек - успешно, идеальное множественное совпадение по AccuRip.
6. Поставил на фоне предыдущего успеха ещё разок. Жду. :-)
Может это защита от копирования?-Ура, получилось!
Klorus X
просто codec.ini с нужными параметрами
Я не пойму, ты просто как-то за других делаешь вид, что им это невероятно сложно или это тебе невероятно сложно?
В первом посте код этого файла и просто взять новую строчку вписать. Неужели люди не в состоянии два действия сделать кому это надо?
Klorus X
Некоторые диски вообще можно рипать несколько раз с разными результатами CRC и они будут проходить по базе.
Это правда, есть диски со "слабыми" секторами, которые читаются каждый раз по-разному, обычно брак матрицы. В базах могут быть варианты, которые совпадают с этими вариациями чтения, обычно там всего несколько секторов туда-сюда болтаются. В данном случае базы являются спасением, потому как можно посмотреть, какой вариант более частый и это скорее всего правильный вариант. Но такие случаи как бы подло насмехаются над всеми, кто уверовал в EAC и Test&Copy, очень заслуженный смех над этими наивными людьми. Мне нравится история, как один чел мучался со своим диском редким японским и его рипал много раз в разных режимах и на разных приводах, а потом по кусочкам собирал трек из разных проходов и поразительным образом ему удалось это сделать - трек совпал с точной копией, в том числе по AccurateRip. Что интереснее - этот диск был в базах и было с чем сравнить. А если нету? Совсем нет опоры.
CUERipper сразу определяет наличие флага, без шаманства.
Полагаю он бы и диск упомянутый рипнул сразу без шаманства. EAC так-то дерьмо полное. 20 лет назад ничего лучше не было, вот и сделали стандартом. CueRipper намного лучше справляется с проблемными дисками и гораздо быстрее. Там система сборки корректного сектора более продвинутая, он не просто читает по 40 раз одно и то же, а собирает именно удачные чтения по частям.
protoz
CUERipper хорош, но попытка сделать его стандартом или хотя бы уравнять в правах с ЕАС будет равносильна борьбе Дон Кихота с ветрянными мельницами.
DrStandBy
Я не пойму, ты просто как-то за других делаешь вид, что им это невероятно сложно или это тебе невероятно сложно?
Я стараюсь упросить "правки". И минимизировать вопросы "Все работало теперь нет, что сделал не так?"
Klorus X
Я же не могу для каждого мной предложенного действия выпускать установочный пакет. Подразумевается, что это рекомендации одного профессионала другому.
Klorus X, да собери уже максимальную portable-версию под актуальные ОС и версии модулей. А в инструкции просто напиши в каких местах прописать абсолютные пути к утилитам/модулям.
А, ну и оформи здесь раздачей: auCDtect Task Manager HD.
Кстати, да. Зачем нужны эти 2 прогона, проще читать до разумного предела, который можно было бы увеличить, либо дать настройкой... типа 100 раз. Если прочитать не удалось, брать самый популярный сэмпл, с отметкой о проблеме в логе. Если популярного сэмпла нет, то даже не знаю, продолжать с красной пометкой в логе.
Klorus X
Pretender, читать 100 раз не требуется в большинстве случаев. CueRipper читает сектора по 2 раза и если нет расхождений, то это считается достоверным. Если есть, то он сам увеличивает количество чтений и сравнивает различия, пока весь сектор не сойдётся достаточное количество раз, чтобы его считать прочитанным достоверно. Если количество чтений превышает кажется 40, то собираются самые достоверные части, а сектор помечается ошибочным, если так и не удалось прочитать его достоверно. Там индикатор есть, который показывает какая часть сектора уже сошлась достаточно, а какая всё ещё сомнительна - в процентах. Кстати, в большинстве случаев эти секции проблемные не будут содержать никаких слышимых косяков, там ошибка чтения буквально в единичные биты. В крайнем случае, можно вручную это поправить и удовлетвориться статусом сомнительно, если диск редкий и проблемный одновременно. Всё-таки в конечном счёте речь о музыке, а не прослушивании цифр. А ещё на РТО есть прогрессивный подход в том плане, что у них есть раздел для авторских ремастеров. Я уж не знаю, насколько там не кривыми руками это сделано всё, но за авторами можно доделать очень многое, особенно современные релизы - халтура кошмарная. Вываливают сырой материал - начало и конец обрываются, нормально даже не могут фейд сделать, шум аналоговый, щелчки.
auCDtect Task Manager HD
Можете и сами это сделать, если очень надо. Мне кажется вполне достаточно инструкции по сборке. У всех разные платформы, я не могу знать, какая версия ffmpeg будет работать у пользователя.