abcde(1)

πŸ“¦
version 2.9.3 Β· 2 versions
  • 2.9.3 Β· alpine 3.24, debian bookworm, debian trixie, nixos 26.05, nixpkgs unstable, opensuse-leap 16.0, ubuntu jammy, ubuntu noble, ubuntu resolute, ubuntu stonking (latest)
  • 2.9.3 Β· fedora 43, fedora 44
, in alpine 3.24, debian bookworm, debian trixie, nixos 26.05, nixpkgs unstable, opensuse-leap 16.0, ubuntu jammy, ubuntu noble, ubuntu resolute, ubuntu stonking

πŸ’– abcde ✨

manual section 1 · General Commands · part 1 of 3 🌸


✨ NAME ✨

abcde - Grab an entire CD and compress it to Ogg/Vorbis, MP3, FLAC, Ogg/Speex, AAC, WavPack, Monkey's Audio (ape), MPP/MP+(Musepack), True Audio (tta), MP2 format and/or AIFF (Audio Interchange File Format). πŸŽ€


✨ SYNOPSIS ✨

abcde [options] [tracks]

✨ DESCRIPTION ✨

okay so normally, grabbing the data off a CD, encoding it, and then tagging or commenting every track is so involved 😭 that's literally why abcde exists. it automates the whole thing and will take an entire CD and convert it into a compressed audio format like Ogg/Vorbis, MPEG Audio Layer III (MP3), Free Lossless Audio Codec (FLAC), Ogg/Speex, MPP/MP+(Musepack), M4A (AAC), wv (WavPack), Monkey's Audio (ape), Opus, True Audio (tta), MPEG Audio Layer II (MP2) or AIFF (Audio Interchange File Format) format(s). ✨ with one command, it does all of this for you:

  • Does a CDDB or Musicbrainz query over the Internet to look up your CD, or uses a locally stored CDDB entry, or reads CD-TEXT from your CD if it's available πŸ’Ώ
  • Downloads the album art that matches your music tracks, with lots of user-configurable options for downloading and post-download alterations, including automated embedding of the album art for some containers πŸ–ΌοΈ
  • Grabs an audio track (or all the audio CD tracks) from your CD 🎡
  • Normalizes the volume of the individual file (or the album as a single unit) πŸ”Š
  • Compresses to Ogg/Vorbis, MP3, FLAC, Ogg/Speex, MPP/MP+(Musepack), M4A, wv (WavPack), Monkey's Audio (ape), Opus format(s), True Audio (tta), MP2 or AIFF (Audio Interchange File Format), all in one CD read πŸ”₯
  • Adds comments or ID3/ID3v2 tags 🏷️
  • Gives every track an intelligible filename πŸ“
  • Calculates replaygain values for the individual file (or the album as a single unit) πŸ“Š
  • Deletes the intermediate WAV file (or saves it for later use) πŸ—‘οΈ
  • Repeats until it's finished πŸ”

alternatively, abcde can also grab a CD and turn it into a single FLAC file with an embedded cuesheet. that file can be used later on as a source for other formats, and it'll be treated as if it were the original CD. ngl this is lowkey a compressed backup of your whole CD collection πŸ¦‹πŸ’œ


✨ OPTIONS ✨

  • -1 β€” encodes the whole CD into a single file πŸ’Ώ the resulting file uses the CD title for tagging. if the result is a flac file with an embedded cuesheet, you can use it as a source for creating other formats. to get a file like that, use "-1 -o flac -a default,cue" πŸŽ€
  • -a [actions] β€” a comma-delimited list of actions to perform πŸ’… you can pick one or more of: cddb, cue, read, getalbumart, embedalbumart, normalize, encode, tag, move, replaygain, playlist, clean. some actions bring others along for the ride:
    • normalize and encode imply read
    • tag implies cddb, read, encode
    • move implies cddb, read, encode, tag
    • replaygain implies cddb, read, encode, tag and move
    • playlist implies cddb
    • embedalbumart implies getalbumart

