CD Ripping!

By Jason Wojciechowski on January 17, 2005 at 5:17 PM

Windows users aren't going to care too much about this post. Since I got my Xclef, I've needed to rip my CDs to Oggs so that I might actually have something to put on the player. Unfortunately, the ripping was not cooperating until, I believe, last night. What was happening is Oggs were being created that seemed to be an appropriate file size but had no apparent data in them: they sounded like a bunch of hisses and clicks.

I quickly realized that the problem was not in the Ogg creation, but in the ripping of the audio CD to Wav format, because the Wav files were even emptier: they produced no sound whatsoever. A look at a Wav file in most was enlightening: it contained 0 upon 0 upon 0. Sixty megabytes of zeros! No wonder there was no meaningful sound created. (This did make me wonder, though, about the sound integrity of compressing audio files: how did a bunch of zeros get turned into hisses and clicks?)

I tried restarting the computer (to get the process table into something of a virgin state), but that didn't really work. I tried a different ripper (cdd2wav instead of cdparanoia). I looked at different versions of the rippers (though I never actually tested a new version).

Finally, on cdparanoia's website, I found a hint. Maybe I should try enabling ide-scsi emulation. Last night, I recompiled my kernel (again - it's like my ninth recompile of the last two days, for a variety of reasons) with ide-scsi and without ATAPI CDROM support, added the appropriate boot parameter (EDIT: That appropriate boot parameter is append="hdd=ide-scsi" in the menu.lst file for grub, at least in my case; for you, it might be hda, hdb, or hdc.), and restarted. Lo and behold, my computer is currently ripping its third consecutive CD successfully. Full Xclef, here I come!

Details:

  • Compiled ide-scsi as a module in a 2.6.7 kernel (Device Drivers -> ATA/ATAPI/MFM/RLL support -> SCSI emulation support)
  • Compiled sr-mod as a module (Device Drivers -> SCSI device support -> SCSI CDROM support)
  • Compiled sg as a module (Device Drivers -> SCSI device support -> SCSI generic support)
  • Deselected ATAPI CDROM support (Device Drivers -> ATA/ATAPI/MFM/RLL support -> Include IDE/ATAPI CDROM support)
  • Pointed the /dev/cdrom symlink to /dev/scd0
  • In Grip (my ripper of choice), put Generic SCSI device as /dev/sg0 (Config tab -> Rip tab -> Ripper tab -> Generic SCSI device) (EDIT: Putting /dev/cdrom here, after creating the link, also seems to work. For some strange reason, I don't recall having /dev/scd0 there working, and I'm loathe to play too much - it's so delicate!)