Тонкости процесса прямого чтения звука
Несмотря на то, что адреса дорожек CD-DA в оглавлении диска указаны с точностью до кадра (1/75 сек), различные приводы по-разному позиционируются на начало читаемого участка, отчего воспроизведение или чтение начинается не точно с начала первого кадра, а на какую-то часть кадра раньше. Причины этого явления ясны недостаточно, поскольку производители не раскрывают точного алгоритма работы контроллеров в своих приводах. Возможно, это связано с тем, что расшифровка кадра происходит постепенно, путем сборки воедино "размазанных" по потоку данных нижнего уровня кодовых блоков. При различных алгоритмах сборки момент восстановления адресной метки кадра будет различным; если привод начинает отдавать накопленные во внутреннем буфере звуковые данные сразу же, как произойдет совпадение адресной метки, то читающая программа получит какую-то часть предыдущего кадра, которую еще не успели перекрыть данные текущего кадра.
При прослушивании возникающий сдвиг незаметен, однако при чтении в файл с помощью разных приводов получаются файлы, отличающиеся размером и содержимым небольших (несколько килобайт) начального и концевого участков. Хорошо хотя бы то, что обычно конкретный привод ошибается на одну и ту же величину, так что все копии дорожки, полученный с его помощью, имеют одинаковую длину.
По той же самой причине многие приводы теряют синхронизацию с дорожкой между операциями чтения. Чтение с CD выполняется блоками, включающими целое число кадров, и внутренний буфер привода непрерывно заполняется данными, считанными с дорожки, периодически отдавая их читающей программе. Если программа делает паузу - для записи блока данных на диск или по причине вытеснения другой программой - объема буфера привода может не хватить для сохранения данных до следующего обращения от программы; в таком случае привод вынужден позиционироваться заново, а из-за неточности самого позиционирования возникает повтор или выпадение серии отсчетов. Надежно сохранять синхронизацию умеет достаточно небольшая часть распространенных приводов.
Для борьбы с нарушениями синхронизации используется программное решение - чтение блоков "внахлест", когда программа запрашивает каждый очередной блок данных с отставанием, и определяет, где начинается очередная нужная последовательность кадров (так называемый режим Sync Read). Это позволяет хоть как-то работать с некорректными приводами, однако в несколько раз снижает скорость чтения.
Можно ли точно скопировать звук с компакт-диска?
Можно, хоть это и может потребовать значительных затрат времени для подбора и настройки системы копирования. Необходимо правильно подобрать аппаратуру (приводы CD-ROM и CD-R) и программное обеспечение для работы с ними, и корректно выполнить все необходимые процедуры.
Для того, чтобы дорожки звукового диска были скопированы точно, необходимо выполнение следующего ряда условий:
- Исходный диск должен иметь качество поверхности, достаточное для его уверенного чтения в данном приводе. Иначе говоря - все ошибки низкого уровня, которые возникают в процессе чтения, должны быть полностью исправимыми посредством корректирующего кода.
- Используемый для чтения привод должен иметь достаточное качество считывающей системы, чтобы уверенно читать данный диск. Например, со временем в приводах "садятся" лазеры, загрязняется линза фотоприемника, ухудшается точность следования луча по дорожке, и т.п.
- Читающий привод должен уметь правильно и надежно синхронизироваться по последовательности звуковых кадров, либо должен использоваться режим программной синхронизации.
- Читающий привод не должен читать данные со смещением, либо это смещение должно компенсироваться программой чтения.
- Программа записи, преобразующая набор звуковых WAV-файлов в образ звукового диска, не должна вносить в них какие-либо изменения. Некоторые программы могут пытаться самовольно убирать щелчки, обрезать тишину в начале или конце дорожки, а также незаметно сглаживать фонограмму, чтобы копия не была точной и не нарушались слишком явно авторские права.
- Записывающий привод должен точно и аккуратно записывать на матрицу поданные ему программой звуковые данные, не внося в них ни малейших изменений, лишних пауз в начале/конце дорожки и т.п. Большинство пишущих приводов по непонятной причине создают смещение между адресной информацией и данными, отчего возникает сдвиг начальных адресов звуковых дорожек. Желательно компенсировать смещение программой записи, а если она этого не поддерживает - косвенно, программой чтения.
Правовые аспекты цифрового копирования
Не стоит забывать, что по международным и российским законам для копирования любой информации, подпадающей под положения об авторских правах, необходимо иметь соответствующую лицензию. Несанкционированное копирование является уголовным преступлением. Разумеется, вас никто не станет преследовать за изготовление нескольких копий с дисков из чьей-то коллекции, однако занятие подобным промыслом в массовом порядке вполне может привести к возбуждению уголовного дела.
Выбор приводов и программ для копирования
Для достижения хороших и повторяемых результатов весь набор "железа" и "софта" должен быть правильно подобран и оттестирован. Наиболее критичным узлом является пишущий привод (рекордер), ибо даже если читающий привод не гарантирует точного чтения, его в ряде случаев можно добиться простым повтором, и выбором одного из нескольких совпадающих файлов.
Рекордеры обычно сделаны так, что они в состоянии хорошо читать звуковые диски. Например, мой Teac W54E справляется с этим отлично, а вот при работе в свое время с HP 6020 повторяемости добиться не удалось никакими усилиями. В то же время, W54E пишет с постоянным смещением, а HP7010 записывал диски DAO абсолютно точно.
Вообще, после тестирования ряда приводов на точность чтения/записи остается стойкое ощущение, что их производители старались как можно больше затруднить пользователям создание точных копий дисков, причем весьма странным способом - чтением и записью со смещением. Если бы перед ними стояла задача исключить точное копирование звучания - они могли бы ввести интерполяцию, повтор или выбрасывание отдельных отсчетов, что изменило бы звук на всем протяжении дорожки, однако сами данные почти всегда переносятся точно, а вот их позиции "плавают" на сотые доли секунды, и бороться с этим чрезвычайно сложно.
Из обычных читающих приводов хорошие результаты всегда давали марки Panasonic, Pioneer, Sony, Teac, Plextor. Большинство из них надежно поддерживает синхронизацию, хотя и страдает отклонениями в начальном позиционировании, из-за чего файл, считанный на одном приводе, может отличаться длиной и содержимым начального участка от файла, считанного на другом. Из приводов выпуска до 97-98 годов (модели до 12x) многие марки, в том числе и перечисленные, не отличались хорошим качеством прямого чтения звука, однако в настоящее время ситуация гораздо лучше, и даже таким маркам, как Samsung и Asus, обычно можно доверять. Марки же Mitsumi и особенно BTC, а также другие малоизвестные, так и остались дешевыми и малоприятными в работе приводами.
Из программ чтения наиболее известны AudioGrabber (www.audiograbber.com-us.net), Audio Catalyst (www.xingtech.com), Exact Audio Copy, или EAC (www.exactaudiocopy.de), Easy CD-DA Extractor (www.poikosoft.com/cdda), WinDAC (www.windac.de). Большинство из этих программ имеют в своем составе также и кодировщики в форматы MP3/AAC/VQF/WMA и другие, что в нашей задаче будет абсолютно лишним. Я пользуюсь EAC 0.9 preBeta 9 - компактной и удобной программой, в которой нет излишних красивостей, зато есть возможность компенсации смещений, вносимых приводами, и многие другие полезные удобства. По словам автора, программа EAC создавалась именно для предельно точного копирования звуковых дисков, и пока она остается единственной в своем роде.
Проверка точности чтения звуковых данных
Прежде всего необходимо добиться точного и однозначного чтения звуковых данных с диска. Для этого берется диск хорошего качества, достаточно новый, с чистой и неповрежденной поверхностью, и несколько звуковых дорожек с него считывается подряд в файлы с разными именами, после чего сравнивается длина и двоичное содержимое полученных файлов.
Если длины файлов всегда одинаковы, остается лишь сравнить содержимое - программой FC с ключом /b, которая запускается из окна DOS, функцией Advanced Compare в FAR, функцией Wave Compare в EAC, либо чем-то подобным. Расхождения будут говорить о том, что привод либо ошибается при чтении, либо умышленно подмешивает к считанному звуку почти неслышимый шум, дабы исключить получение точной цифровой копии.
Если при одинаковых длинах файлов повторяемости нет, или диск читается неуверенно, с повторами - можно попробовать очистить линзу привода. Лучше всего это поручить квалифицированному специалисту, однако при наличии технических навыков можно сделать и самому, аккуратно вскрыв привод и промыв линзу кусочком натуральной ваты, смоченной теплой водой с мылом, после чего столь же осторожно и мягко промокнув насухо кусочком мягкой и гигроскопичной ткани. На линзе не должно остаться каких-либо видимых следов загрязнения, и она должна остаться свободно подвешенной на своей магнитной системе.
Другой способ попытаться избавиться от несовпадений - включить режим программной синхронизации в программе чтения. Это значительно замедлит чтение, однако может спасти ситуацию и обеспечить повторяемость. В EAC этот режим задается в параметрах привода (Drive Options) и носит название Secure Mode, в противоположность быстрому Burst Mode.
Если длины считанных файлов различны, это плохой признак - привод не в состоянии даже начинать и заканчивать чтение на одних и тех же адресах, и его лучше заменить на другой. Можно, конечно, методом поиска и сравнения определить, совпадают ли основные, серединные, части дорожек, однако это - весьма нетривиальное и муторное занятие.
Комментариев нет:
Отправить комментарий