the default is to do all actions except cue, normalize, replaygain, getalbumart, embedalbumart and playlist 🌸

  • -b β€” enables batch mode normalization πŸ”Š see the BATCHNORM configuration variable
  • -B β€” enables automatic embedding of album art with certain containers ✨ as of abcde 2.8.2, the supported containers are:
    • mp3 (using eyeD3)
    • flac (using metaflac)
    • m4a (using AtomicParsley)
    • WavPack aka wv (using wvtag)
    • experimental support for ogg (using vorbiscomment)

this option also calls the getalbumart function. for more on album art embedding with the embedalbumart function, check out the abcde FAQ document that ships with abcde πŸ“–

  • -c [filename] β€” points to an additional configuration file to parse 🧚 options in this file override the ones in /etc/abcde.conf or $HOME/.abcde.conf
  • -C [discid] β€” lets you resume a session for discid when you don't have the CD anymore 🫢 (if the CD is still in the drive, abcde resumes automatically). you must have already finished at least the "read" action during the previous session
  • -d [devicename | filename] β€” the CD-ROM block device that holds the audio tracks to be read πŸ’Ώ or, alternatively, a single-track flac file with an embedded cuesheet
  • -D β€” captures debugging information πŸ™ˆ you'll want to redirect this, so try 'abcde -D 2>logfile'
  • -e β€” erases information about encoded tracks from the internal status file 🧹 this lets you run other encodings if you've kept the wav files
  • -f β€” forces removal of the temporary ABCDETEMPDIR directory, even when we haven't finished πŸ’₯ for example, you could read and encode several formats, including .ogg, and later run a move action with only one of them. normally that would erase the rest of the encoded formats, so abcde will refuse to run that command unless you add -f 🚫
  • -g β€” enables lame's --nogap option 🎡 see the NOGAP variable.
WARNING: lame's --nogap disables the Xing mp3 tag. that tag is required for mp3 players to correctly display track lengths when playing variable-bit-rate mp3 files. ⚠️
  • -G β€” downloads album art using the getalbumart function πŸ–ΌοΈ this works best with CDDBMETHOD including musicbrainz, and it requires glyrc to be installed. ImageMagick is optional but highly recommended πŸ’– more details are in the abcde FAQ document that ships with abcde
  • -h β€” gets help information πŸ†˜
  • -j [number] β€” starts [number] encoder processes at once πŸš€ this is useful for SMP systems. it overrides the MAXPROCS configuration variable. set it to "0" when using distmp3 so you don't get local encoding processes
  • -k β€” keeps the wav files after encoding πŸ’Ύ
  • -l β€” uses the low-diskspace algorithm 🫧 see the LOWDISK configuration variable
  • -L β€” uses a local CDDB repository πŸ“š see the CDDBLOCALDIR variable
  • -m β€” creates DOS-style playlists, adding CRLF line endings to the result πŸ“ƒ some hardware players insist on having those to work πŸ™„
  • -n β€” doesn't query the CDDB database πŸ“ instead, it creates and uses a template. edit the template to add song names, artist(s), and so on
  • -N β€” non-interactive mode πŸ€– abcde won't ask you anything, it just goes ahead
  • -o [filetype][:filetypeoptions] β€” selects the output type πŸŽ€ it can be "vorbis" (or "ogg"), "mp3", "flac", "spx", "mpc", "m4a", "wav", "wv", "ape", "opus", "mka" or "aiff". give a comma-delimited list of output types to get all of them at once πŸ‘‘ see the OUTPUTTYPE configuration variable. you can pass options to the encoder for a specific filetype on the command line by separating them with a colon, and those options must be escaped with double-quotes
  • -p β€” pads track numbers with 0's πŸ”’
  • -P β€” uses Unix PIPES to read and encode in one step (USEPIPES) 🌊 this disables multiple encodings, since the WAV audio file is never stored on the disc. for more detail, check the FAQ document in the source tarball
  • -r [hosts...] β€” remote encodes on this comma-delimited list of machines using distmp3 πŸ›°οΈ see the REMOTEHOSTS configuration variable
  • -s [fields...] β€” lists, separated by commas, the fields to show in the CDDB parsed entries πŸ—“οΈ right now it only uses "year" and "genre"
  • -S [speed] β€” sets the speed of the CD drive 🏎️ this needs CDSPEED and CDSPEEDOPTS set properly, and both the program and the device have to support the capability
  • -t [number] β€” starts numbering the tracks at a given number πŸ”’ it only affects the filenames and the playlist. the internal (tag) numbering stays the same
  • -T [number] β€” same as -t, but it also changes the internal (tag) numbering 🏷️ keep in mind that the default TRACK tag for MP3 is $T/$TRACKS, so it gets changed to simply $T
  • -U β€” sets CDDBPROTO to version 5 🌍 this way we retrieve ISO-8859-15 encoded CDDB information, and we tag and add comments with Latin1 encoding
  • -v β€” shows the version and exits 🧾
  • -V β€” be more verbose πŸ“’ on slow networks, CDDB requests might make it seem like nothing is happening. add this option more than once to get even more verbose output
  • -x β€” ejects the CD when all tracks have been read ⏏️ see the EJECTCD configuration variable
  • -X [cue2discid] β€” uses an alternative "cue2discid" implementation πŸ” the name of the binary has to be exactly that. abcde comes with a python implementation under the examples directory. the special keyword "builtin" forces the internal (default) shell script implementation 🐚
  • -w [comment] β€” adds a comment to the tracks ripped from the CD πŸ’¬ if you want to use parentheses, you have to escape them, so write "\(" instead of "("
  • -W [number] β€” concatenates CDs πŸ’ΏπŸ’Ώ it uses the number you give to define a comment "CD #" and to modify the track numbering, starting with "#01". for Ogg/Vorbis and FLAC files, it also defines a DISCNUMBER tag 🌈
  • -z β€” DEBUG mode πŸ§ͺ it rips the very first second of each track using cdparanoia and proceeds with the requested actions super quickly, and it also shows some "hidden" information about what's happening in the background.
