Команда cdda2wav

Команда cdda2wav позволяет задействовать одноименную утилиту wodim, предназначенную для копирования треков с аудио-CD. Результирующие файлы сохраняются в формате wav, то есть, не обрабатываются и не сжимаются. Данная утилита едва ли популярна на сегодняшний день по двум причинам: во-первых, файловые менеджеры практически всех окружений рабочих столов позволяют копировать треки с аудио-CD как обычные файлы, во-вторых, утилита не позволяет сжимать скопированные аудио-треки или осуществлять их дополнительную обработку. Тем не менее, она полностью работоспособна и успешно выполняет свою функцию.

Примечание: изначально утилита поставлялась вместе с популярной утилитой для записи оптических носителей cdrecord; сегодня она поставляется вместе с несколькими аналогичными по функционалу утилитами в отдельном пакете.

Базовый синтаксис команды выглядит следующим образом:

$ cdda2wav [параметры] [имена-результирующих-файлов]

Команда может принимать огромное количество параметров. Актуальными для обычного пользователя параметрами являются параметр -v, позволяющий выводить максимум отладочных сообщений, параметр speed= для указания скорости чтения, параметр dev= для указания пути к файлу устройства привода (обычно /dev/sr0), параметр track= для указания начального и, при необходимости, конечного треков (разделяются с помощью символа +) для копирования, параметр -info-only для получения информации об аудио-CD, а также параметр -alltracks для записи треков в отдельные файлы вместо одного файла. Еще утилита поддерживает ряд параметров для изменения формата результирующих файлов, таких, как параметр channels= для указания количества каналов (1 — моно, 2 — стерео, s — стерео с переменой каналов), параметры -mono и -stereo для явного указания конфигурации каналов, параметр bits= для указания количества битов на сэмпл, параметр rate= для указания количества сэмплов в секунду, а также параметр -max для достижения максимального качества результирующих файлов (стерео, 16 бит, 44.1 KHz). Остальные параметры либо являются слишком специфичными, либо попросту не работают в современных системах (например, sound-device= и -echo).

Установка утилит

В первую очередь вам придется установить рассматриваемую утилиту вместе с несколькими дополнительными утилитами с аналогичным функционалом; проще всего это сделать с помощью терминала путем исполнения соответствующей вашему дистрибутиву команды.

Команды для Linux Mint, Ubuntu, Debian, Bodhi Linux:

# apt install icedax

Команда для Fedora Workstation:

# dnf install icedax

Примеры использования

Определение параметров аудио-CD

Для определения параметров привода следует использовать параметр -info-only, а также параметр dev= с именем файла устройства привода оптических дисков.

$ cdda2wav dev=/dev/sr0 -info-only
Type: ROM, Vendor 'ASUS ' Model 'DRW-24B3ST ' Revision '1.00' MMC+CDDA
569344 bytes buffer memory requested, 4 buffers, 55 sectors
Read TOC CD Text failed (probably not supported).
#icedax version 1.1.11, real time sched., soundcard, libparanoia support
AUDIOtrack pre-emphasis copy-permitted tracktype channels
1-10 no no audio 2
Table of Contents: total tracks:10, (total time 21:38.20)
1.( 1:18.43), 2.( 3:23.30), 3.( 1:55.74), 4.( 1:58.65),  5.( 2:14.06),
6.( 1:30.68), 7.( 3:47.02), 8.( 1:59.35), 9.( 3:25.70), 10.( 0:04.02),

Table of Contents: starting sectors
1.( 0),     2.( 5893),  3.( 21148), 4.( 29847),  5.( 38762),
6.( 48818), 7.( 55636), 8.( 72663), 9.( 81623), 10.( 97068),
lead-out( 97370)
CDINDEX discid: Vq7PwefN6oHv2ALM91_oHvAOadQ-
CDDB discid: 0x8105120a
CD-Text: not detected
CD-Extra: not detected
No media catalog number present.
scanning for ISRCs: 10 ...
index scan: 10...

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

Копирование треков

Для копирования треков необходимо передать утилите параметр dev= с путем до файла устройства оптического привода, параметр -alltracks для записи треков в отдельные файлы, а также, при необходимости, указать диапазон треков с помощью параметра track= и скорость чтения с помощью параметра speed=.

$ cdda2wav dev=/dev/sr0 speed=4 -alltracks track=2+5
Type: ROM, Vendor 'ASUS ' Model 'DRW-24B3ST ' Revision '1.00' MMC+CDDA
569344 bytes buffer memory requested, 4 buffers, 55 sectors
Read TOC CD Text failed (probably not supported).
#icedax version 1.1.11, real time sched., soundcard, libparanoia support
AUDIOtrack pre-emphasis copy-permitted tracktype channels
1-10 no no audio 2
Table of Contents: total tracks:10, (total time 21:38.20)
1.( 1:18.43), 2.( 3:23.30), 3.( 1:55.74), 4.( 1:58.65),  5.( 2:14.06),
6.( 1:30.68), 7.( 3:47.02), 8.( 1:59.35), 9.( 3:25.70), 10.( 0:04.02),

