cdparanoia - Use your CDROM drive to read audio tracks.... and have it actually work right!

mail

cdparanoia

Usage

cdparanoia extracts audio from compact discs directly as data, with no analog step between, and writes the data to a file or pipe in WAV, AIFC, or raw 16 bit linear PCM. It is used internally by common audio CD rippers and it's pretty unlikely you'll have to use it directly : those rippers do the job perfectly out-of-the-box.
Then someday you find old CDs in a box forgotten in your parents' attic. So many souvenirs !!! But how are you going to play those tunes from the past since you have no CD player anymore ? A solution is to convert everything to MP3 (and enjoy nostalgia ).

This is when the said rippers come into action, which usually works just fine... except for burned CDs. The default reading / error correction options are not always enough and you'll have to "go manual".

FAQ :

Flags

Flag Usage
-B --batch
  • batch processing : split the output into multiple files at track boundaries. Output file names are prepended with track#.
  • if no span is specified, extracts all tracks
-Q --query Perform CDROM drive auto-sense, Query and print the CDROM table of contents, then quit
-w --output-wav Output data in Micro$oft RIFF WAV (this the default output format and may be omitted)

Example

Analyze an audio CD :

cdparanoia -Q
cdparanoia III release 10.2 (September 11, 2008)

Table of contents (audio tracks only):
track        length               begin        copy pre ch
===========================================================
  1.     7943 [01:45.68]        0 [00:00.00]    no   no  2
  2.    14722 [03:16.22]     7943 [01:45.68]    no   no  2		note the 'begin' value : 7943
  3.     7426 [01:39.01]    22665 [05:02.15]    no   no  2
  4.    14792 [03:17.17]    30091 [06:41.16]    no   no  2
  5.    11785 [02:37.10]    44883 [09:58.33]    no   no  2
  6.    12200 [02:42.50]    56668 [12:35.43]    no   no  2
  7.     8849 [01:57.74]    68868 [15:18.18]    no   no  2
  8.    10173 [02:15.48]    77717 [17:16.17]    no   no  2
  9.    12773 [02:50.23]    87890 [19:31.65]    no   no  2
 10.    14311 [03:10.61]   100663 [22:22.13]    no   no  2
 11.    14961 [03:19.36]   114974 [25:32.74]    no   no  2
 12.    14685 [03:15.60]   129935 [28:52.35]    no   no  2
 13.    10183 [02:15.58]   144620 [32:08.20]    no   no  2
 14.    13443 [02:59.18]   154803 [34:24.03]    no   no  2
 15.     7462 [01:39.37]   168246 [37:23.21]    no   no  2
 16.    14718 [03:16.18]   175708 [39:02.58]    no   no  2
 17.     5433 [01:12.33]   190426 [42:19.01]    no   no  2
 18.    18690 [04:09.15]   195859 [43:31.34]    no   no  2
 19.    10679 [02:22.29]   214549 [47:40.49]    no   no  2
 20.    13875 [03:05.00]   225228 [50:03.03]    no   no  2
 21.    10419 [02:18.69]   239103 [53:08.03]    no   no  2
 22.     6453 [01:26.03]   249522 [55:26.72]    no   no  2
TOTAL  255975 [56:53.00]    (audio only)

Extract audio tracks as wav :

Single track

cdparanoia 1 -w fileName.wav

Range of tracks

cdparanoia -B 1-3
  • without -B, the extracted tracks would be saved in a single file
  • -w is implicit

Rip full disk

  • cdparanoia -B
  • cdparanoia 1-22 -w whatever -B
  • both commands are equivalent
  • the 2nd one uselessly specifies
    • the tracks span : with -B, all tracks are extracted
    • the output format : -w, this is the default
  • whatever is an output file name pattern, but is not an argument for -w
cdparanoia III release 10.2 (September 11, 2008)

Ripping from sector       0 (track  1 [0:00.00])
	  to sector  255974 (track 22 [1:26.02])

outputting to track01.whatever
 (== PROGRESS == [                              | 007942 00 ] == :^D * ==)		7942 matches the sector number seen earlier 

outputting to track02.whatever
 (== PROGRESS == [                              | 022664 00 ] == :^D * ==)

outputting to track03.whatever
 (== PROGRESS == [                              | 030090 00 ] == :^D * ==)

outputting to track04.whatever
 (== PROGRESS == [                              | 044882 00 ] == :^D * ==)

outputting to track05.whatever
 (== PROGRESS == [                              | 056667 00 ] == :^D * ==)

outputting to track06.whatever
 (== PROGRESS == [                              | 068867 00 ] == :^D * ==)

outputting to track07.whatever
 (== PROGRESS == [                              | 077716 00 ] == :^D * ==)

Convert extracted files to MP3 :

Do it with LAME.