CAUTION: IT WILL ERASE ANY EXISTING RIPS WITHOUT WARNING! πŸ’€πŸš¨
  • [tracks] β€” a list of tracks you want abcde to process 🎢 if you don't specify this, abcde processes the entire CD. ranges work too: "abcde 1-5 7 9" will process tracks 1, 2, 3, 4, 5, 7, and 9 πŸ¦‹

Okay so the only rule for setting these is VARIABLE=value πŸ’–, and you only need extra care when the value needs to be quoted or otherwise interpreted πŸŽ€.

If other variables inside the value should get expanded when the config file is read, wrap it in "double quotes". If they should only get expanded when they're actually used (like OUTPUTFORMAT), then 'single quotes' must be used 😭.

All shell escaping/quoting rules apply. πŸ’…

Here's the list of options abcde recognizes, bestie πŸ¦‹:

  • CDDBMETHOD β€” the methods abcde uses to grab track info ✨. Three values are recognized: "cddb", "musicbrainz" and "cdtext". Put every method you want in a comma-delimited list and abcde will try them all, handing you back a list of every search result πŸ”₯. "cddb" needs the CDDBURL and HELLOINFO variables (described below). "musicbrainz" uses the Perl helper script abcde-musicbrainz-tool to chat with the Musicbrainz server for info 🎢. "cdtext" needs icedax or cdda2wav installed.
  • CDDBURL β€” the server used for CDDB lookups 🌐.
  • CDDBPROTO β€” the protocol version used when retrieving CDDB results 🧚. Version 6 pulls CDDB entries in UTF-8 format.
  • HELLOINFO β€” the Hello info sent to the CDDB server πŸ‘‹. CDDB wants a valid username and hostname every single time you connect, formatted as username@hostname.
  • CDDBLOCALDIR β€” a directory where you keep a local CDDB repository πŸ“. The entries must be standard CDDB entries, with the filename being the DISCID value. Other CD playing and ripping programs (like Grip) store their entries under ~/.cddb, and abcde can make use of those too 🫢.
  • CDDBLOCALRECURSIVE β€” whether CDDBLOCALDIR gets searched recursively when hunting for a match πŸ”. If a match is found and selected, and CDDBCOPYLOCAL is selected, it gets copied to the root of CDDBLOCALDIR if CDDBLOCALPOLICY is "modified" or "new". The default "y" is needed for the local CDDB search to work.
  • CDDBLOCALPOLICY β€” decides when a CDDB entry gets stored in CDDBLOCALDIR πŸ“. The possible policies are:
    • "net" β€” an entry received from the net, overwriting any possible local CDDB entry.
    • "new" β€” an entry received from the net, but it'll ask for confirmation before overwriting a local CDDB entry found in the root of CDDBLOCALDIR.
    • "modified" β€” an entry found in the local repository that you've modified yourself ✏️.
    • "always" β€” forces the entry to be stored back in the root of CDDBLOCALDIR no matter where it was found, and no matter whether it was edited. This one will always overwrite whatever's in the root of the local repository (if anything's there). STILL NOT WORKING!! πŸ’€
  • CDDBCOPYLOCAL β€” stores local copies of the CDDB entries under the $CDDBLOCALDIR directory πŸ’Ύ.
  • CDDBUSELOCAL β€” actually uses the stored copies of the CDDB entries πŸ™Œ. It can be overridden with the "-L" flag (if CDDBUSELOCAL is "n"). If an entry is found, abcde always gives you the choice of retrieving a CDDB entry from the internet too.
  • SHOWCDDBFIELDS β€” a comma-separated list of the fields you want parsed during CDDB parsing 🧾. Defaults to "year,genre".
  • OGGENCODERSYNTAX β€” the encoder style for Ogg/Vorbis 🎧. Valid options are oggenc (the default for Ogg/Vorbis) and vorbize. This changes the default location of the binary, the variable abcde picks encoder command-line options from, and where those options are given.
  • MP3ENCODERSYNTAX β€” the encoder style for MP3 🎡. Valid options are lame (the default for MP3), gogo, bladeenc, l3enc and mp3enc. It affects things the same way as explained above for Ogg/Vorbis.
  • FLACENCODERSYNTAX β€” the encoder style for FLAC 🎼. Right now only flac is available for FLAC encoding.
  • MP2ENCODERSYNTAX β€” the encoder style for MPEG-1 Audio Layer II (MP2) πŸŽ™οΈ. Both twolame and ffmpeg are available for MP2 encoding.
  • SPEEXENCODERSYNTAX β€” the encoder style for Speex πŸŒ™. Right now only speexenc is available for Ogg/Speex encoding.
  • MPCENCODERSYNTAX β€” the encoder style for MPP/MP+ (Musepack) πŸ“. We only have mpcenc available, from musepack.net.
  • AACENCODERSYNTAX β€” the encoder style for M4A (AAC) 🍎. We support fdkaac as the default, plus FFmpeg or avconv, neroAacEnc, qaac and fhgaacenc. If qaac, refalac or FFmpeg / avconv are used, you can also generate Apple Lossless Audio Codec (alac) files πŸ’œ. Note that qaac, refalac and fhgaacenc are Windows applications which require Wine to be installed.
