CDDA2WAV(1) User Commands CDDA2WAV(1)
NAME
cdda2wav - dumps CD audio data into sound files with extra data
verification
SYNOPSIS
cdda2wav [
options ][
dev=device ] [
file(s) or
directories]
DESCRIPTION
cdda2wav can retrieve audio tracks from CDROM drives which are
capable of reading audio data digitally via SCSI (
CDDA).
As
cdda2wav implements strategies to work around typical defects on
audio CDs it reads many disks that cannot be read by other software.
As
cdda2wav can use
libparanoia (see
-paranoia option below) to
verify the data that has been read from the medium, it delivers
superior quality even if the medium is dusty, scratched or if other
problems occur.
As
cdda2wav may be directed to write the audio data to stdout, it
writes all its informational output to stderr by default. See
out-fd=descriptor option below.
Default settings
Cdda2wav defaults to read the first audio track from the medium and
the default verbose level is set to
-vtoc,summary,sectors,titles and
cdda2wav by default writes
*.inf files. To extract all audio tracks
with quality verification, it is recommended to call:
cdda2wav -vall cddb=0 speed=4 -paranoia paraopts=proof -B For hints on how to specify better parameters manually, see the
paraopts= description below.
Device naming
Most users do not need to care about device naming. If no
dev= option was specified,
cdda2wav implements
auto target support and
automagically finds the drive when exactly one CD-ROM type drive is
available in the system. When more than one CD-ROM type drive
exists, a list of possible device name parameters may be retrieved
with
cdda2wav -scanbus or from the target example from the output of
cdda2wav dev=help, then the
dev= parameter may be set based on the
device listing.
The
device parameter to the
dev= option explained below refers to
scsibus/
target/
lun of the CD/DVD/BluRay-Recorder. If a file
/etc/default/cdrecord exists, the parameter to the
dev= option may
also be a drive name label in said file (see FILES section).
OPTIONS
Informative options
-h -help display version information for cdda2wav on standard output.
-version display version and Copyright information.
Audio options
-a divider -divider divider sets rate to 44100Hz /
divider. Possible values are listed
with the
-R option.
The default divider value is 1.
-B -bulk -alltracks copies each track into a separate file.
The default is not to extract all tracks.
-b bits -bits-per-sample bits sets
bits per sample per channel:
8,
12 or
16.
The default is 16 bits per sample.
-c channels -channels channels use:
1 for mono recording
2 for stereo recording
s for stereo recording with both channels swapped
The default is stereo recording.
-C endianess -cdrom-endianess endianess sets endianess of the input samples to 'little', 'big',
'machine' or 'guess' to override defaults. The value
'machine' or 'host' is evaluated as the actual byte order of
the host CPU in the current OS.
The default is to detect cdrom endianess automatically.
-cuefile Create a CDRWIN compatible CUE file. A CUE file that
completely follows the CDRWIN documentation can only be used
to create 1:1 copies if there is a single file with audio data
for the whole disk. The *.inf file format implements more
audio CD features than the CDRWIN CUE format and it allows to
create 1:1 copies if there is one audio data file per track.
Use the CUE file format for meta data only if you really need
this format.
To allow
cdda2wav to create CUE files, you must also specify
-t all to switch
cdda2wav into a mode that creates a single
audio data file for the whole CD.
-T -deemphasize undo the effect of pre-emphasis in the input samples.
The default is to keep the audio data in the same state as on
the medium and to mark the pre-emphasis state in the
*.inf files.
-L cddb mode -cddb cddb mode does a cddbp album- and track title lookup based on the cddb
id. The parameter cddb mode defines how multiple entries
shall be handled.
+----------+-----------------------------------------------------------+
|Parameter | Description |
+----------+-----------------------------------------------------------+
| -1 | disable cddb queries. This is the default. |
| 0 | interactive mode. The user selects the entry to use. |
| 1 | first fit mode. The first entry is taken unconditionally. |
+----------+-----------------------------------------------------------+
cddbp-server=servername sets the server to be contacted for title lookups.
cddbp-port=portnumber sets the port number to be used for title lookups.
-d duration -duration duration sets recording time in seconds or frames (sectors). Frames
are indicated by a 'f' suffix (e.g. 75f for 75 sectors).
0 sets the time for whole track.
The default is to extract the whole track.
-E endianess -output-endianess endianess sets endianess of the output samples to 'little', 'big' or
'machine' to override the default which is 'network byte
order' (big endian). The value 'machine' or 'host' is
evaluated as the actual byte order of the host CPU in the
current OS.
-F -find-extremes finds extreme amplitudes in samples.
-G -find-mono finds if input samples are in mono.
-g -gui reformats the output for parsing by gui frontends.
-H -no-infofile does not write info file, cddb file or cdtext file.
-i index -index index selects the start index.
-J -info-only does not write to a file, it just gives information about the
disc.
-M -md5 enables calculation of MD-5 checksum for all audio bytes from
the beginning of a track. The audio header is skipped when
calculating the MD-5 checksum to allow comparison of MD-5 sums
for files with different header types.
-m -mono sets to mono recording.
-no-hidden-track Ignore hidden tracks on the CD. By default,
cdda2wav checks
whether there might be a hidden track before track 1. This
check may take a few seconds and thus can be disabled with
-no-hidden-track.
-N -no-write does not write to a file, it just reads (e.g. for debugging
purposes). If this option is used together with the
-e option, the CD is read and the audio content is played back to
the sound device without creating output files with audio
data.
-no-textdefaults By default,
cdda2wav replaces empty CD-Text fields from tracks
with the related CD-Text field (when defined) for the whole
CD. If the option
-no-textdefaults is used,
cdda2wav leaves
the track related CD-Text fields empty in such a case.
-no-textfile If
cdda2wav encounters useful CD-Text information on the CD,
it writes a .cdtext file. The option
-no-textfile allows to
suppress the creation of the .cdtext file.
-o offset -offset offset starts
offset sectors behind start track (one sector
equivalents 1/75 seconds).
-O audiotype -output-format audiotype can be
wav (for wav files) or
aiff (for apple/sgi aiff files)
or
aifc (for apple/sgi aifc files) or
au or
sun (for sun .au
PCM files) or
cdr or
raw (for headerless files to be used for
cd writers).
The default output format is now
wav for all platforms as it
has become the most common format. Note that former versions
of
cdda2wav made an exception and by default created
au type
files on Solaris.
-p percentage -playback-realtime percentage changes pitch of audio data copied to sound device.
-P sectors -set-overlap sectors sets the initial number of overlap
sectors for jitter
correction in non-paranoia mode. Note that overlapped reads
are handled differently in paranoia mode.
The default overlap in non-paranoia mode is 1.
-paranoia use the paranoia library as a filter on top of cdda2wav's
routines for reading. In
paranoia mode, the latency time for
the
-interactive mode and with a read ahead buffer size of
150..300 sectors, is increased to typically 5..10 seconds.
This is due to the
paranoia code reading everything at least
twice and having to empty the cache RAM of the CD-ROM drive.
The size of the read ahead area must be larger than the size
of the RAM of the drive in order to allow
libparanoia to empty
the cache RAM in the drive. As the size of the read ahead
area in former times was a constant compiled into the
libparanoia code, the extract quality with using libparanoia
was no longer sufficient with drives built after year 2000.
See
readahead= parameter to the
paraopts= option below.
If the
paranoia mode is used,
cdda2wav displays some quality
statistics for each extracted track. The following items
appear in the list:
+--------+--------------------------------------------------------------+
| Value | Description |
+--------+--------------------------------------------------------------+
| rderr | Number of hard read errors |
| skip | Number of sectors skipped due to exhausted retries |
| atom | Number of intra sector jitters (frame jitters) detected |
| edge | Number of jitters between sectors detected |
| drop | Number of dropped bytes fixed |
| dup | Number of duplicate bytes fixed |
| drift | Number of drifts detected |
| c2 | Number of sectors with C2 errors |
| reads | Number of readahead blocks read and percentage to track size |
|overlap | Number of dynamic overlap size raises |
+--------+--------------------------------------------------------------+
The quality indicators in detail:
rderr The number of failed low level read requests. Each
read appears for
sectors-per-request sectors. The
sectors-per-request size is typically less than the
read ahead size.
skip The number of sectors that have been skipped because
the read error retry count was exhausted and no
successful read was possible.
atom The number of jitters that have been detected inside
sectors. This should never happen, but whenever a non-
correctable C2 error occurs, the drive could lose
streaming. Increasing the read ahead buffer size may
reduce the results from atom errors.
edge The number of jitters that have been detected at the
edges of sectors. This could be caused by sector
positioning errors. Increasing the read ahead buffer
size may reduce the results from edge errors.
drop The number of dropped samples. This could be caused by
sector positioning errors. Increasing the read ahead
buffer size may reduce the results from edge errors.
dup Duplicated samples could be caused by sector
positioning errors like dripped samples. Increasing
the read ahead buffer size may reduce the results from
edge errors.
drift This is the amount of drifts detected when checking the
overlap area.
c2 The number of sectors with C2 errors seen when reading
the last track. As the paranoia code tends to read bad
parts of the disk many times, this number usually is
above the number that would appear when the disk is
just read once in a linear way. Use
paraopts=disable,c2check to see a number that
represents the state of the medium.
reads The number of read ahead blocks read for the last track
by the upper layer and the percentage of the amount of
data read compared to the size of the track. This
percentage is typically 200% because the paranoia code
reads all data at least twice. If there is a lot of
overlap and a lof of read problems, this percentage
raises.
overlap The number the overlap size has been raised. This
happens when the overlap size is below the maximum
overlap size and errors in the overlap area are
detected.
-paraopts=list List is a comma separated list of suboptions passed to the
paranoia library.
+-----------------+------------------------------------------------------------+
| Option | Description |
+-----------------+------------------------------------------------------------+
| help | lists all paranoia options. |
| disable | disables paranoia mode. Libparanoia is still being used |
| no-verify | switches verify off, and static overlap on |
| retries=amount | set the number of maximum retries per sector |
|readahead=amount | set the number of sectors to use for the read ahead buffer |
| overlap=amount | set the number of sectors used for static overlap |
| minoverlap=amt | set the min. number of sectors for dynamic overlap |
| maxoverlap=amt | set the max. number of sectors for dynamic overlap |
| c2check | check C2 pointers from drive to rate quality |
| proof | set minoverlap=20,retries=200,readahead=600,c2check |
+-----------------+------------------------------------------------------------+
The
paraopts= parameters in detail:
disable The paranoia corrections are disabled, but the data is
still directed through the code from
libparanoia. This
allows to switch on C2 error detection and to check the
C2 error statistics for a CD.
no-verify This switches off the verification of the data
integrity in the overlap area and turns off dynamic
overlap control in favor of a static overlap value.
retries=amount Set the maximum number of read retries per sector in
case of hard read errors. The default value for this
parameter is
20. This is the same value as used by the
old
cdparanoia(1) command.
readahead=amount Set the number of sectors to use for the read ahead
buffer. Except when at the end of the medium,
libparanoia never requests less than this amount of
data from the low level I/O code. The size of the read
ahead buffer is usually bigger than the maximum size
for a single DMA in the system. For this reason,
libparanoia calls several read operations in order to
fill the read ahead buffer. The default value used by
cdda2wav is 400, which is more than the 150 sectors
that
cdparanoia(1) uses but still a compromise for not
requiring too much memory.
It is recommended to use a read ahead buffer size that
is not less than the RAM size in the CD-ROM drive. If
the drive has more than 1MB of RAM, use 425 sectors per
MB of RAM in the drive.
Note that as long as the
readahead= value is too small,
the extract quality varies a lot with the value in use.
The value used by
cdparanoia(1) may cause an extract
quality below what
cdda2wav delivers without
libparanoia.
overlap=amount Set the number of sectors used for static overlap. This
switches dynamic overlap off. It is recommended not to
use static overlapping. To get a larger overlapping,
better use a higher
minoverlap= value.
minoverlap=amount Set the minimum number of sectors for dynamic overlap.
The default value used by
cdda2wav is
0.5, this is more
than the default used by
cdparanoia(1) which is 0.1.
For old drives that do not support accurate streaming,
it is not recommended to specify a
minoverlap= value
greater or equal to the maximal DMA size.
For best results on other drives, it is recommended to
use a
minoverlap= value that is not less than half of
the readahead size.
The extract quality varies a lot with the
minoverlap= value, but increasing the value also increases the
extract time.
maxoverlap=amount Set the maximum number of sectors for dynamic overlap.
If
maxoverlap= was not specified and a large
minoverlap= value was specified, this results in a
quasi static overlapping. The default value used by
cda2wav is
32.
c2check Turn on C2 error checking. For now, this just results
in printing C2 error statistics.
Warning: some drives have been reported to fail reading
hidden tracks when the
c2check mode is in effect. When
you plan to use
c2check while extracting hidden tracks,
first verify that your drive will report hidden tracks
the same with and without the
c2check option.
proof This option is a macro for better extract parameters
than used by default. The macro
proof expands to:
paraopts=minoverlap=sectors-per-request-1,\ retries=200,readahead=600 If
sectors-per-request-1 is more than 20, 20 is used as
minimal overlap value.
The parameters used by
proof are still not the best and
there is no best parameter set for all cases. A larger
value for the read ahead buffer size may e.g be too
large for the available RAM in the system and the best
value for the minimal overlap depends on whether the
drive supports exact streaming. It is recommended to
run experiments with larger values for the parameters
minoverlap= and
readahead= to get the best results for
a specific platform.
Note that previous versions did include
c2check with
the
proof macro, but this has been reported to fail on
some drives.
-q -quiet quiet operation, no screen output.
-r rate -rate rate sets
rate in samples per second. Possible values are listed
with the
-R option.
-R -dump-rates shows a list of all sample rates and their dividers.
-S speed -speed speed sets the cdrom device to one of the selectable speeds for
reading. For maximum extraction quality, it is recommended to
use speed values of 8 or below.
The default is to extract at maximum speed.
-s -stereo sets to stereo recording.
-start-sector sector set an absolute start sector. This option is mutually
exclusive to
-track and
-offset.
-t track[+endtrack] -track track[+endtrack] -track track+max -track all selects the start track and optionally the end track. If
-t all is used, all audio tracks are selected. If
-t 2+max is
used, all audio tracks starting with track 2 are selected.
-v itemlist -verbose-level itemlist Retrieves and prints verbose information about the CD.
Level is a list of comma separated suboptions. Each suboption
controls the type of information to be reported.
+-------------+----------------------------------------------------------------+
| Suboption | Description |
+-------------+----------------------------------------------------------------+
| ! | invert the meaning of the following string |
| not | invert the meaning of the following string |
| disable | no information is given, warnings appear however |
| all | all information is given |
| toc | show table of contents |
| summary | show a summary of the recording parameters |
| indices | determine and display index offsets |
| catalog | retrieve and display the media catalog number MCN |
| mcn | retrieve and display the media catalog number MCN |
| trackid | retrieve and display all Intern. Standard Recording Codes ISRC |
| isrc | retrieve and display all Intern. Standard Recording Codes ISRC |
| sectors | show the table of contents in start sector notation |
| titles | show the table of contents with track titles (when available) |
|audio-tracks | list the audio tracks and their start sectors |
+-------------+----------------------------------------------------------------+
The default verbose-level is
toc,summary,sectors,titles .
-w -wait waits for signal, then start recording.
-x -max sets maximum (CD) quality.
SCSI options
dev=device -D device -device device uses
device as the source for CDDA reading. For example
/dev/cdrom for the
cooked_ioctl interface and Bus,ID,Lun for
the
generic_scsi interface. The
device has to correspond with
the interface setting if given (see
-I and
-interface option
below).
If no
-I or
-interface option has been specified, the
interface setting is derived from the device name syntax. A
device name that is in the form Bus,ID,Lun or contains a colon
(':') defaults to the
generic_scsi interface.
Using the
cooked_ioctl is not recommended as this makes
cdda2wav mainly depend on the audio extraction quality of the
operating system which is usually extremely bad. For this
reason, avoid using parameters like
dev=/dev/cdrom for the
device.
The setting of the environment variable
CDDA_DEVICE is
overridden by this option.
If no
dev= option is present, or if the
dev= option only
contains a transport specifier but no address,
cdda2wav tries
to scan the SCSI address space for CD-ROM drives. If exactly
one is found, this is used by default.
For more information, see the description of the
dev= option
from
cdrecord(1).
debug=# debug-scsi=# Set the debug level for the
libscg SCSI OS abstraction layer.
kdebug=# kdebug-scsi=# kd=# Set the kernel debug level for the kernel driver called by the
libscg SCSI OS abstraction layer. This option is not supported
on all platforms.
-scanbus Scan all SCSI devices on all SCSI buses and print the inquiry
strings. This option may be used to find SCSI address of the
CD/DVD-Recorder on a system. The numbers printed out as
labels are computed by:
bus * 100 + target ts=# Set the maximum transfer size for a single SCSI command to #.
The syntax for the
ts= option is the same as for cdrecord fs=#
or sdd bs=#.
If no
ts= option has been specified,
cdda2wav defaults to a
transfer size of 3 MB. If libscg gets lower values from the
operating system, the value is reduced to the maximum value
that is possible with the current operating system.
Sometimes, it may help to further reduce the transfer size or
to enhance it, but note that it may take a long time to find a
better value by experimenting with the
ts= option.
Some operating systems return wrong values for the maximum
transfer size. If the transfer totally hangs or resets occur,
it may be appropriate to reduce the transfer size to less than
64 kB or even less than 32 kB.
-V -verbose-scsi enable SCSI command logging to the console. This is mainly
used for debugging.
-Q -silent-scsi suppress SCSI command error reports to the console. This is
mainly used for guis.
OS Interface options
-A auxdevice -auxdevice auxdevice uses
auxdevice as CDROM drive to allow to send the
CDROMMULTISESSION ioctl on Linux although the
generic_scsi interface is in use.
-I interface -interface interface specifies the
interface to use for accessing the CDROM:
generic_scsi for sending SCSI commands directly to the drive.
cooked_ioctl for using the programming interface supplied by the OS
kernel.
The latter is not recommended as it gives lower quality and
only works on a limited number of platforms.
-interactive Go into interactive mode that reads commands from
stdin and
writes the textual replies to
stderr, or the file descriptor
specified by the
out-fd option. This mode has been introduced
mainly to allow cdrecord to be called by gstreamer plugins.
If
cdda2wav was called with the option
-interactive, it reads
the TOC from the medium and then waits for command input as if
it has been issued a
stop command. If the next command is a
cont command, then
cdda2wav extracts the whole audio part of
the medium. If the next command is a
read command, then
cdda2wav starts extracting from the position that was
indicated by the
read command parameter.
+--------+-----------------------+------------------------------------------+
|Command | Parameters | Description |
+--------+-----------------------+------------------------------------------+
| cont | | continue processing at current position |
| exit | | exit processing |
| help | | print command help and wait for input |
| quit | | exit processing |
| read | sectors
sector number | read sectors starting from
sector number |
| read | tracks
track number | read sectors starting from
track number |
| stop | | stop processing and wait for new input |
+--------+-----------------------+------------------------------------------+
out-fd=descriptor Redirect informational output to the file descriptor named by
descriptor. The parameter
descriptor specifies a UNIX file
descriptor number. By default,
cdda2wav sends informational
output to
stderr. Redirecting the informational output to a
different file descriptor helps guis and other programs that
call
cdda2wav via pipes.
audio-fd=descriptor In case that the file name for the audio data file is "-",
redirect audio output to the file descriptor named by
descriptor. The parameter
descriptor specifies a UNIX file
descriptor number. By default,
cdda2wav sends audio data to
stdout if the output is not directed into a file. Redirecting
the audio output to a different file descriptor helps guis and
other programs that call
cdda2wav via pipes.
-no-fork Do not fork for extended buffering. If
-no-fork is used and
cdda2wav is used to play back audio CDs in
paranoia mode, the
playback may be interrupted due to lack of buffering. On the
other hand, allowing
cdda2wav to fork will increase the
latency time for the
-interactive mode.
-e -echo copies audio data to the operating system's sound device e.g.
/dev/dsp.
sound-device=sounddevice set an alternate sound device to use for
-e.
-n sectors -sectors-per-request sectors reads
sectors per request.
-l buffers -buffers-in-ring buffers uses a ring buffer with
buffers total.
ENVIRONMENT VARIABLES
Some defaults for
cdda2wav are compiled in and depend on the
Makefile others on the
environment variable settings.
CDDA_DEVICE is used to set the device name. The device naming is
compatible with
cdrecord(1).
CDDBP_SERVER is used for cddbp title lookups when supplied.
CDDBP_PORT is used for cddbp title lookups when supplied.
RSH If the
RSH environment variable is present, the remote
connection will not be created via
rcmd(3) but by calling the
program pointed to by
RSH. Use e.g.
RSH=/usr/bin/ssh to
create a secure shell connection.
Note that this forces
cdda2wav to create a pipe to the
rsh(1) program and disallows
cdda2wav to directly access the network
socket to the remote server. This makes it impossible to set
up performance parameters and slows down the connection
compared to a
root initiated
rcmd(3) connection.
RSCSI If the
RSCSI environment variable is present, the remote SCSI
server will not be the program
/opt/schily/sbin/rscsi but the
program pointed to by
RSCSI. Note that the remote SCSI server
program name will be ignored if you log in using an account
that has been created with a remote SCSI server program as
login shell.
EXIT STATUS
cdda2wav uses the following exit codes to indicate various degrees of
success:
+---------+--------------------------------------------------------------------+
|Exitcode | Description |
+---------+--------------------------------------------------------------------+
| 0 | no errors encountered, successful operation. |
| 1 | usage or syntax error. cdda2wav got inconsistent arguments. |
| 2 | permission (un)set errors. permission changes failed. |
| 3 | read errors on the cdrom/burner device encountered. |
| 4 | write errors while writing one of the output files encountered. |
| 5 | errors with soundcard handling (initialization/write). |
| 6 | errors with stat() system call on the read device (cooked ioctl). |
| 7 | pipe communication errors encountered (in forked mode). |
| 8 | signal handler installation errors encountered. |
| 9 | allocation of shared memory failed (in forked mode). |
| 10 | dynamic heap memory allocation failed. |
| 11 | errors on the audio cd medium encountered. |
| 12 | device open error in ioctl handling detected. |
| 13 | race condition in ioctl interface handling detected. |
| 14 | error in ioctl() operation encountered. |
| 15 | internal error encountered. Please report back!!! |
| 16 | error in semaphore operation encountered (install / request). |
| 17 | could not get the scsi transfer buffer. |
| 18 | could not create pipes for process communication (in forked mode). |
+---------+--------------------------------------------------------------------+
DISCUSSION
cdda2wav is able to read parts of an
audio CD or
multimedia CDROM
(containing audio parts) directly digitally. These parts can be
written to a file, a pipe, or to a sound device.
cdda2wav stands for
CDDA to
WAV (where
CDDA stands for compact disc
digital audio and
WAV is a sound sample format introduced by MS
Windows). It allows copying
CDDA audio data from the CDROM drive
into a file in
WAV or other formats.
Some versions of
cdda2wav may try to get higher real-time scheduling
priorities to ensure smooth (uninterrupted) operation. These
priorities are available for super users and are higher than those of
'normal' processes. Thus delays are minimized.
If you only have one CDROM and it is loaded with an audio CD, you may
simply invoke
cdda2wav and it will create the sound file
audio.wav recording the whole track beginning with track 1 in stereo at 16 bit
at 44100 Hz sample rate, if your file system has enough space free.
Otherwise recording time will be limited. For details see files
README and
README.INSTALL.
If you have more then one CD-ROM type drive in the system, you need
to specify the
dev= option.
HINTS ON OPTIONS
Most of the options are used to control the format of the WAV file.
In the following text most of them are discussed in a more verbose
way.
Select Device
dev=device selects the CDROM drive device to be used. The specifier
given should correspond to the selected interface (see below). For
the
cooked_ioctl interface this is the cdrom device descriptor.
The SCSI devices used with the generic SCSI interface however are addressed with their SCSI-Bus, SCSI-Id, and SCSI-Lun instead of the generic SCSI device descriptor. One example for a SCSI CDROM drive
on bus 0 with SCSI ID 3 and lun 0 is
dev=0,3,0.
Select Auxiliary device
-A auxdevice may be needed in some rare cases for CD-Extra handling.
Cdda2wav usually has no problem to get the multi-session information
for CD-Extra using raw SCSI commands. For Non-SCSI-CDROM drives this
is the same device as given by
dev= (see above). For SCSI-CDROM
drives it is the CDROM drive (SCSI) device (i.e.
/dev/sr0 )
corresponding to the SCSI device (i.e.
0,3,0 ). It has to match the
device used for sampling.
Select Interface
-I interface selects the CDROM drive communication method. This
interface method is typically automatically selected from the device
name. For SCSI drives
generic_scsi is used (cooked_ioctl may not be
available for all devices). Valid names are
generic_scsi and
cooked_ioctl. The first uses the generic SCSI interface, the latter
uses the ioctl of the CDROM driver. The latter variant works only
when the kernel driver supports
CDDA reading. This entry has to match
the selected CDROM device (see above).
Enable echo to soundcard
-e copies audio data to the sound card while recording, so you hear
it nearly simultaneously. The soundcard gets the same data that is
recorded. This is time critical, so it works best with the
-q option.
To use
cdda2wav as a pseudo CD player without recording in a file you
could use
cdda2wav -q -e -t2 -d0 -N to play the whole second track or
cdda2wav -q -e -B -N to play the whole disk. This feature reduces the recording speed to
at most onefold speed.
Change pitch of echoed audio
-p percentage changes the pitch of all audio echoed to a sound card.
Only the copy to the soundcard is affected, the recorded audio
samples in a file remain the same. Normal pitch, which is the
default, is given by 100. Lower percentages correspond to lower
pitches, i.e. -p 50 transposes the audio output one octave lower.
See also the script
pitchplay as an example. This option was
contributed by Raul Sobon.
Select mono or stereo recording
-m or
-c 1 selects mono recording (both stereo channels are mixed),
-s or
-c 2 or
-c s selects stereo recording. Parameter s will swap
both sound channels.
Select maximum quality
-x will set stereo, 16 bits per sample at 44.1 kHz (full CD quality).
Note that other format options given later can change this setting.
Select sample quality
-b 8 specifies 8 bit (1 Byte) for each sample in each channel;
-b 12 specifies 12 bit (2 Byte) for each sample in each channel;
-b 16 specifies 16 bit (2 Byte) for each sample in each channel (Ensure
that your sample player or sound card is capable of playing 12-bit or
16-bit samples). Selecting 12 or 16 bits doubles file size. 12-bit
samples are aligned to 16-bit samples, so they waste some disk space.
Select sample rate
-r samplerate selects a sample rate.
samplerate can be in a range
between 900 and 44100. Option
-R lists all available rates.
Select sample rate divider
-a divider selects a sample rate divider.
divider can be from 1 to
50.5 in steps of 0.5. Option
-R lists all available rates.
To make the sound smoother at lower sampling rates,
cdda2wav sums
over
n samples (where
n is the specific dividend). So for 22050 Hertz
output we have to sum over 2 samples, for 900 Hertz we have to sum
over 49 samples. This cancels higher frequencies. Standard sector
size of an audio CD (ignoring additional information) is 2352 Bytes.
In order to finish summing for an output sample at sector boundaries
the rates above have to be chosen. Arbitrary sampling rates in high
quality would require some interpolation scheme, which needs much
more sophisticated programming.
List a table of all sampling rates
-R shows a list of all sample rates and their dividers. Dividers can
range from 1 to 50.5 in steps of 0.5.
Select start track and optionally end track
-t n+m selects
n as the start track and optionally
m as the last
track of a range to be recorded. These tracks must be from the table
of contents. This sets the track where recording begins. Recording
can advance through the following tracks as well (limited by the
optional end track or otherwise depending on recording time). Whether
one file or different files are then created depends on the
-B option
(see below).
Select start index
-i n selects the index to start recording with. Indices other than 1
will invoke the index scanner, which will take some time to find the
correct start position. An offset may be given additionally (see
below).
Set recording duration
-d n sets recording time to
n seconds or set recording time for
whole track if
n is zero. In order to specify the duration in frames
(sectors) also, the argument can have an appended 'f'. Then the
numerical argument is to be taken as frames (sectors) rather than
seconds. Please note that if track ranges are being used they define
the recording time as well thus overriding any
-d option specified
times.
Recording time is defined as the time the generated sample will play
(at the defined sample rate). Since it's related to the amount of
generated samples, it's not the time of the sampling process itself
(which can be less or more). It's neither strictly coupled with the
time information on the audio CD (shown by your hifi CD player).
Differences can occur by the usage of the
-o option (see below).
Notice that recording time will be shortened, unless enough disk
space exists. Recording can be aborted at anytime by pressing the
break character (signal SIGQUIT).
Record all tracks of a complete audio CD in separate files
-B copies each track into a separate file. A base name can be given.
File names have an appended track number and an extension
corresponding to the audio format. To record all audio tracks of a
CD, use a sufficient high duration (i.e. -d99999).
Set start sector offset
-o sectors increments start sector of the track by
sectors. By this
option you are able to skip a certain amount at the beginning of a
track so you can pick exactly the part you want. Each sector runs for
1/75 seconds, so you have very fine control. If your offset is so
high that it would not fit into the current track, a warning message
is issued and the offset is ignored. Recording time is not reduced.
(To skip introductory quiet passages automagically, use the
-w option
see below.)
Wait for signal option
-w Turning on this option will suppress all silent output at startup,
reducing possibly file size.
cdda2wav will watch for any signal in
the output signal and switches on writing to file.
Find extreme samples
-F Turning on this option will display the most negative and the most
positive sample value found during recording for both channels. This
can be useful for readjusting the volume. The values shown are not
reset at track boundaries, they cover the complete sampling process.
They are taken from the original samples and have the same format
(i.e. they are independent of the selected output format).
Find if input samples are in mono
-G If this option is given, input samples for both channels will be
compared. At the end of the program the result is printed.
Differences in the channels indicate stereo, otherwise when both
channels are equal it will indicate mono.
Undo the pre-emphasis in the input samples -T Some older audio CDs are recorded with a modified frequency
response called pre-emphasis. This is found mostly in classical
recordings. The correction can be seen in the flags of the Table Of
Contents often. But there are recordings, that show this setting only
in the subchannels. If this option is given, the index scanner will
be started, which reads the q-subchannel of each track. If pre-
emphasis is indicated in the q-subchannel of a track, but not in the
TOC, pre-emphasis will be assumed to be present, and subsequently a
reverse filtering is done for this track before the samples are
written into the audio file.
Set audio format
-O audiotype can be
wav (for wav files) or
au or
sun (for sun PCM
files) or
cdr or
raw (for headerless files to be used for cd
writers). All file samples are coded in linear pulse code modulation
(as done in the audio compact disc format). This holds for all audio
formats. Wav files are compatible to Wind*ws sound files, they have
lsb,msb byte order which is the opposite byte order to the one used
on the audio cd. The default filename extension is '.wav'. Sun type
files are not like the older common logarithmically coded .au files,
but instead as mentioned above linear PCM is used. The byte order is
msb,lsb to be compatible. The default filename extension is '.au'.
The AIFF and the newer variant AIFC from the Apple/SGI world store
their samples in bigendian format (msb,lsb). In AIFC no compression
is used. Finally the easiest 'format', the cdr aka raw format. It is
done per default in msb,lsb byte order to satisfy the order wanted by
most cd writers. Since there is no header information in this format,
the sample parameters can only be identified by playing the samples
on a soundcard or similar. The default filename extension is '.cdr'
or '.raw'.
Select cdrom drive reading speed
-S speed allows to switch the cdrom drive to a certain speed in
order to reduce read errors. The argument is transferred verbatim to
the drive. Details depend very much on the cdrom drives. An
argument of 0 for example is often the default speed of the drive, a
value of 1 often selects single speed.
Enable MD5 checksums -M count enables calculation of MD-5 checksum for 'count' bytes from
the beginning of a track. This was introduced for quick comparisons
of tracks.
Use Monty's libparanoia for reading of sectors -paranoia selects an alternate way of extracting audio sectors.
Monty's library is used with the following default options:
PARANOIA_MODE_FULL, but without PARANOIA_MODE_NEVERSKIP
for details see Monty's libparanoia documentation. In this case the
option
-P has no effect.
Do linear or overlapping reading of sectors
(This applies unless option
-paranoia is used.)
-P sectors sets the
given number of sectors for initial overlap sampling for jitter
correction. Two cases are to be distinguished. For nonzero values,
some sectors are read twice to enable cdda2wav's jitter correction.
If an argument of zero is given, no overlap sampling will be used.
For nonzero overlap sectors cdda2wav dynamically adjusts the setting
during sampling (like cdparanoia does). If no match can be found,
cdda2wav retries the read with an increased overlap. If the amount
of jitter is lower than the current overlapped samples, cdda2wav
reduces the overlap setting, resulting in a higher reading speed.
The argument given has to be lower than the total number of sectors
per request (see option
-n below). Cdda2wav will check this setting
and issues a error message otherwise. The case of zero sectors is
nice on low load situations or errorfree (perfect) cdrom drives and
perfect (unscratched) audio cds.
Set the transfer size
-n sectors will set the transfer size to the specified sectors per
request.
Set number of ring buffer elements
-l buffers will allocate the specified number of ring buffer
elements.
Set endianess of input samples
-C endianess will override the default settings of the input format.
Endianess can be set explicitly to "little", "big" or "machine" or to
the automatic endianess detection based on voting with "guess".
Set endianess of output samples
-E endianess (endianess can be "little", "big" or "machine") will
override the default settings of the output format.
Verbose option
-v itemlist prints more information. A list allows selection of
different information items.
help Print a summary of possible members of the diffopts list.
! Invert the meaning of the following string. No comma is
needed after the exclamation mark.
not Invert the meaning of all members in the diffopts list i.e.
exclude all present options from an initially complete set
compare list. When using
csh(1) you might have problems
with
! due to its strange parser. This is why the
not alias exists.
disable disables verbosity
all all information is given
toc displays the table of contents
summary displays a summary of recording parameters
indices invokes the index scanner and displays start positions of
indices
catalog retrieves and displays a media catalog number
trackid retrieves and displays international standard recording
codes
sectors displays track start positions in absolute sector notation
To combine several requests just list the suboptions separated with
commas.
The table of contents
The display will show the table of contents with number of tracks and
total time (displayed in
mm:
ss.
hh format,
mm=minutes,
ss=seconds,
hh=rounded 1/100 seconds). The following list displays track number
and track time for each entry. The summary gives a line per track
describing the type of the track.
track preemphasis copypermitted tracktype chans The
track column holds the track number.
preemphasis shows if that
track has been given a non linear frequency response. NOTE: You can
undo this effect with the
-T option.
copy-permitted indicates if
this track is allowed to copy.
tracktype can be data or audio. On
multimedia CDs (except hidden track CDs) both of them should be
present.
channels is defined for audio tracks only. There can be two
or four channels.
No file output
-N this debugging option switches off writing to a file.
No infofile generation
-H this option switches off creation of an info file and a cddb file.
Generation of simple output for gui frontends
-g this option switches on simple line formatting, which is needed to
support gui frontends (like xcd-roast).
Verbose SCSI logging
-V this option switches on logging of SCSI commands. This will
produce a lot of output (when SCSI devices are being used). This is
needed for debugging purposes. The format is the same as being used
with the cdrecord program, see
cdrecord(1) for more information.
Quiet option
-q suppresses all screen output except error messages. That reduces
cpu time resources.
Just show information option
-J does not write a file, it only prints information about the disc
(depending on the
-v option). This is just for information purposes.
CDDBP support Lookup album and track titles option
-L cddbp mode Cdda2wav tries to retrieve performer, album-, and
track titles from a cddbp server. The default server right now is
'freedb.freedb.org'. It is planned to have more control over the
server handling later. The parameter defines how multiple entries
are handled:
0 interactive mode, the user chooses one of the entries.
1 take the first entry without asking.
Set server for title lookups
cddbp-server servername When using -L or -cddb, the server being
contacted can be set with this option.
Set portnumber for title lookups
cddbp-port portnumber When using -L or -cddb, the server port being
contacted can be set with this option.
HINTS ON USAGE
Don't create samples you cannot read. First check your sample player
software and sound card hardware. I experienced problems with very
low sample rates (stereo <= 1575 Hz, mono <= 3675 Hz) when trying to
play them with standard WAV players for sound blaster (maybe they are
not legal in
WAV format). Most CD-Writers insist on audio samples in
a bigendian format. Now cdda2wav supports the
-E endianess option
to control the endianess of the written samples.
If your hardware is fast enough to run cdda2wav uninterrupted and
your CD drive is one of the 'perfect' ones, you will gain speed when
switching all overlap sampling off with the
-P 0 option. Further
fine tuning can be done with the
-n sectors option. You can specify
how much sectors should be requested in one go.
Cdda2wav supports
pipes. Use a filename of
- to let cdda2wav output
its samples to standard output.
Conversion to other sound formats is possible using the
sox program
package (it should no longer be necessary to use
sox -x to change the
byte order of samples; see option
-E to change the output byteorder).
If you want to sample more than one track into different files in one
run, this is currently possible with the
-B option. When recording
time exceeds the track limit a new file will be opened for the next
track.
FILES
Cdda2wav can generate a lot of files for various purposes.
Audio files: There are audio files containing samples with default extensions
.wav, .au, .aifc, .aiff, and .cdr according to the selected sound
format. These files are not generated when option (
-N) is given.
Multiple files may be written when the bulk copy option (
-B) is used.
Individual file names can be given as arguments. If the number of
file names given is sufficient to cover all included audio tracks,
the file names will be used verbatim. Otherwise, if there are less
file names than files needed to write the included tracks, the part
of the file name before the extension is extended with '_dd' where dd
represents the current track number.
Cddb and Cdindex files: If cdda2wav detects cd-extra or cd-text (album/track) title
information, then .cddb, .cdindex and .cdtext files are generated
unless suppressed by the option
-H. They contain suitable formatted
entries for submission to audio cd track title databases in the
Internet. The CDINDEX and CDDB(tm) systems are currently supported.
For more information please visit www.musicbrainz.org and
www.freedb.com.
Inf files: The inf files describe the sample files and the part of the audio cd
it was taken from. They are a means to transfer information to a cd
burning program like cdrecord. For example, if the original audio cd
had pre-emphasis enabled, and cdda2wav
-T did remove the pre-
emphasis, then the inf file has pre-emphasis not set (since the audio
file does not have it anymore), while the .cddb and the .cdindex have
pre-emphasis set as the original does.
WARNING
IMPORTANT: it is prohibited to sell copies of copyrighted material by
noncopyright holders. This program may not be used to circumvent
copyrights. The user acknowledges this constraint when using the
software.
BUGS
The index scanner may give timeouts.
The resampling (rate conversion code) uses polynomial interpolation,
which is not optimal.
Cdda2wav should use threads.
ACKNOWLEDGEMENTS
Thanks go to Project MODE (http://www.mode.net/) and Fraunhofer
Institut fuer integrierte Schaltungen (FhG-IIS)
(http://www.iis.fhg.de/) for financial support. Plextor Europe and
Ricoh Japan provided cdrom disk drives and cd burners which helped a
lot to develop this software. Rammi has helped a lot with the
debugging and showed a lot of stamina when hearing 100 times the
first 16 seconds of the first track of the Krupps CD. Libparanoia
contributed by Monty (Christopher Montgomery) xiphmont@mit.edu.
AUTHOR
Heiko Eissfeldt heiko@colossus.escape.de (1993-2004)
2004-today:
Joerg Schilling
Seestr. 110
D-13353 Berlin
Germany
DATE
2014/03/03
INTERFACE STABILITY
The interfaces provided by
cdda2wav are designed for long term
stability. As
cdda2wav depends on interfaces provided by the
underlying operating system, the stability of the interfaces offered
by
cdda2wav depends on the interface stability of the OS interfaces.
Modified interfaces in the OS may enforce modified interfaces in
cdda2wav.
Version 3.0 CDDA2WAV(1)