abcde - Grab an entire CD and compress it to Ogg or MP3 format.


abcde [options] [tracks]


Ordinarily, the process of grabbing the data off a CD and encoding it, then tagging or commenting it, is very involved. abcde is designed to automate this. It will take an entire CD and convert it into a compressed audio format - Ogg Vorbis or MPEG Audio Layer III. With one command, it will:
Do a CDDB query over the Internet to look up your CD
Grab a track from your CD
Compress it to Ogg or MP3 format
Comment or ID3 tag it
Give it an intelligible filename
Delete the intermediate WAV file
Repeat until finished


-a [actions]
Comma-delimited list of actions to perform. Can be one or more of: cddb, read, encode, tag, move, playlist, clean. Encode implies read. Tag implies cddb, read, encode. Move implies cddb, read, encode, tag. Playlist implies cddb. The default is to do all actions except playlist.
-c [filename]
Specifies an additional configuration file to parse. Configuration options in this file override those in /etc/abcde.conf or $HOME/.abcde.conf.
-C [discid]
Allows you to resume a session for discid when you no longer have the CD available (abcde will automatically resume if you still have the CD in the drive). You must have already finished at least the "read" action during the previous session.
-d [devicename]
CD-ROM block device that contains audio tracks to be read.
Capture debugging information (you'll want to redirect this - try 'abcde -D 2>logfile')
-j [number]
Start [number] encoder processes at once. Useful for SMP systems. Overrides the MAXPROCS configuration variable.
Use the low-diskspace algorithm. See the LOWDISK configuration variable.
-o [filetype]
Select output type. Can be either "ogg" or "mp3". See the OUTPUTTYPE configuration variable.
-r [hosts...]
Remote encode on this comma-delimited list of machines using distmp3. See the REMOTEHOSTS configuration variable.
Eject the CD when all tracks have been read. See the EJECTCD configuration variable.
Get help information.
A list of tracks you want abcde to process. If this isn't specified, abcde will process the entire CD. Accepts ranges of track numbers - "abcde 1-5 7 9" will process tracks 1, 2, 3, 4, 5, 7, and 9.


Each track is, by default, placed in a separate file named after the track in a subdirectory named after the artist under the current directory. Each file is given an extension identifying its compression format, '.ogg' or '.mp3'. This can be modified using the OUTPUTFORMAT and VAOUTPUTFORMAT variables in your abcde.conf.


abcde sources two configuration files on startup - /etc/abcde.conf and $HOME/.abcde.conf, in that order. Here is a list of options abcde recognizes:
Specifies a server to use for CDDB lookups.
Specifies the style of encoder to use. Valid options are 'oggenc' (default for Ogg Vorbis), 'vorbize', 'lame' (default for MP3), 'gogo', 'bladeenc', 'l3enc', and 'mp3enc'. This affects the default location of the binary, the variable to pick encoder command-line options from, and where the options are given.
Specifies the Hello information to send to the CDDB server. The CDDB protocol requires you to send a valid username and hostname each time you connect. The format of this is username@hostname.
Specifies the directory to place completed tracks/playlists in.
Specifies the temporary directory to store .wav files in. Abcde may use up to 700MB of temporary space for each session (although it is rare to use over 100MB for a machine that can encode music as fast as it can read it).
Specifies the format for completed Ogg or MP3 filenames. Variables are included using standard shell syntax. Allowed variables are ALBUMFILE, ARTISTFILE, TRACKFILE, and TRACKNUM. Default is '${ARTISTFILE}/${TRACKFILE}.${OUTPUTTYPE}'. Make sure to use single quotes around this variable. TRACKNUM is automatically zero-padded.
Specifies the encoding format to output as well as the default extension and encoder. Defaults to "ogg". Valid settings are "ogg" (Ogg Vorbis) and "mp3" (MPEG-1 Audio Layer 3).
Just like OUTPUTFORMAT but for Various Artists discs. Default is whatever OUTPUTFORMAT is set to.
The following configuration file options specify the pathnames of their respective utilities: LAME, GOGO, BLADEENC, L3ENC, XINGMP3ENC, MP3ENC, VORBIZE, OGGENC, ID3, ID3V2, CDPARANOIA, CDDA2WAV, WGET, CDDISCID, CDDBTOOL, EJECT, DISTMP3, and VORBISCOMMENT.
If you wish to specify command-line options to any of the programs abcde uses, set the following configuration file options: LAMEOPTS, GOGOOPTS, BLADEENCOPTS, L3ENCOPTS, XINGMP3ENCOPTS, MP3ENCOPTS, VORBIZEOPTS, OGGENCOPTS, ID3OPTS, ID3V2OPTS, CDPARANOIAOPTS, CDDA2WAVOPTS, WGETOPTS, CDDBTOOLOPTS, EJECTOPTS, and DISTMP3OPTS.
Defines how many encoders to run at once. This makes for huge speedups on SMP systems. You should run one encoder per CPU at once for maximum efficiency, although more doesn't hurt very much.
If set to y, conserves disk space by encoding tracks immediately after reading them. This is substantially slower than normal operation but requires several hundred MB less space to complete the encoding of an entire CD. Use only if your system is low on space and cannot encode as quickly as it can read.
Specifies the format for completed playlist filenames. Works like the OUTPUTFORMAT configuration variable. Default is '${ARTISTFILE}_-_${ALBUMFILE}.m3u'. Make sure to use single quotes around this variable.
Specifies a prefix for filenames within a playlist. Useful for http playlists, etc.
Specifies a comment to embed in the ID3 or Ogg comment field of each finished track. Can be up to 28 characters long. Supports the same syntax as OUTPUTFORMAT. Does not currently support ID3v2.
Specifies a comma-delimited list of systems to use for remote encoding using distmp3. Equivalent to -r.
mungefilename() is an abcde shell function that can be overridden via abcde.conf. It takes CDDB data as $1 and outputs the resulting filename on stdout. It defaults to eating control characters, apostrophes and question marks, translating spaces and forward slashes to underscores, and translating colons to an underscore and a hyphen.
If you modify this function, it is probably a good idea to keep the forward slash munging (UNIX cannot store a file with a '/' char in it) as well as the control character munging (NULs can't be in a filename either, and newlines and such in filenames are typically not desirable).
If set to "y", abcde will call eject(1) to eject the cdrom from the drive after all tracks have been read.


abcde requires the following backend tools to work:
An Ogg or MP3 Encoder (oggenc, vorbize, lame, gogo, bladeenc, l3enc, mp3enc)
An audio CD reading utility (cdparanoia, cdda2wav)
cd-discid, a CDDB DiscID reading program.
wget, an HTTP retrieval program.
(for MP3s) id3, an id3 tagging program.
(optional) distmp3, a client/server for distributed mp3 encoding.


cdparanoia(1), cdda2wav(1), oggenc(1), vorbize(1), id3(1), wget(1), cd-discid(1), distmp3(1), distmp3host(1)


Robert Woodcock <>