qaac, refalac and fhgaacenc are Windows apps, so they need Wine installed to run πŸ™ˆ.
  • TTAENCODERSYNTAX β€” the encoder style for True Audio (tts) encoding 🌊. We support tta as the default, but the older ttaenc can be used too.
  • WVENCODERSYNTAX β€” the encoder style for WavPack πŸ¦„. We support wavpack as the default, but ffmpeg is the other option. (This is for FFmpeg only, since avconv doesn't have a native WavPack encoder.)
  • APENCODERSYNTAX β€” the encoder style for Monkey's Audio (ape) πŸ’. We support mac, Monkey's Audio Console, as the default.
  • OPUSENCODERSYNTAX β€” the encoder style for Opus 🫧. Right now only opusenc is available for Opus encoding.
  • MKAENCODERSYNTAX β€” the encoder style for the Matroska or mka container πŸ“¦. Right now only ffmpeg is available to utilise the mka container. Safe audio codecs for mka include Vorbis, MP2, MP3, LC-AAC, HE-AAC, WMAv1, WMAv2, AC3, eAC3 and Opus. See the FAQ document for more information πŸ“–.
  • AIFFENCODERSYNTAX β€” the encoder style for Audio Interchange File Format (AIFF) 🎹. Right now only ffmpeg is available to utilise the AIFF container.
  • NORMALIZERSYNTAX β€” the normalizer style πŸ”Š. Valid options are default and normalize (both run normalize-audio), since that's the only one we support, ATM.
  • CDROMREADERSYNTAX β€” the cdrom reader style πŸ’Ώ. Valid options are cdparanoia, libcdio, debug and flac. It's used for querying the CDROM to get a list of valid tracks and DATA tracks. The special flac case is used to "rip" CD tracks from a single-track flac file.
  • CUEREADERSYNTAX β€” the syntax of the program used to read the CD CUE sheet πŸ“€. Right now we only support mkcue, but other readers might be used in the future.
  • KEEPWAVS β€” defaults to no πŸ™…, so if you want to keep the wavs ripped from your CD, set it to "y". You can use the "-k" switch on the command line. With KEEPWAVS set, the default behaviour is to keep the temporary directory and the wav files, even if you've requested the "clean" action 🧹.
  • PADTRACKS β€” if set to "y", it adds 0's to the file numbers to complete a two-number holder πŸ”’. Super useful when encoding tracks 1-9.
  • INTERACTIVE β€” set this to "n" if you want automatic rips with zero user intervention πŸ€–.

✨ NICE VALUES ✨

Defines the priorities (nice values) for the different CPU-hungry processes πŸ”₯: encoding (ENCNICE), CDROM read (READNICE) and distributed encoder with distmp3 (DISTMP3NICE).

✨ PATHNAMES ✨

The following configuration file options specify the pathnames of their respective utilities πŸ—‚οΈ:

LAME, GOGO, BLADEENC, L3ENC, XINGMP3ENC, MP3ENC, VORBIZE, OGGENC, FLAC, SPEEXENC, MPCENC, WAVEPACK, APENC, OPUSENC, ID3, EYED3, METAFLAC, CDPARANOIA, CD_PARANOIA, CDDA2WAV, PIRD, CDDAFS, CDDISCID, CDDBTOOL, EJECT, MD5SUM, DISTMP3, VORBISCOMMENT, NORMALIZE, CDSPEED, MP3GAIN, VORBISGAIN, MPCGAIN, MKCUE, MKTOC, CUE2DISCID (see option "-X"), DIFF, HTTPGET, GLYRC, IDENTIFY, DISPLAYCMD, CONVERT, QAAC, WINE, FHGAACENC, ATOMICPARSLEY, FFMPEG, TWOLAME, MID3V2, TTA and TTAENC.

✨ COMMAND-LINE OPTIONS ✨

If you wish to pass command-line options to any of the programs abcde uses, set the following configuration file options πŸ’…:

LAMEOPTS, GOGOOPTS, AIFFENCOPTS, BLADEENCOPTS, L3ENCOPTS, XINGMP3ENCOPTS, MP3ENCOPTS, VORBIZEOPTS, WAVEPACKENCOPTS, APENCOPTS, OGGENCOPTS, FLACOPTS, SPEEXENCOPTS, MPCENCOPTS, FAACENCOPTS, NEROAACENCOPTS, FDKAACENCOPTS, OPUSENCOPTS, ID3OPTS, EYED3OPTS, MP3GAINOPTS, CDPARANOIAOPTS, CDDA2WAVOPTS, PIRDOPTS, CDDAFSOPTS, CDDBTOOLOPTS, EJECTOPTS, DISTMP3OPTS, NORMALIZEOPTS, CDSPEEDOPTS, MKCUEOPTS, VORBISCOMMMENTOPTS, METAFLACOPTS, DIFFOPTS, FLACGAINOPTS, VORBISGAINOPTS, HTTPGETOPTS, GLYRCOPTS, IDENTIFYOPTS, CONVERTOPTS, DISPLAYCMDOPTS, QAACENCOPTS, FHGAACENCOPTS, ATOMICPARSLEYOPTS, FFMPEGENCOPTS, DAGRABOPTS, TWOLAMENCOPTS and TTAENCOPTS.

  • CDSPEEDVALUE β€” sets the CDROM speed 🏎️. The default is to read the disc as fast as the reading program and the system permits. The steps are defined as 150kB/s (1x).
  • ACTIONS β€” the default actions to be performed when reading a disc 🎬.
  • CDROM β€” if set, it points to the CD-Rom device abcde should use for audio extraction πŸ’Ώ. abcde tries to guess the right device, but it may fail 😬. The special flac option is defined to extract tracks from a single-track flac file.
  • CDPARANOIACDROMBUS β€” "d" if you're using cdparanoia with an IDE bus, and "g" if you're using cdparanoia with the ide-scsi emulation layer πŸ”Œ.
  • OUTPUTDIR β€” the directory where completed tracks/playlists get placed πŸ“‚βœ¨.
  • WAVOUTPUTDIR β€” the temporary directory to store .wav files in πŸ—‘οΈ. abcde may use up to 700MB of temporary space for each session (although it's rare to use over 100MB on a machine that can encode music as fast as it can read it) 🫢.

πŸŽ€ OUTPUTTYPE

Okay so OUTPUTTYPE is the encoding format picker πŸ’… It sets the output format, the default extension, and the default encoder. The default is "vorbis". Your options are "vorbis" (or "ogg") for Ogg/Vorbis, "mp3" for MPEG-1 Audio Layer III, "flac" for Free Lossless Audio Codec, "mp2" for MPEG-1 Audio Layer III, "spx" for Ogg/Speex, "mpc" for MPP/MP+ (Musepack), "m4a" for AAC or ALAC, "wv" for WavPack, "wav" for Microsoft Waveform, "opus" for Opus Interactive Audio Codec, "tta" for True Audio, "mka" for Matroska, or "aiff" for Audio Interchange File Format. 🎧✨

You can even pick more than one, like "vorbis,mp3", and then every track gets encoded in both Ogg/Vorbis and MP3. Iconic multitasking πŸ”₯ For example:

OUTPUTTYPE=vorbis,flac

For each value in OUTPUTTYPE, abcde runs a separate process for encoding, tagging, and moving. So you can use the format placeholder, OUTPUT, to make different subdirectories for each type and keep everything neat πŸ—‚οΈ The variable OUTPUT will be 'vorbis', 'mp3', 'flac', 'spx', 'mpc', 'm4a', mp2, 'wv', 'ape', 'tta', and 'wav'. Example:

OUTPUTFORMAT='${OUTPUT}/${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM}._${TRACKFILE}'

🌸 OUTPUTFORMAT

This sets the filename format for finished Ogg/Vorbis, MP3, FLAC, Ogg/Speex, MPP/MP+ (Musepack), or M4A files. You write variables with standard shell syntax. The allowed variables are GENRE, ALBUMFILE, ARTISTFILE, TRACKFILE, TRACKNUM, and YEAR. The default is ${ARTISTFILE}-${ALBUMFILE}/${TRACKNUM}-${TRACKFILE}.

⚠️ Make sure you wrap this variable in single quotes, bestie!

TRACKNUM gets zero-padded automatically once you're encoding more than 9 tracks. If you want padding when you have fewer tracks than that, use -p on the command line. πŸ™Œ

πŸ¦‹ VAOUTPUTFORMAT

This is just like OUTPUTFORMAT, but it's for Various Artists discs. The default is 'Various-${ALBUMFILE}/${TRACKNUM}.${ARTISTFILE}-${TRACKFILE}'. 🎢

🧚 ONETRACKOUTPUTFORMAT

Also just like OUTPUTFORMAT, but for single-track rips (see option -1). The default is '${ARTISTFILE}-${ALBUMFILE}/${ALBUMFILE}'. πŸ’Ώ

πŸ’œ VAONETRACKOUTPUTFORMAT

Same vibe as ONETRACKOUTPUTFORMAT, but for Various Artists discs. The default is 'Various-${ALBUMFILE}/${ALBUMFILE}'. 🌈

⚑ MAXPROCS

This decides how many encoders run at the same time. It makes for huge speedups on SMP systems πŸš€ The ideal is one encoder per CPU for maximum efficiency, though going over doesn't hurt much. If you're using mp3dist, set it to "0" so you don't get encoding processes on the local host. πŸ™ˆ

πŸ’Ύ LOWDISK

If set to y, this conserves disk space by encoding each track right after reading it. It's way slower than normal, but it needs several hundred MB less space to finish encoding a whole CD. Only use it if your system is low on space and can't encode as fast as it reads 🐒

Also, this option might help when you're reading a CD with errors. On a scratchy disk, reading is super timing-sensitive, and this option cuts down the background load on the system, so the ripping program has more precise control 🎯

πŸ“ BATCHNORM

If set to y, this turns on batch mode normalization, which keeps the relative volume differences between tracks on an album. It also turns on nogap encoding when you're using the lame encoder. πŸ”Š

πŸŒ™ NOGAP

This activates lame's --nogap option, which lets files from CDs with no silence between songs (like live concerts) get encoded without noticeable gaps. 🎀

🚨 WARNING, bestie: lame's --nogap disables the Xing mp3 tag. That tag is required so mp3 players can correctly display track lengths when they're playing variable-bit-rate mp3 files. Not cute πŸ’€

πŸ“» PLAYLISTFORMAT

This sets the filename format for finished playlists. It works like the OUTPUTFORMAT configuration variable. The default is ${ARTISTFILE}_-_${ALBUMFILE}.m3u. Make sure to wrap it in single quotes too πŸ’…

πŸ”— PLAYLISTDATAPREFIX

This gives a prefix for the filenames inside a playlist. It's handy for http playlists and stuff like that 🌐

🎧 DOSPLAYLIST

If this is set, the playlist gets CR-LF line endings, which some hardware-based players need πŸ“Ό

πŸ’¬ COMMENT

This embeds a comment in the ID3 or Ogg comment field of each finished track. It can be up to 28 characters long, and it supports the same syntax as OUTPUTFORMAT. It doesn't currently support ID3v2, so no ID3v2 for you, sadly πŸ₯²

πŸ›°οΈ REMOTEHOSTS

This is a comma-delimited list of systems to use for remote encoding with distmp3. It's the same as -r ✨

🧼 mungefilename

mungefilename() is an abcde shell function, and you can override it through abcde.conf. It takes CDDB data as $1 and outputs the resulting filename on stdout. By default, it deletes any dots that come before the filename, replaces spaces with underscores, and eats characters that Windows and Linux don't allow 🫧

🚫 If you modify this function, it's a really good idea to keep the forward slash munging, because UNIX can't store a file with a / in its name. Keep the control character munging too, because NULs can't be in a filename, and newlines and similar characters usually aren't wanted in filenames either.

New as of abcde 2.7.3 are the user-definable functions mungetrackname, mungeartistname, and mungealbumname. They all default to mungefilename, and they give you finer-grained control over track names, artist names, and album names for the ultra-fastidious πŸ€“πŸ‘‘

🎡 mungegenre

mungegenre () is a shell function that modifies the $GENRE variable. By default, it takes $GENRE as $1 and outputs the result to stdout, converting all UPPERCASE characters to lowercase πŸ”‘

πŸ“€ pre_read

pre_read () is a shell function that runs before the CDROM is read for the first time during abcde execution. You can use it to close the CDROM tray, set its speed (with setcd or with eject, if you have it), or do other prep stuff πŸ› οΈ The default function is empty.

πŸ“– post_read

post_read () is a shell function that runs after the CDROM is read, and before it's ejected if that applies. You can use it to read a TOC from the CDROM, or to try reading the DATA areas from the CD (if any exist). The default function is empty. 🫠

🎁 post_encode

post_encode () is a shell function that runs after the encoding process. It's perfect for moving finished files somewhere else, running tests on the completed files, or embedding album art if abcde's built-in embedalbumart function isn't your vibe πŸ–ΌοΈ The default function is empty.

πŸ”Œ EJECTCD

If set to "y", abcde calls eject(1) to eject the cdrom from the drive once every track has been read. It has no effect when CDROM is set to a flac file. ⏏️

πŸ“’ EXTRAVERBOSE

If set to "1", some operations that normally stay hidden from the end user become visible, like CDDB queries. This is useful for initial debugging, and if your network or CDDB server is slow 🐌 Set it to "2" or higher for even more verbose output. Chatty but in a good way πŸ’–


✨ EXAMPLES ✨

Possible ways one can call abcde, bestie:

abcde

Works on most systems πŸ’―

abcde -d /dev/cdrom2

Use this if the CDROM you're reading from isn't the standard /dev/cdrom (on GNU/Linux systems) πŸ’Ώ

abcde -o vorbis,flac

This creates both Ogg/Vorbis and Ogg/FLAC files 🎢

abcde -o vorbis:"-b 192"

This passes "-b 192" to the Ogg/Vorbis encoder, so you don't have to touch the config file πŸ™Œ

abcde -o mp3,flac,m4a,wv,ogg -B

abcde creates mp3, flac, m4a, wv, and ogg files. It also picks suitable album art, downloads it, and embeds it into all 5 sets of tracks. Main character energy πŸ‘‘πŸ–ΌοΈ

abcde -W 1

For double+ CD settings: this creates the 1st CD starting with track number 101, and adds a comment "CD 1" to the tracks. The second CD starts at 201, and so on πŸ’œ

abcde -d singletrack.flac -o vorbis:"-q 6"

This extracts the files contained in the singletrack FLAC file using the embedded cuesheet, then encodes the output files to Ogg/Vorbis with a quality setting of 6 πŸ¦‹


πŸ”§ BACKEND TOOLS πŸ”§

Okay, so abcde needs these backend tools to work, no cap 🫢

  • An Ogg/Vorbis, MP3, FLAC, Ogg/Speex, MPP/MP+(Musepack), M4A encoder, or Opus encoder. Any of these work: oggenc, vorbize, lame, gogo, bladeenc, l3enc, mp3enc, flac, speexenc, mpcenc, fdkaac, neroAacEnc, faac, wavpack, opusenc 🎧
  • An audio CD reading utility. Pick from cdparanoia, icedax, cdda2wav, libcdio (cd-paranoia), pird, or dagrab. If you want to read CD-TEXT information, you'll need icedax or cdda2wav πŸ“€
  • cd-discid, a CDDB DiscID reading program πŸ†”
  • An HTTP retrieval program: wget, fetch (FreeBSD), or curl (Mac OS X, among others). Or you can use abcde-musicbrainz-tool (which depends on Perl and some Musicbrainz libraries) to retrieve CDDB information about the CD 🌐
  • (for MP3s) id3 or eyeD3, which are id3 v1 and v2 tagging programs 🏷️
  • For Monkey's Audio (ape) tagging, you need Robert Muth's apetag πŸ’
  • To retrieve album art, you need the glyrc package, and optionally the ImageMagick package πŸ–ΌοΈ
  • (optional) distmp3, a client/server for distributed mp3 encoding πŸ›°οΈ
  • (optional) normalize-audio, a WAV file volume normalizer πŸ”Š
  • (optional) a replaygain file volume modifier: vorbisgain, metaflac, mp3gain, mpcgain, or wvgain 🎚️
  • (optional) mkcue, a CD cuesheet extractor πŸ“

πŸ”— SEE ALSO πŸ”—

Here's where to look for more info, bestie πŸ¦‹

cdparanoia(1), cd-paranoia(1), icedax(1), cdda2wav(1), twolame(1), mid3v2(1), pird(1), dagrab(1), normalize-audio(1), oggenc(1), vorbize(1), flac(1), speexenc(1), mpcenc(1), faac(1), fdkaac(1), identify(1), display(1), convert(1), wavpack(1), wvgain(1), wvtag(1), id3(1), eyeD3(1), wget(1), fetch(1), cd-discid(1), distmp3(1), distmp3host(1), curl(1), mkcue(1), vorbisgain(1), mp3gain(1)


🧾 DATA FORMATS 🧾

The CDDB metadata format is used a lot by abcde, both for lookups and internally. It's documented online at http://ftp.freedb.org/pub/freedb/latest/DBFORMAT πŸ“š


πŸ‘‘ AUTHORS πŸ‘‘

Big thanks to these queens: Robert Woodcock <rcw@debian.org>, Jesus Climent <jesus.climent@hispalinux.es>, Colin Tuckley <colint@debian.org>, Steve McIntyre <93sam@debian.org>, and Andrew Strong <andrew.david.strong@gmail.com>, plus contributions from so many others πŸ«ΆπŸ’–

That's the whole abcde(1) page, bestie! Thanks for reading with me πŸ¦‹βœ¨ Now go rip some CDs and slay πŸ’…πŸŒˆ