Это старая версия документа.


В наше время всё ещё популярны обычные Audio-CD с музыкой. У них есть одна особенность: они фактически не содержат никаких файлов и просто скопировать их из файлового менеджера нельзя. Мало того, их формат таков, что при чтении вполне могут возникать ошибки, которые вы даже не заметите при обычном проигрывании музыки, но которые нежелательны при снятии рипа.

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

  • k3b
  • RubyRipper
  • linuxrip
  • … многие другие

В этом случае просто сохраните музыку в ogg или mp3 с нужными вам настройками качества и можете дальше не читать эту статью.

Однако часто хочется иметь точную копию того самого любимого диска. В этом случае вам во первых не подойдёт обычная программа чтения, а во вторых придётся использовать так называемый lossless формат хранения музыки.

Подробности про то, что такое lossless, про всякие тонкости формата Audio-CD и прочие теоретические аспекты можете почитать на соответствующих тематических ресурсах. В этой же статье хочется собрать максимально подробную практическую информацию по снятию аудио рипов.

Снятие рипа

В Linux существует множество хороших программ для снятия рипов с дисков. Но познавательный факт заключается в том, что все они используют для этих целей одну и ту же утилиту командной строки - cdparanoia.

Поэтому лучше всего всегда использовать именно её для снятия рипов, благо по качеству она не уступает ни одной другой существующей программе, включая широко известный EAC.

Итак, я для снятия рипов использую команду

cdparanoia -vzl -O +6 [::]- CDImage.wav

Самым важным тут является так называемый оффсет, без правильного указания которого вы никогда не получите точный рип. Для моего привода он равен +6. Узнать оффсет можно из базы данных accuraterip.com, узнать модель вашего привода можно командой

sudo lshw -c disk
Если вы можете подробно и технически грамотно расписать параметры cdparanoia, то смело правьте эту статью и добавляйте как можно больше информации!

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

md5sum -b *.wav

Все суммы должны совпадать. Если диск слишком повреждён - то совпадать они возможно не будут. В этом случае есть несколько вариантов для получения таки правильного и точного рипа:

  1. Снимать рип до тех пор, пока не получите несколько совпадающих файлов.
  2. Более сложный, но при этом правильный вариант - выбрать некий небольшой размер для блока, разбить каждый wav файл на такие блоки, посчитать md5 сумму для каждого блока и затем собрать выходной файл из блоков, совпадающих в наибольшем количестве файлов. Этот вариант требует хорошего знания скриптования (или готового скрипта), но он позволяет при желании добиться максимального качества, недоступного даже для EAC и считать даже сильно порченные диски.

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

Обратите, кстати, внимание на смайлы состояния процесса чтения cdparanoia. Посмотреть их можно набрав

man cdparanoia

Или же на странице проекта: http://xiph.org/paranoia/manual.html

Получение CUE

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

mkcue > disk.cue

Но она не пишет никакой дополнительной информации. Поэтому лучше использовать для считывания информации о дорожках с диска программу cdrdao. Она записывает всю информацию в файл toc, получить который можно командой:

cdrdao read-toc disk.toc

Дальше полученный файл можно конвертировать в cue с помощью утилиты cueconvert из пакета cuetools:

cueconvert -i toc disk.toc disk.cue

В любом случае вам скорее всего придётся вручную редактировать полученный cue файл, добавляя в него необходимую информацию. Подробней о синтаксисе cue файлов можно почитать тут: http://digitalx.org/cuesheetsyntax.php

Дальнейшая обработка

Хранить музыку в wav файлах - не лучший выход, если у вас конечно нет под рукой датацентра с неограниченным дисковым пространством. Обычно файлы сжимают. И тут есть два принципиально различных подхода - сжимать можно обратимо без потери качества или же необратимо.

В первом случае лучше всего использовать кодек FLAC, который поддерживается большинством устройств и плееров, во втором - OGG Vorbis, показывающий лучшие параметры по отношению качество/размер.

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

Есть и ещё один весьма странный подход: кодировать целиком диск в один файл и прикладывать к нему заполненный дополнительной информацией cue файл. Очевидных минусов у такого подхода два:

  1. Во-первых cue - это файл физической разметки, он никогда не был предназначен для хранения расширенной информации о композициях и совершенно для этого не подходит.
  2. Во-вторых из диска, сохранённого в виде одного файла, никаким образом не достать одну песню.

На самом деле разрезать можно как до сжатия выбранным кодеком, так и после. Об этом чуть позже, сначала про кодирование.

Кодирование

Для сжатия wav файла в различные форматы в Linux существуют несколько утилит.

Для flac:

flac -8 -o file.flac file.wav

Для ogg:

oggenc -q 7 file.wav

Для mp3:

lame -h -b 320 file.wav file.mp3  

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

Разрезание lossless образа на треки

Во-первых wav - это тоже lossless формат, поэтому по инструкции из этого параграфа можно резать как wav, так и flac.

Вам потребуется установить два пакета: cuetools и shntool. Ну и кроме того вам понадобится кодек flac из одноимённого пакета.

Для разрезки wav файла по информации из cue можно использовать команду:

cuebreakpoints disk.cue | shnsplit -o wav CDImage.wav

Тоже для flac:

cuebreakpoints disk.cue | shnsplit -o flac CDImage.flac

Разрезание lossy образа на треки

Для разрезания ogg и mp3 файлов по cue файлу существует утилита mp3splt, поставить которую можно из одноимённого пакета.

Разрезать ogg по cue можно так:

oggsplt -c disk.cue CDImage.ogg

Или mp3:

mp3splt -c disk.cue CDImage.ogg

Прописывание тегов

Итак, вы получили разрезанный на треки образ диска, закодированный в нужный формат. Дело за малым - прописать теги. Теги для flac, ogg и mp3 можно заполнить из cue файла командой:

cuetag sample.cue split-track01.flac split-track02.flac split-track03.flac split-track04.flac

Т.е. вам надо указать cue файл и файлы всех треков. Можно использовать шаблон:

cuetag sample.cue split-track*.flac

Но в любом случае вам придётся скорее всего вручную дописывать теги. Для этого великолепно подходит программа EasyTag, доступная в репозиториях. Она имеет простой и понятный GUI-интерфейс, надеюсь, вы разберётесь.

Ссылки