Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CDDA2WAV(1)		     Schily's USER COMMANDS		     CDDA2WAV(1)

NAME
     cdda2wav  -  dumps CD audio data into sound files with extra data verifica-
     tion

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 de-
     fault verbose level is set to -vtoc,summary,sectors,titles and cdda2wav  by
     default writes *.inf files.  To extract all audio tracks with quality veri-
     fication, 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 exam-
     ple  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  the
     SCSI CAM  standard  notation  for	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 sec-
     tion).

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 one 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 han-
	    dled.
	 +-----------+-----------------------------------------------------------+
	 | 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  in-
	    dicated  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 pur-
	    poses).  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 one	to  sup-
	    press 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 be-
	    come  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 differ-
	    ently 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 -interac-
	    tive 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= op-
	    tion below.

	    If the paranoia mode is used, cdda2wav displays some quality statis-
	    tics 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 ap-
		   pears for sectors-per-request sectors.   The  sectors-per-re-
		   quest 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 er-
		   rors.

	    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  sec-
		   tor	positioning  errors.   Increasing  the read ahead buffer
		   size may reduce the results from edge errors.

	    dup    Duplicated samples could be caused by sector positioning  er-
		   rors  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 over-
		   lap 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 rep-
		   resents 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 typi-
		   cally 200% because the paranoia code reads all data at  least
		   twice.  If  there is a lot of overlap and a lof of read prob-
		   lems, 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  one
		   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 fa-
		   vor 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)  com-
		   mand.

	    readahead=amount
		   Set	the  number of sectors to use for the read ahead buffer.
		   Except when at the end of the medium, libparanoia  never  re-
		   quests  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 or-
		   der to fill the read ahead buffer.  The default value used by
		   cdda2wav is 400, which is more than the 150 sectors that  cd-
		   paranoia(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 be-
		   low 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  hid-
		   den	tracks	when  the c2check mode is in effect.  If you en-
		   counter a drive where cdda2wav is  not  able  to  auto-detect
		   whether c2check is usable, please report.

		   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-request1 is more than 20, 20 is used as  mini-
		   mal 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 mini-
		   mal 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  dri-
		   ves	and  thus c2check was disabled by default.  Current ver-
		   sions of cdda2wav auto-detect whether the actual  drive  sup-
		   ports the c2check feature and use it if possible.

     -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 val-
	    ues 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 set-
	    ting 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 sys-
	    tem which is usually extremely bad. For this reason, avoid using pa-
	    rameters 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  lib-
	    scg  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 com-
	    puted by: bus * 100 + target

     scgopts=list
	    A comma separated list of SCSI options that are handled  by  libscg.
	    The  implemented  options may be updated independently from applica-
	    tions.  Currently, one option: ignore-resid  is  supported	to  work
	    around a Linux kernel bug.

     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  ap-
	    propriate  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 a CDROM drive to permit 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  ker-
		   nel.

	    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 de-
	    scriptor.  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 para-
	    meter descriptor specifies a UNIX file descriptor  number.	 By  de-
	    fault,  cdda2wav sends audio data to stdout if the output is not di-
	    rected 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

     uses a ring buffer with
	    -buffers-in-ring buffers buffers total.

ENVIRONMENT
     Some  defaults for cdda2wav are compiled in and depend on the Makefile oth-
     ers 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 con-
	    nection.

	    Note that this forces cdda2wav to create a pipe to the  rsh(1)  pro-
	    gram 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  initi-
	    ated 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 suc-
     cess:
 +----------+--------------------------------------------------------------------+
 | 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 (contain-
     ing 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 al-
     lows 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 prior-
     ities  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 sim-
     ply 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 sam-
     ple  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.   One  example
     for  a  SCSI  CDROM drive on bus 0 with SCSI ID 3 and lun 0 is The SCSI de-
     vices used with the generic SCSI interface however are addressed with their
     SCSI-Bus, SCSI-Id, and SCSI-Lun instead of the generic SCSI device descrip-
     tor.  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  de-
     vice (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 de-
     vices).  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 exam-
     ple. 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 speci-
     fies 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).  Se-
     lecting  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  (ig-
     noring  additional  information)  is 2352 Bytes. In order to finish summing
     for an output sample at sector boundaries the rates above have to	be  cho-
     sen.   Arbitrary sampling rates in high quality would require some interpo-
     lation 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 other-
     wise 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 du-
     ration (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  ig-
     nored.   Recording  time  is not reduced.	(To skip introductory quiet pas-
     sages automagically, use the -w option see below.)

   Wait for signal option
     -w Turning on this option will suppress all silent output at  startup,  re-
     ducing  possibly file size.  cdda2wav will watch for any signal in the out-
     put signal and switches on writing to file.

   Find extreme samples
     -F Turning on this option will display the most negative and the most posi-
     tive 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 com-
     pared. 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 cor-
     rection  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 op-
     tion is given, the index scanner will be started, which  reads  the  q-sub-
     channel  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 sam-
     ples 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 com-
     patible 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  loga-
     rithmically  coded  .au files, but instead as mentioned above linear PCM is
     used. The byte order is msb,lsb to be compatible. The default filename  ex-
     tension  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  com-
     pression 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 sound-
     card or similar. The default filename extension is '.cdr' or '.raw'.

   Select cdrom drive reading speed
     -S   speed allows one 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 li-
     brary 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  in-
     creased  overlap.	 If the amount of jitter is lower than the current over-
     lapped 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  set-
     ting  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  re-
     quest.

   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.  En-
     dianess can be set explicitly to "little", "big" or "machine" or to the au-
     tomatic 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.  ex-
	       clude  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  al-
     lowed  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 sup-
     port 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 de-
     bugging 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  (de-
     pending 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 ti-
     tles  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  con-
     tacted can be set with this option.

HINTS ON USAGE
     Don't  create samples you cannot read. First check your sample player soft-
     ware 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 re-
     quested 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.mu-
     sicbrainz.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 pro-
     gram 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 non-
     copyright 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.

     Mail other bugs and suggestions to schilytools@mlists.in-berlin.de or  open
     a ticket at https://codeberg.org/schilytools/schilytools/issues.

     The mailing list archive may be found at:

     https://mlists.in-berlin.de/mailman/listinfo/schilytools-mlists.in-berlin.de.

ACKNOWLEDGEMENTS
     Thanks  go  to  Project MODE (http://www.mode.net/) and Fraunhofer Institut
     fuer integrierte Schaltungen (FhG-IIS) (http://www.iis.fhg.de/) for  finan-
     cial  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.   Lib-
     paranoia contributed by Monty (Christopher Montgomery) xiphmont@mit.edu.

AUTHORS
     Heiko Eissfeldt heiko@colossus.escape.de (1993-2004,2015)

     Joerg Schilling (2004-2022)

     cdda2wav is now maintained by the schilytools project authors.

SOURCE DOWNLOAD
     The source code for cdda2wav is included in the schilytools project and may
     be retrieved from the schilytools project at Codeberg at

     https://codeberg.org/schilytools/schilytools.

     The download directory is

     https://codeberg.org/schilytools/schilytools/releases.

INTERFACE STABILITY
     cdda2wav  are designed for long term stability.  As cdda2wav depends on in-
     terfaces 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.

Joerg Schilling 		   2022/09/11			     CDDA2WAV(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=cdda2wav&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help