4 Q. Who created abcde? Who develops it nowadays?
5 A. It was originally created by Robert Woodcook. He decided to give up
6 maintaining it at some point in 2002 and Jesus Climent took over. In 2012,
7 Colin Tuckley and Steve McIntyre joined in to help. Currently Steve maintains
8 abcde along with Andrew Strong. Contact either with comments or suggestions
9 at the following email addresses:
10 Steve McIntyre <93sam@@debian.org>
11 Andrew Strong <andrew.david.strong@gmail.com>
17 Q. How can I install abcde on my system?
18 A. To get abcde you can use a pre-packaged version, available for Debian,
19 FreeBSD, OpenBSD, NetBSD and others.
20 In case you want to install your own release, you need to download the
21 source and install the complementary programs (abcde is just a frontend
22 and its functionality is provided by other programs).
24 abcde needs cd-discid. Grab it from:
25 http://www.hispalinux.es/~data/files/cd-discid/
27 Read the README files for a complete list of requirements.
29 Q. I have a problem, and I reported some time ago. Have you solved it already?
30 A. Maybe. Try downloading the master branch of the development from
31 http://git.einval.com/cgi-bin/gitweb.cgi?p=abcde.git
33 Q. When are you going to release a new version?
34 A. When it is ready. I keep on having new ideas and adding them to the trunk
35 (stored in the URL above), so I dont release until all the ideas are
42 Q. I want to force abcde 2.x to behave more like 1.x. How do I do it?
43 A. Put these options in your abcde.conf:
50 A. abcde has different algorithms to schedule ripping and encoding - to
51 optimize for disk conservation, use -l. You can also define
52 WAVOUTPUTDIR=/some/other/path to your /etc/abcde.conf or ~/.abcde.conf to
53 store the WAV files on another NFS shared fisk, for example.
54 Also, UNIX pipes have also been implemented, using "-P", so abcde reads and
55 encodes the tracks from the CD at once. However, it has the drawback that
56 only one format can be encoded at a time.
58 Q. How can i make abcde encode faster? My CD reader is way faster than the pace
59 it can encode my tracks.
60 A. abcde can take advantage of SMP systems, just like make. Try 'abcde -j 2' -
61 it'll run two encoder jobs while it rips the next track.
62 You can also make use of systems which are networked, with the help of
63 distmp3. For example, MachineA has a better CPU power and MachineB has a CD
64 drive. Run distmp3host (included in distmp3) on Machine A, and then run
65 abcde -r MachineA from MachineB (where "MachineA" is a dns name or IP
66 address). Use this in combination with '-j 0' to shift all encoding off the
69 Q. I am having problems with *my CD reading program* reading the drive as a
71 A. You might have to add yourself (or the users who want to use abcde) to the
72 cdrom group and change the permissions of the cdrom device to 660. If you
73 have a SCSI cdrom drive, check the permissions of /dev/sg* as well.
75 Q. I would like to give the trackname and the artist_name directly to the
76 encoder (in my case oggenc), but found no documentation.
77 A. That is not possible, since abcde gets the information from CDDB database.
78 You can create a template and fill it with the option "-n". Also, you can
79 get the CDDB entry and edit it yourself. abcde has also an option to drop
80 back to a template if you like none of the CDDB entries, selecting 0 from
83 Q. (Thanks to Amaya) Where are those options and settings defined? Why dont
84 you include a proper abcde.conf as an example?
85 A. I do. It should be installed under /etc/abcde.conf and contains more or
86 less all the defaults abcde uses. You can use $(HOME)/.abcde.conf to
87 override those defaults. More information can be obtained from the man page
88 which can be consulted using "man abcde".
90 Q. I keep on getting files with ".ogg.ogg" extension. What am I doing wrong?
91 A. The code for multiple-output adds automatically the extension of the
92 different outputs you select with the "-o" extension (or with OUTPUTTYPE
93 variable). Erase the ".${OUTPUTTYPE}" part from the OUTPUTFORMAT variable
94 in /etc/abcde.conf or ~/.abcde.conf
96 Q. I have modified some of the options, and now CDDB has stopped working.
97 A. Check that you have modified everything in the right way. For instance, if
98 you modify the HTTPGET program you might want to set some options of your
99 own. If you use the predefined ones (wget, curl and fetch) abcde will try
100 to use some defaults. Keep in mind that the output should go to the output
101 as standard output, to be saved in a file for later use.
103 If abcde seems to be ignoring your configuration options or not running
104 commands such as the encoder, you may have misquoted something. Config
105 options such as the following do not work:
113 Q. How can I separate the different output files I get using multiple-output
115 A. Use the OUTPUT variable in PLAYLISTFORMAT and OUTPUTFORMAT. It holds the
116 different output file types you passed to abcde (i.e., ogg, mp3, flac)
117 during playlist creation and file/directory creation.
119 Q. I have a CD with a data track, and abcde complaints it cannot read/encode
121 A. From version 2.2 onwards, abcde includes some checkings with cdparanoia, to
122 try to get this right.
123 (It is not easy to find a data track on a CD. Right now, I can only think
124 of getting the track info from CDDB and ask the user for continuing should
125 a "data" track name is found. But the solution is far from been optimal.
126 For now, if you find a "data" track and you know the number, restart abcde
127 specifying the tracks to be encoded, leaving out the data one).
129 Q. I am requested to have "eject" when setting the speed although I do not use
131 A. If you do not use cdparanoia, eject is used for setting the speed of the
132 cdrom drive. You can substitute it for "setcd" with "-x" as the argument,
133 but you have to install it manually (setcd is, at least, available in
135 Another way to get the same results is using the pre_read function, defined
136 in your /etc/abcde.conf file.
138 Q. I have a CD set with 1+ discs, and want to have them in the same directory,
139 sorted properly. What can abcde do for me?
140 A. Set abcde to rip the first CD and give it the option "-t 101". Use a generic
141 name for the CD, and reuse it with the rest of the CDs, editing the CDDB
142 entries. Use "-t 201" for the second CD and so on. Use "-w <comment>" to
143 add a comment about the CD you are ripping (-w "disc #"). Alternatively you
144 can use only the "-t ###" option and then move all the files to the same
145 directory, but the tag/comment information on the files will differ. If you
146 want the tagged track number to be set to the modified number you should use
148 Even better! If you use "-W <cd_number>", abcde will put a comment to every
149 CD set ("CD <number>") and modify the number of the tracks both in the file
150 name and the tag/comment information.
152 Q. I have a live concert. I want to encode it in a single file. How do i do it?
153 A. Use "-1" and it will be encoded in a single file. Use "cue" as an action to
154 make a CUE sheet file where the information about the tracks is stored.
156 Q. Can I use abcde to take a backup of my CD collection?
157 A. Yes. Use "abcde -1 -o flac -a default,cue" and it will create a single-track
158 FLAC file with an embedded cuesheet. Later on, you can use the command
159 "abcde -o vorbis -d flac-file.flac" to extract the individual tracks in
160 Ogg/Vorbis format. Of course you can select whatever format you want.
163 3. CDDB and Musicbrainz
166 Q. I need to go through an HTTP proxy for CDDB access.
167 A. No problem, just export your http_proxy variable first so wget/fetch/curl
170 Q. I already store CDDB entries in my hard disc. Can I make use of them?
171 A. Piece of cake. Just edit CDDBLOCALDIR to point to the repository and give
172 abcde the "-L" flag to make use of it.
174 Q. Fine, now it uses local CDDB, but I have no network connection. How can I
176 A. Use the "-L -n" combination. It will try to use local CDDB entries, and if
177 nothing can be found, it will use a template. You will be also given the
178 choice to edit such template.
180 Q. How can I use some other CDDB information provider?
181 A. abcde now uses FreeDB by default. To use a different FreeDB mirror or
182 another CDDB service, change the CDDBURL option in your abcde.conf.
184 Q. After requesting CDDB data, I received several answers which seem to be
185 quite alike. Can I find out the difference between some of them?
186 A. Yes. When asked which one you want to select, use "X,Y" where X and Y are
187 the numbers of the selections you want to find the difference between.
189 Q. I don't like CDDB/FreeDB. How can I use Musicbrainz instead?
190 A. Set CDDBMETHOD=musicbrainz and try it!
193 4. abcde and Album Art
196 Q. Can abcde download album art?
197 A. As of abcde 2.7 it is possible to download a suitable cover
198 image from within abcde that can be used by applications such
199 as Audacious and vlc to illustrate playback with an album cover.
200 Many hardware playback devices such as iPODs will also use this
201 image during playback and show it on the device's display.
203 Q. How does album art downloading work?
204 A. The details are contained in abcde within a new function called
205 'getalbumart' which can be called either from the commandline or
206 from within an ~/.abcde.conf file. The technique works in 3 possible
209 1. If CDDBMETHOD is musicbrainz the album art is downloaded from
210 coverartarchive by MBID (MusicBrainz Identifier)
211 2. If 1 fails, download is tried from amazon by ASIN (Amazon
212 Standard Identification Number)
213 3. If if 1 and 2 fail or CDDBMETHOD is cddb the album art will
214 be downloaded using glyrc by artist + album title
216 You will need to install your distro's package of glyr, a music
217 related metadata search engine, and it is strongly advised that
218 you use 'musicbrainz' for your cddb lookups. To access the more
219 advanced features of getalbumart it is also strongly advised that
220 you install the ImageMagick package of your distro. getalbumart
221 will work without ImageMagick but functionality will be reduced.
223 Q. What settings and options should I select?
224 A. If you want to operate abcde from the commandline only you will
225 get reasonable results with something like either of the following:
227 abcde -o mp3:-V2 -a default,getalbumart
230 But to experience all of the options of getalbumart you should also
231 consider setting the following in your ~/.abcde.conf file:
233 #----------------------------------------------------------------#
234 CDDBMETHOD=musicbrainz # Use MusicBrainz for CDDB
235 ACTIONS=default,getalbumart # Select the album art action + default
237 # Give the path to the metadata search application glyrc. Add any
242 # Give the path to ImageMagick's 'identify' which is used to give a
243 # commandline summary of the album art and also assist in any conversions.
244 # Add any 'identify' options:
248 # Give the path to ImageMagick's 'display' which will show the album art.
249 # The options below are the abcde default, feel free to add your own:
251 DISPLAYCMDOPTS="-resize 512x512 -title abcde_album_art"
253 # Give the path to ImageMagick's 'convert' which is used to convert album
254 # art to the format specified in ALBUMARTTYPE. Add any 'convert' options:
257 # If you want to run CONVERTOPTS on all files (including those specified
258 # in ALBUMARTTYPE) set the following to "y":
259 ALBUMARTALWAYSCONVERT="n"
261 # By default the filename will be cover.jpg and the file format will
262 # be jpeg. 'convert' will automagically change other formats to jpeg:
263 ALBUMARTFILE="cover.jpg"
265 #----------------------------------------------------------------#
267 There are more hints concerning commandline options in the sample
268 abcde.conf file included with your abcde package. Good news is that
269 the existing defaults will work well without any extra adjustments :).
271 Q. Can I manually select album art?
272 A. If you have set INTERACTIVE=y (this is the default) then you will have
273 the opportunity to manually select the album art of your choice either
274 from online by typing in a URL or by typing in the path to a local file.
276 Q. What if I want my album art embedded?
277 A. The philosophy of getalbumart at the moment is to simply place the album
278 art in the same location as the encoded files. Perhaps this will change
279 one day. In the meantime you can use abcde's post_encode function in
280 your ~/.abcde.conf file to embed the album art. Here is an example for
281 mp3 embedding using eyeD3:
283 #----------------------------------------------------------------#
286 ARTISTFILE="$(mungefilename "$TRACKARTIST")"
287 ALBUMFILE="$(mungefilename "$DALBUM")"
289 if [ "$VARIOUSARTISTS" = "y" ] ; then
290 FINDPATH="$(eval echo "$VAOUTPUTFORMAT")"
292 FINDPATH="$(eval echo "$OUTPUTFORMAT")"
295 FINALDIR="$(dirname "$OUTPUTDIR/$FINDPATH")"
298 if [ "$OUTPUTTYPE" = "mp3" ] && [ "$TAGGER" = "$EYED3" ] ; then
299 vecho "Preparing to embed the album art..." >&2
301 vecho "Not embedding album art, you need mp3 output and eyeD3 tagging..." >&2
305 if [ -e "cover.jpg" ] ; then
308 eyeD3 --add-image cover.jpg:FRONT_COVER "$i"
310 mkdir backup && mv cover.jpg backup
311 vecho "Your files have had the album art embedded..." >&2
313 vecho "No album art found so no image embedded..." >&2
316 #----------------------------------------------------------------#
318 Variations of the 'for' loop in this example should work for other encoding
319 types. For example with flac:
321 #--------------------
324 metaflac --import-picture-from=cover.jpg "$i"
326 #--------------------
328 With other appropriate adjustments to the $OUTPUTTYPE and $TAGGER checks of
335 Q. What formats can I encode my music to?
336 A. As for version 2.2, abcde includes support for MP3, Ogg/Vorbis,
337 Ogg/Speex, Flac and MPP/MP+(Musepack). Support for AAC will be added once
338 an FLOSS encoder/decoder is working.
340 Q. I want the new *put the newest and coolest codec there* format to be
341 supported by abcde. Abcde is so cool but i want to encode also to this
343 A. Patches are welcome! ;)
344 No, seriously, if the format is usable, available for Linux and open
345 source/free software, it should be fairly easy to integrate. Support for
346 AAC (m4p) should be the next one to be introduced.
348 Q. I use Debian/RedHat/(put your Unix flavour here) and MP3 encoding is not
349 working. What am I doing wrong?
350 A. Since MP3 is considered non-free (you get it for free, but hardware players
351 and net broadcasters have to pay license fees), some release engineering
352 groups and release management teams have decided not to provide MP3 encoding
354 These distributions or operative systems have decided to use Ogg/Vorbis as
355 the default encoding format, since it contains no (known) patent claims
356 and they are (supposed to be) completely Free (released under a BSD-like
358 However, there is no strong (at the moment) hardware support, although
359 some groups and companies are strongly working on getting it, real soon
360 now. For that reason some people prefer to encode to MP3.
363 There are known brands already selling Ogg/Vorbis portable players: Rio,
364 iRiver, Neuros, iAudio,...
365 Go buy one and you have no more reasons to use MP3.
367 If you are among those individuals, you might need to add support for MP3
368 encoding to your system:
369 Debian : check http://ftp.nerim.net/debian-marillat to install lame in your
370 system. Others prefer bladeenc. Check www.apt-get.org or google.
371 RedHat : search on rpmfind.net
372 FreeBSD: By default includes LAME support.
373 OpenBSD: Available by specifying you want to install the port with LAME
374 support, or by just installing it later from the ports tree.
375 NetBSD : Available in pkgsrc.
377 Others : Please, help me here.
379 Q. Huh! Why is MPPENCODER (with MPP) and .mpc the extension?
380 A. Dunno. You must ask the guys who created and defined the format. The
381 standard is MPEGplus (MPP/MP+) but the files use .mpc extension.
383 Q. Why do I get .aac files instead of .m4a files when I encode with faac?
384 A. Faac uses mp4v2 to create aac files in an m4a or mp4 container. Some
385 Linux distros have disabled this mp4v2 support due to a licensing issue
386 and this leave faac only capable of generating mpeg-2/ADTS streams.
387 These streams should correctly have the .aac file extension and some
388 players (such as Audacious) will not even play mpeg-2/ADTS streams when
389 they are placed in an .m4a container.
390 As of version 2.7 abcde tests the version of faac being used for mp4v2
391 support and then appropriately places the audio either in .m4a or .aac.
392 Note that tagging is not possible with mpeg-2/ADTS streams in .aac.
394 Q. How do I encode to Apple Lossless Audio Codec (alac)?
395 A. As of abcde 2.7.1 there are 3 ways to encode to alac: using qaac, refalac
396 or FFmpeg. To use qaac or refalac follow the installation directions here:
398 http://www.andrews-corner.org/qaac.html#installation
400 and then set your ~/.abcde.conf file as follows:
402 AACENCODERSYNTAX=qaac
403 QAAC="$HOME/.wine/drive_c/qaac/qaac.exe"
404 # Or use the Open Source alac encoder with this small hack:
405 # QAAC="$HOME/.wine/drive_c/qaac/refalac.exe"
406 QAACENCOPTS="--alac --threading --verbose"
409 To use FFmpeg (or avconv) set your ~/.abcde.conf file as follows:
411 AACENCODERSYNTAX=ffmpeg
413 # Or give the path to avconv instead:
415 FFMPEGENCOPTS="-c:a alac"
418 And then sit back and enjoy the music :)
420 Q. Will FFmpeg be used with abcde for any other audio formats?
421 A. The plan is to use FFmpeg (or avconv) when FFmpeg has a good quality native
422 encoder available. For example FFmpeg has a low quality native native encoder
423 for Vorbis and AAC which will not be used but a great reverse engineered alac
424 encoder that has been used in abcde. FFmpeg also has a good WavPack encoder
425 that has been added in abcde 2.7.1 which can be added into your ~/.abcde.conf
428 # WVENCODERSYNTAX=wavpack
429 WVENCODERSYNTAX=ffmpeg
433 # Appropriate options:
434 FFMPEGENCOPTS="-c:a wavpack -compression_level 6"
435 WAVPACKENCOPTS="-hx3"
436 # Correct output type:
439 You can see in this example how easy it is to switch from one WavPack encoder to
440 another by changing the comment mark '#' on the WVENCODERSYNTAX line. For mp2
441 encoding with FFmpeg try the following:
443 # MP2ENCODERSYNTAX=twolame
444 MP2ENCODERSYNTAX=ffmpeg
448 FFMPEGENCOPTS='-c:a mp2 -b:a 320k'
449 TWOLAMENCOPTS='--bitrate 320'
450 # Correct output type:
453 So currently FFmpeg supports: alac, wavpack and mp2. FFmpeg native aac support will
454 be added when it comes out of 'experimental'. FFmpeg is also used as the default
455 encoder for the Matroska or mka container. A typical example, using the FFmpeg
456 native ac3 encoder, is:
458 MKAENCODERSYNTAX=ffmpeg
460 FFMPEGENCOPTS="-c:a ac3 -b:a 448k"
463 Other suitable codecs for this usage are Vorbis, MP2, MP3, LC-AAC, HE-AAC, WMAv1,
464 WMAv2, eAC3 and Opus. There is much more to come in the future for abcde and FFmpeg!
470 Q. What is/are 'USEPIPES'??
471 A. This is a slightly different method of ripping and encoding with abcde
472 utilising Unix pipes. Using this method a program sends as output what
473 another programs expects as input without writing the information to the
474 hard disk. For it to work with abcde, a ripper must send the data of the
475 CD tracks which are ripped to the 'standard output', while sending other
476 information and error messages to 'standard error' so that the encoder
477 does not get confused. The encoder program needs to be able to encode the
478 information send to it by reading from the standard input (which is what
479 the ripper sends to the standard output).
480 Usually Unix/Linux programs deal with the standard input/output by using
481 the special file name '-', as in the following example:
483 cdripper -o - | audioencoder -i - -o file.ext
485 The 'cdripper' program uses the flag '-o' to identify the file it will
486 output the data to. For the 'audioencoder' program to be able to read
487 the output through a Unix pipe (the '|' symbol), the output needs to be
488 sent to the standard output using the '-' special filename. Once the
489 output has been piped to 'audioencoder' we use the same special filename
490 to read the information as input with the '-i' flag and output it to
491 'file.ext' with the '-o' flag.
493 Q. How do I use USEPIPES with abcde?
494 A. You can run USEPIPES in either of two ways:
496 1. Add 'USEPIPES=y' to your ~/.abcde.conf file
497 2. Use the commandline option 'abcde -P'
499 Q. Do all rippers and encoders work with USEPIPES?
500 A. No :). Keep in mind that every ripper and encoder differs from in each
501 other in the way they interact with pipes and not all rippers and encoders
502 will use or understand the '-o' and '-' options. Currently (August 2015) the
503 following rippers and encoders work:
505 Rippers: cdparanoia, debug, libcdio, cdda2wav, flac, pird.
506 Encoders: mp3enc, lame, bladeenc, oggenc, opusenc, flac, speexenc,
507 mpcenc, wavpack, faac, neroAacEnc, fdkaac, qaac, fhgaacenc,
510 Q. Can I add a ripper or encoder which is not supported?
511 A. Sure! If you plan to use a ripper or encoder which is not supported you
512 need to know how to use the ripper/encoder. For example, cdparanoia just
513 uses '-' as the output filename and works. The program used to decode
514 FLAC files (yes, abcde supports 'ripping' from a FLAC file :) uses '-c'.
515 To add support for a ripper called 'cdripper' which uses the '-' special
516 flag for outputting to the standard output, you need to open the config
517 file (either /etc/abcde.conf or ~/.abcde.conf) and add the line:
519 PIPERIPPER_cdripper="-"
521 For an encoder called 'audioencoder' which uses '--stdin' to read the pipe
522 input, you need to add:
524 PIPE_audioencoder="--stdin"
526 Of course, you should try your configuration and report it to the abcde
527 developers so that it can be included in future versions of abcde. If
528 you are familiar with POSIX shell programing, please open "abcde" and
529 take a look at the lines below the one marked with "###USEPIPESSUPPORT###",
530 the required syntax is reasonably clear.
535 Q. What happened with normalize?
536 A. Normalize has changed its name under Debian, which is the GNU/Linux
537 distribution for developing abcde (well, is The GNU/Linux Distribution
538 i only use, at the moment). Now it is called normalize-audio.
539 If you are using some other flavour of OS, you need to change the name
540 of the executable in your abcde.conf file.
542 Q. I am using MacOSX and I am having problems to use abcde.
543 A. Well, I have a Mac, but I use linux on it. I have not been able to find
544 a way to make it work there, since I do not have the development tools
545 installed. I have placed a basic support, but some user reports are just
546 complaining about abcde not encoding the ripped tracks, as if
547 icedax/cdda2wav/cdparanoia/cddafs would never end reading them. If you have
548 such a system and experience problems, please, report them, and I will
549 try to work them out with your help.
551 Q. My hardware player (put it here) does not recognize the playlists created
552 with abcde. What I am doing wrong?
553 A. Try using "-m" when creating the playlists, or setting DOSPLAYLIST as an
554 option in the config file.
558 Q. I set KEEPWAVS to "y" but abcde insists on erasing my directory, along
559 with the wav tracks. What I am doing wrong?
560 A. The default action set includes clean, which cleans the temp directory,
561 if nothing goes wrong. Take the "clean" out from the action list and you
563 UPDATE: KEEPWAVS unselects now the clean action.
566 Jesus Climent <jesus.climent@hispalinux.es>
567 Andrew Strong <andrew.david.strong@gmail.com>