Table of Contents: starting sectors
1.( 0),     2.( 5893),  3.( 21148), 4.( 29847),  5.( 38762),
6.( 48818), 7.( 55636), 8.( 72663), 9.( 81623), 10.( 97068),
lead-out( 97370)
CDINDEX discid: Vq7PwefN6oHv2ALM91_oHvAOadQ-
CDDB discid: 0x8105120a
CD-Text: not detected
CD-Extra: not detected
samplefile size will be 100959644 bytes.
recording 572.3333 seconds stereo with 16 bits @ 44100.0 Hz ->'audio'...
cdda2wav: Operation not permitted. cannot set posix realtime scheduling policy
percent_done:
100% track 2 recorded successfully
100% track 3 recorded successfully
100% track 4 recorded successfully
100% track 5 recorded successfully

Утилита скопировала треки от 2 до 5 включительно.

$ ls
audio_02.inf audio_03.inf audio_04.inf audio_05.inf
audio_02.wav audio_03.wav audio_04.wav audio_05.wav

В файлах с расширениями inf сохраняются метаданные.

$ cat audio_02.inf
#created by icedax 1.1.11 09/19/23 15:07:27
#
CDINDEX_DISCID= 'Vq7PwefN6oHv2ALM91_oHvAOadQ-'
CDDB_DISCID= 0x8105120a
MCN=
ISRC=
#
Albumperformer= ''
Performer= ''
Albumtitle= ''
Tracktitle= ''
Tracknumber= 2
Trackstart= 5893
# track length in sectors (1/75 seconds each), rest samples
Tracklength= 15255, 0
Pre-emphasis= no
Channels= 2
Copy_permitted= once (copyright protected)
Endianess= little
# index list
Index= 0

Сами треки сохраняются в файлах с расширением wav и открываются любыми мультимедийными проигрывателями.

$ mpv audio_02.wav
(+) Audio --aid=1 (pcm_s16le 2ch 44100Hz)
AO: [pipewire] 44100Hz stereo 2ch s16
A: 00:00:11 / 00:03:23 (6%)

Exiting... (Quit)

Файл сохранен в оригинальном качестве 16 бит, стерео, 44.1 КГц. По сути, это и есть основной функционал утилиты, который, как видно, достаточно просто использовать.

Если есть необходимость сохранения треков с диска в одном файле, вы можете просто отказаться от использования параметра -alltracks:

$ cdda2wav dev=/dev/sr0 speed=4 track=2+5
Type: ROM, Vendor 'ASUS ' Model 'DRW-24B3ST ' Revision '1.00' MMC+CDDA
569344 bytes buffer memory requested, 4 buffers, 55 sectors
Read TOC CD Text failed (probably not supported).
#icedax version 1.1.11, real time sched., soundcard, libparanoia support
AUDIOtrack pre-emphasis copy-permitted tracktype channels
1-10 no no audio 2
Table of Contents: total tracks:10, (total time 21:38.20)
1.( 1:18.43), 2.( 3:23.30), 3.( 1:55.74), 4.( 1:58.65),  5.( 2:14.06),
6.( 1:30.68), 7.( 3:47.02), 8.( 1:59.35), 9.( 3:25.70), 10.( 0:04.02),

Table of Contents: starting sectors
1.( 0),     2.( 5893),  3.( 21148), 4.( 29847),  5.( 38762),
6.( 48818), 7.( 55636), 8.( 72663), 9.( 81623), 10.( 97068),
lead-out( 97370)
CDINDEX discid: Vq7PwefN6oHv2ALM91_oHvAOadQ-
CDDB discid: 0x8105120a
CD-Text: not detected
CD-Extra: not detected
W Duration is not set for complete tracks (option -d), this disables generation
of info files!
samplefile size will be 100959644 bytes.
recording 572.3333 seconds stereo with 16 bits @ 44100.0 Hz ->'audio'...
cdda2wav: Operation not permitted. cannot set posix realtime scheduling policy
percent_done:
100% track 2 recorded successfully
100% track 3 recorded successfully
100% track 4 recorded successfully
100% track 5 recorded successfully

Треки сохранены, в директории находится единственный файл. Файлы с метаданными не генерируются.

$ ls
audio.wav

Файл также открывается с помощью любого мультимедийного проигрывателя:

$ mpv audio.wav
(+) Audio --aid=1 (pcm_s16le 2ch 44100Hz)
AO: [pipewire] 44100Hz stereo 2ch s16
A: 00:00:05 / 00:09:32 (1%)

Exiting... (Quit)

Длительность результирующего аудиофайла увеличилась и соответствует общей длительности сохраненных треков.