NAME

     cdda2wav - a sampling utility that dumps CD audio data  into
     wav sound files


SYNOPSIS

     cdda2wav [-c chans]  [-s]  [-m]  [-b  bits]  [-r  rate]  [-a
     divider]  [-t  track[+endtrack]]  [-i index] [-o offset] [-d
     duration] [-x] [-q] [-w] [-v] [-V] [-Q] [-J] [-R]  [-P  sec-
     tors]  [-F]  [-G] [-T] [-e] [-p percentage] [-n sectors] [-l
     buffers] [-N] [-J] [-H] [-g] [-B] [-D device] [-A auxdevice]
     [-I  interface]  [-O  audiotype]  [-C  input-endianess]  [-E
     output-endianess] [-M count] [-S speed] [audio.wav]


DESCRIPTION

     cdda2wav can retrieve audio tracks from  CDROM  drives  (see
     README  for  a  list  of drives) that are capable of reading
     audio data digitally to the host (CDDA).


OPTIONS

     -D device  --device
          uses device as the source for CDDA reading:  For  exam-
          ple  /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 (see
          below).   The  setting  of  the  environment   variable
          CDDA_DEVICE is overridden by this option.

     -A auxdevice  --auxdevice
          uses auxdevice as CDROM drive for ioctl usage.

     -I interface  --interface
          specifies the interface for CDROM access:  generic_scsi
          or (on Linux, and FreeBSD systems) cooked_ioctl.

     -c channels  --channels
          uses 1 for mono, or 2 for stereo recording,  or  s  for
          stereo recording with both channels swapped.

     -s  --stereo
          sets to stereo recording.

     -m  --mono
          sets to mono recording.

     -x  --max
          sets maximum (CD) quality.

     -b bits  --bits-per-sample
          sets bits per sample per channel:  8, 12 or 16.

     -r rate  --rate
          sets rate in samples per second.  Possible  values  are
          listed with the -R option.

     -a divider  --divider
          sets rate to 44100Hz / divider.   Possible  values  are
          listed with the -R option.

     -R  --dump-rates
          shows a list of all sample rates and their dividers.

     -P  sectors  --set-overlap
          sets the initial number of overlap sectors  for  jitter
          correction.

     -n sectors  --sectors-per-request
          reads sectors per request.

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

     -t track+endtrack  --track
          selects the start track and optionally the end track.

     -i index  --index
          selects the start index.

     -o offset  --offset
          starts offset sectors behind start  track  (one  sector
          equivalents 1/75 seconds).

     -O  audiotype  --output-format
          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).

     -C endianess  --cdrom-endianess
          sets endianess of the input samples to 'little',  'big'
          or 'guess' to override defaults.

     -E endianess  --output-endianess
          sets endianess of the output  samples  to  'little'  or
          'big' to override defaults.

     -d duration  --duration
          sets recording time in seconds or frames.  Frames (sec-
          tors)  are  indicated  by a 'f' suffix (like 75f for 75
          sectors).  0 sets the time for whole track.

     -B  --bulk
          copies each track into a seperate file.

     -w  --wait
          waits for signal, then start recording.

     -F  --find-extremes
          finds extrem amplitudes in samples.

     -G  --find-mono
          finds if input samples are in mono.

     -T  --deemphasize
          undo the effect of pre-emphasis in the input samples.

     -e  --echo
          copies audio data to sound device e.g.  /dev/dsp.

     -p  percentage --set-pitch
          changes pitch of audio data copied to sound device.

     -v  level  --verbose-level
          prints verbose information about the CD.   Level  is  a
          sum  of  powers  of  two  in the range 0 up to 63. Each
          power of two controls the type  of  information  to  be
          reported.
8 _________________________________________________________________________





























      Power   Description
8     _________________________________________________________________________
          1   show table of contents
          2   show a summary of the recording parameters
          4   determine and display index offsets
          8   retrieve and display the media catalog number MCN
         16   retrieve and display all Intern. Standard Recording Codes ISRC
         32   show the table of contents in start sector notation
         64   show the table of contents with track titles (when available)
8     _________________________________________________________________________

799 9999999999999999999999999|


77777777777777899 9999999999999999999999999|


77777777777777899 9999999999999999999999999|


77777777777777899 9999999999999999999999999|


7777777777778 -N --no-write

          does not write to a file, it just reads (for  debugging
          purposes).

     -J  --info-only
          does not write to a file,  it  just  gives  information
          about the disc.

     -H  --no-infofile
          does not write an info file and a cddb file.

     -g  --gui
          formats the output to be better parsable by  gui  fron-
          tends.

     -M  count --md5
          enables calculation of MD-5 checksum for 'count'  bytes
          from a beginning of a track.

     -S  speed --speed-select
          sets the cdrom device to one of the  selectable  speeds
          for reading.

     -q  --quiet
          quiet operation, no screen output.

     -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.

     -J  --version
          display version of cdda2wav on standard output.

     Defaults depend on the

User Commands                                         CDDA2WAV(1)




