CRIPPLE(1)

NAME
cripple - command line CD ripper/encoder wrapper with cddb support

SYNOPSIS
cripple [ options ]...

DESCRIPTION
cripple is a basic CD ripper that as it comes uses CDparanoia/cdda2wav and BladeEnc/LAME to rip and encode tracks from a CD. The useful things it can do are querying the freedb (http://www,freedb.org) for information on a CD by HTTP requests (optionally via a proxy). It also writes ID3v1.1 tags to the MP3 files it makes. Without any options cripple will read the table of contents of the CD in the default CDROM drive, query the default freedb server for information and then rip + encode all audio tracks on the CD to the current directory using the default ripper and encoder with default options. Encoded files produced by cripple have names of the form,

    Artist - Album - Track no. - Track Name.extension

or for compilations,

    Album - Track no. - Artist - Track Name.extension

(a compilation is denoted by the CDDB disc artist set to "Various")

OPTIONS

-a --ripper-opts opts
    pass command line options to ripper in place of defaults. Note that device, speed and track number specification are done separately. Have a look at output from -r to see how options are used.

-c --comment text
    copy text (<= 28 chars) to the comment field of each ID3 tag

-C --capitalise none|simple|clever|lower|upper
    how to capitalise name fields. default is none. none leave alone. simple first letter of each 'word' is upper. clever as above, but lower certain words. lower lower all characters. upper upper all characters. This is a matter of personal preference, freedb entries are supposed to be capitalised, but that's not allways the case. clever is good for plain english names.

-d --device dev
    use device file dev rather than compiled-in default (usually /dev/cdrom). Note for SCSI drives this is the CDROM ioctl device (e.g. /dev/srN, /dev/scdN) rather than the SCSI generic device (e.g. /dev/sgN). On win32 both full (e.g. \\.\D:) and short (e.g. D:) forms are accepted. default is the lowest-letter CDROM drive found.

-D --readdata
    read data tracks (mode2 only) to files with .bin extension. frames are stripped to 2048 bytes. works OK for CD-Extra data tracks, but pretty useless otherwise.

-e --eject
    eject CD when done.

-E --encoder bladeenc|lame|flac
    encoder to use. options set with -O. default is lame.

-F --fat
    convert certain characters (\:*?"<>|) in filenames to '_', as these characters are not allowed on FAT filesystems. May also be needed on NTFS. If you get strange errors when writing files with these characters in their name then try using this. This is enabled by default on win32.

-h --help
    brief help.

-i --infile file
    read cddb info from file rather than querying server.

-o --outfile file
    write server response to file for debugging or later use with -i.

-O --encoder-opts opts
    pass command line options to encoder in place of defaults. Mostly useful for setting bitrate/quality. Note that file handling options are done separately. Have a look at output from -r to see how options are used.

-p --path path
    where to rip to.

-q --justquery
    cddb query only - use for testing or saving response for ripping latter (see -i, -o).

-r --norip
    only pretend to rip - don't actually make system() call or try tagging files.

-R --ripper cdparanoia|cd-paranoia|cdda2wav
    ripper to use. default is cdparanoia (cd-paranoia on win32).

-s --server host:port/cgi_path
    use host instead of compiled-in default http server. port and cgi_path are optional.

-S --speed n
    set cd drive speed to n. also pass speed to ripper. 0 gives maximum speed (on linux at least).

-t --tracks m[,n]
    rip from track m to track n. default is whole disc. (',' is any non-number)

-T --toc
    print a representation of the CD Table Of Contents and discid, then exit. useful for testing/debuging.

-w --blankfile file
    write blank xmcd format file for CD so you can manually fill in fields (for use with -i or submission to the freedb).

-x --proxy host:port
    use http proxy, port must be given. This overrides any compiled in proxy setting. A null string will disable any compiled in proxy.

FILENAME SUBSTITUTIONS
in filenames following -i|o|w options, the following will be converted:

%d -->
    discid in "%08lx" format. This is just to save effort when getting info for several CDs prior to ripping them.

%% -->
    literal '%'

"-" will use stdin (-i) or stdout (-o|w).

EXAMPLES
query freedb for data then if all is well, rip all tracks with default ripper/encoder at default quality to /music:

    cripple -p /music

query freedb for data and copy it to cd_info. Later on, rip disc with default settings using saved info:

    cripple -qo cd_info
     ... cripple -i cd_info

query a load of discs, saving their info to files named with their discids, later rip them all in any order:

    cripple -qo %d /* repeat for each cd */
     ...

    cripple -i %d /* repeat for each cd */

If you don't like any of the information it retrieves, you can just edit the xmcd file produced by the -o option. A complicated example:

    cripple --encoder=bladeenc --encoder-opts=-128 -ep /music -S 8 --server=uk.freedb.org --proxy=webcache.mydomain:1234 --capitalise=clever --ripper=cdda2wav

set drive speed to 8. query uk.freedb.org via webcache.mydomain:1234. Capitalise all track/artist/album names with 'clever' algorithm. use cdda2wav and bladeenc to produce stereo 128kb/s MP3 files of all audio tracks on CD, writing them in directory /music. eject CD tray after successful rip. You can preset most of these options at compile time.

DEVICE FILES
I only have experience with linux, but some of the following may be applicable on other systems too. The linux kernel can be configured to support just about any CD drive trough the Uniform CD-ROM driver (see <linux/cdrom.h>, linux/Documentation/cdrom/cdrom-standard.tex, linux/drivers/cdrom/*). I think most other OSes do a similar thing, presenting loads of differnt drives through a single API. This makes most common tasks very simple and hence it is the interface used by programs such as audio cd players and the like. However the unreliable nature of digital audio extraction means that great benefits in error detection, correction and speed can be gained by using the drive directly, bypassing the uniform driver layer. Linux only supports this for SCSI devices, which can use the SCSI Generic (/dev/sgN) interface. Drives on most other busses (ATAPI, USB...) can be configured as SCSI devices by using an appropriate SCSI adapter emulation (e.g. ide-scsi for ATAPI). SCSI devices will then be accessible by 2 device files, the uniform CD-ROM interface e.g. /dev/srN or /dev/scdN (assuming the kernel has been told to use it), and the generic device e.g. /dev/sgN. cripple uses only the uniform CD-ROM device (often misleadingly referred to as the ioctl device), and this is also what it passes to the ripper. If the device is configured as an IDE device then cdparanoia will use the uniform interface, which is not ideal. If the device is configured as a SCSI device then cdparanoia will determine the associated SCSI generic device and use that. This means that for SCSI drives a user must have permissions to access both the cdrom device and the corresponding sg device.

BUGS
user should be able to select database entry to use when there are multiple matches. only tested on linux and cygwin -- may not work on other OSes.

SEE ALSO
lame(1), cdda2wav(1), cdparanoia(1), cd-paranoia(1), flac(1), http://www.freedb.org