ENVIRONMENT VARIABLES

     CDDA_DEVICE is used to set the device name. The device  nam-
     ing is compatible with Jörg Schilling's cdrecord package.


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  dev-
     ice.

     cdda2wav stands for CDDA to WAV (where CDDA stands for  com-
     pact  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 on your ram-, hard-,
     floppy- or whatever-disk in WAV or other formats.

     The latest versions 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.
     Please note that you need newer kernels and c  libraries  to
     take advantage of this feature.

     If your CDROM  (not  yet  for  SCSI  drives)  is  on  device
     /dev/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 lim-
     ited. SCSI drives have to use different devices  (see  files
     README and README.INSTALL for details).


HINTS ON OPTIONS

     Options
          Most of the options are used to control the  format  of
          the  WAV  file.  In  the following text all of them are
          described.

     Select Device
          -D device selects the CDROM drive device  to  be  used.
          The  specifier  given should correspond to the selected
          interface (see below).  CHANGE!  For  the  cooked_ioctl
          interface  this  is  the  cdrom  device  descriptor  as
          before.  The SCSI devices used with the addressed  with
          their  SCSI-Bus, SCSI-Id, and SCSI device descriptor!!!
          One example for a SCSI CDROM drive on bus 0  with  SCSI
          ID 3 and lun 0 is -D0,3,0.

User Commands                                         CDDA2WAV(1)



          CDROM  drive (SCSI) device (i.e. /dev/sr0 ) correspond-
          ing 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  interface.  For
          SCSI  drives use generic_scsi (cooked_ioctl may not yet
          be  available  for  all  devices):   generic_scsi   and
          cooked_ioctl.   The  first uses the generic SCSI inter-
          face, 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 crit-
          ical,  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.  This  feature  reduces  the
          recording  speed  to  at most onefold speed. You cannot
          make better recordings than your sound  card  can  play
          (since the same data is used).

     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
          (doubles file size). 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

User Commands                                         CDDA2WAV(1)



          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  sam-
          ples, so they waste some disk space.

     Select sample rate
          -r samplerate selects a sample rate.  samplerate can be
          in  a  range between 44100 and 900. Option -R lists all
          available rates.

     Select sample rate divider
          -a divider selects a sample rate divider.  divider  can
          be  minimally  1  and  maximally  50.5  and  everything
          between 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 infor-
          mation) is 2352 Bytes. In order to finish  summing  for
          an  output  sample at sector boundaries the rates above
          have to be choosen.  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).

User Commands                                         CDDA2WAV(1)



          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 a complete audio CD in one go in different files
          -B copies each track into a seperate 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 sec-
          tors.   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 out-
          put  at startup, reducing possibly file size.  cdda2wav
          will watch for any signal  in  the  output  signal  and
          switches on writing to file.

     Find extrem samples
          -F Turning on this option will display the  most  nega-
          tive  and  the  most positive sample value found during
          recording for both channels. This  can  be  useful  for

User Commands                                         CDDA2WAV(1)



          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 as being 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  compati-
          ble. 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 'for-
          mat', 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  identi-
          fied by playing the samples on a soundcard or similiar.
          The default filename extension is '.cdr' or '.raw'.

     Select cdrom drive reading speed
          -S  speed allows to switch the cdrom drive to a certain

User Commands                                         CDDA2WAV(1)



          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.

     Do linear or overlapping reading of sectors
          -P  sectors sets the given number of sectors  for  ini-
          tial  overlap sampling for jitter correction. Two cases
          are to be distinguished. For nonzero values, some  sec-
          tors are read twice to enable cdda2wav's jitter correc-
          tion.  If an argument of zero is given, no overlap sam-
          pling  will  be  used.   For  nonzero  overlap  sectors
          cdda2wav dynamically adjusts the  setting  during  sam-
          pling  (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  over-
          lap  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 oth-
          erwise.   The  case of zero sectors is nice on low load
          situations or errorfree (perfect) cdrom drives and per-
          fect (not scratched) 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 "lit-
          tle" or "big" or to the automatic  endianess  detection
          based on voting with "guess".

     Set endianess of output samples
          -E  endianess (endianess can be "little" or "big") will
          override the default settings of the output format.

     Verbose option
          -v  level prints more information. A binary mask allows
          selection of different information.

User Commands                                         CDDA2WAV(1)



          2 displays a summary of recording parameters

          4 invokes the index scanner and  displays  start  posi-
          tions of indices

          8 retrieves and displays a media catalog number

          16  retrieves  and  displays   international   standard
          recording codes

          32 displays track start positions  in  absolute  sector
          notation

          To combine several requests just add  the  numbers  and
          give the sum as argument.

     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 fre-
          quency 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).

User Commands                                         CDDA2WAV(1)



          purposes. The format is the same as being used with the
          cdrecord package  from  Jörg  Schilling.   I  will  not
          describe it here.

     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.


HINTS ON USAGE

     Don't create samples you cannot read. First check your  sam-
     ple  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 bigen-
     dian 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  uninter-
     rupted  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 now. Use a  filename  of  -  to  let
     cdda2wav output its samples to standard output.

     Conversion to other sound formats can be done using the  sox
     program  package  (although  the use of sox -x to change the
     byte order of samples  should  be  no  more  necessary;  see
     option -E to change the output byteorder).

     If you really want to sample more than one track  into  dif-
     ferent 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:

User Commands                                         CDDA2WAV(1)



     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  and  .cdindex 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.cdindex.org and www.cddb.com.

     Inf files:

     The inf files are describing the sample files and  the  part
     from  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-emphase,  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-emphase 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

     Performance may not be optimal on slower systems.

     The index scanner may give timeouts.

     The resampling (rate conversion code) uses polynomial inter-
     polation, which is not optimal.

     Cdda2wav should use threads.

     Cdda2wav currently cannot sample hidden audio tracks  (track
     1 index 0).


ACKNOWLEDGEMENTS

User Commands                                         CDDA2WAV(1)



     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.  Paranoia patches contributed
     by Monty xiphmont@mit.edu.


AUTHOR

     Heiko Eissfeldt heiko@colossus.escape.de


DATE

     11 Feb 2000


Man(1) output converted with man2html


GMD GMD Homepage GMD FOKUS FOKUS Homepage Schily Schily's Homepage VED powered