Clarification for USEPIPES in the FAQ
[abcde.git] / FAQ
1 0. INTRODUCTION
2    ============
3
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. Contact
8    jesus.climent@hispalinux.es, colint@debian.org or 93sam@debian.org if you
9    have a problem or a suggestion.
10
11
12 1. INSTALLATION
13    ============
14
15 Q. How can I install abcde on my system?
16 A. To get abcde you can use a pre-packaged version, available for Debian,
17    FreeBSD, OpenBSD, NetBSD and others.
18    In case you want to install your own release, you need to download the
19    source and install the complementary programs (abcde is just a frontend
20    and its functionality is provided by other programs).
21
22    abcde needs cd-discid. Grab it from:
23    http://www.hispalinux.es/~data/files/cd-discid/
24
25    Read the README files for a complete list of requirements.
26
27 Q. I have a problem, and I reported some time ago. Have you solved it already?
28 A. Maybe. Try downloading the master branch of the development from
29    http://git.einval.com/cgi-bin/gitweb.cgi?p=abcde.git
30
31 Q. When are you going to release a new version?
32 A. When it is ready. I keep on having new ideas and adding them to the trunk
33    (stored in the URL above), so I dont release until all the ideas are
34    finished.
35
36
37 2. EXECUTION
38    =========
39
40 Q. I want to force abcde 2.x to behave more like 1.x. How do I do it?
41 A. Put these options in your abcde.conf:
42
43    INTERACTIVE=n
44    OUTPUTTYPE=mp3
45    ID3TAGV=1
46
47 Q. Low on disk space?
48 A. abcde has different algorithms to schedule ripping and encoding - to
49    optimize for disk conservation, use -l. You can also define
50    WAVOUTPUTDIR=/some/other/path to your /etc/abcde.conf or ~/.abcde.conf to
51    store the WAV files on another NFS shared fisk, for example.
52    Also, UNIX pipes have also been implemented, using "-P", so abcde reads and
53    encodes the tracks from the CD at once. However, it has the drawback that
54    only one format can be encoded at a time.
55
56 Q. How can i make abcde encode faster? My CD reader is way faster than the pace
57    it can encode my tracks.
58 A. abcde can take advantage of SMP systems, just like make. Try 'abcde -j 2' -
59    it'll run two encoder jobs while it rips the next track.
60    You can also make use of systems which are networked, with the help of
61    distmp3. For example, MachineA has a better CPU power and MachineB has a CD
62    drive. Run distmp3host (included in distmp3) on Machine A, and then run
63    abcde -r MachineA from MachineB (where "MachineA" is a dns name or IP
64    address). Use this in combination with '-j 0' to shift all encoding off the
65    local machine.
66
67 Q. I am having problems with *my CD reading program* reading the drive as a
68    user.
69 A. You might have to add yourself (or the users who want to use abcde) to the
70    cdrom group and change the permissions of the cdrom device to 660. If you
71    have a SCSI cdrom drive, check the permissions of /dev/sg* as well.
72
73 Q. I would like to give the trackname and the artist_name directly to the
74    encoder (in my case oggenc), but found no documentation.
75 A. That is not possible, since abcde gets the information from CDDB database.
76    You can create a template and fill it with the option "-n". Also, you can
77    get the CDDB entry and edit it yourself. abcde has also an option to drop
78    back to a template if you like none of the CDDB entries, selecting 0 from
79    the CDDB options.
80
81 Q. (Thanks to Amaya) Where are those options and settings defined? Why dont
82    you include a proper abcde.conf as an example?
83 A. I do. It should be installed under /etc/abcde.conf and contains more or
84    less all the defaults abcde uses. You can use $(HOME)/.abcde.conf to
85    override those defaults. More information can be obtained from the man page
86    which can be consulted using "man abcde".
87
88 Q. I keep on getting files with ".ogg.ogg" extension. What am I doing wrong?
89 A. The code for multiple-output adds automatically the extension of the
90    different outputs you select with the "-o" extension (or with OUTPUTTYPE
91    variable). Erase the ".${OUTPUTTYPE}" part from the OUTPUTFORMAT variable
92    in /etc/abcde.conf or ~/.abcde.conf
93
94 Q. I have modified some of the options, and now CDDB has stopped working.
95 A. Check that you have modified everything in the right way. For instance, if
96    you modify the HTTPGET program you might want to set some options of your
97    own. If you use the predefined ones (wget, curl and fetch) abcde will try
98    to use some defaults. Keep in mind that the output should go to the output
99    as standard output, to be saved in a file for later use.
100
101    If abcde seems to be ignoring your configuration options or not running
102    commands such as the encoder, you may have misquoted something. Config
103    options such as the following do not work:
104
105    LAMEOPTS=-h -k
106
107    Try this instead:
108
109    LAMEOPTS='-h -k'
110
111 Q. How can I separate the different output files I get using multiple-output
112    support?
113 A. Use the OUTPUT variable in PLAYLISTFORMAT and OUTPUTFORMAT. It holds the
114    different output file types you passed to abcde (i.e., ogg, mp3, flac)
115    during playlist creation and file/directory creation.
116
117 Q. I have a CD with a data track, and abcde complaints it cannot read/encode
118    it.
119 A. From version 2.2 onwards, abcde includes some checkings with cdparanoia, to
120    try to get this right.
121    (It is not easy to find a data track on a CD. Right now, I can only think
122    of getting the track info from CDDB and ask the user for continuing should
123    a "data" track name is found. But the solution is far from been optimal.
124    For now, if you find a "data" track and you know the number, restart abcde
125    specifying the tracks to be encoded, leaving out the data one).
126
127 Q. I am requested to have "eject" when setting the speed although I do not use
128    it for anything.
129 A. If you do not use cdparanoia, eject is used for setting the speed of the
130    cdrom drive. You can substitute it for "setcd" with "-x" as the argument,
131    but you have to install it manually (setcd is, at least, available in
132    Debian).
133    Another way to get the same results is using the pre_read function, defined
134    in your /etc/abcde.conf file.
135
136 Q. I have a CD set with 1+ discs, and want to have them in the same directory,
137    sorted properly. What can abcde do for me?
138 A. Set abcde to rip the first CD and give it the option "-t 101". Use a generic
139    name for the CD, and reuse it with the rest of the CDs, editing the CDDB
140    entries. Use "-t 201" for the second CD and so on. Use "-w <comment>" to
141    add a comment about the CD you are ripping (-w "disc #"). Alternatively you
142    can use only the "-t ###" option and then move all the files to the same
143    directory, but the tag/comment information on the files will differ. If you
144    want the tagged track number to be set to the modified number you should use
145    "-T ###".
146    Even better! If you use "-W <cd_number>", abcde will put a comment to every
147    CD set ("CD <number>") and modify the number of the tracks both in the file
148    name and the tag/comment information.
149
150 Q. I have a live concert. I want to encode it in a single file. How do i do it?
151 A. Use "-1" and it will be encoded in a single file. Use "cue" as an action to
152    make a CUE sheet file where the information about the tracks is stored.
153
154 Q. Can I use abcde to take a backup of my CD collection?
155 A. Yes. Use "abcde -1 -o flac -a default,cue" and it will create a single-track
156    FLAC file with an embedded cuesheet. Later on, you can use the command
157    "abcde -o vorbis -d flac-file.flac" to extract the individual tracks in
158    Ogg/Vorbis format. Of course you can select whatever format you want.
159
160
161 3. CDDB and Musicbrainz
162    ====================
163
164 Q. I need to go through an HTTP proxy for CDDB access.
165 A. No problem, just export your http_proxy variable first so wget/fetch/curl
166    can see it.
167
168 Q. I already store CDDB entries in my hard disc. Can I make use of them?
169 A. Piece of cake. Just edit CDDBLOCALDIR to point to the repository and give
170    abcde the "-L" flag to make use of it.
171
172 Q. Fine, now it uses local CDDB, but I have no network connection. How can I
173    disable CDDB checks?
174 A. Use the "-L -n" combination. It will try to use local CDDB entries, and if
175    nothing can be found, it will use a template. You will be also given the
176    choice to edit such template.
177
178 Q. How can I use some other CDDB information provider?
179 A. abcde now uses FreeDB by default. To use a different FreeDB mirror or
180    another CDDB service, change the CDDBURL option in your abcde.conf.
181
182 Q. After requesting CDDB data, I received several answers which seem to be
183    quite alike. Can I find out the difference between some of them?
184 A. Yes. When asked which one you want to select, use "X,Y" where X and Y are
185    the numbers of the selections you want to find the difference between.
186
187 Q. I don't like CDDB/FreeDB. How can I use Musicbrainz instead?
188 A. Set CDDBMETHOD=musicbrainz and try it!
189
190
191 4. abcde and Album Art
192    ===================
193
194 Q. Can abcde download album art?   
195 A. As of abcde 2.6.1 it is possible to download a suitable cover
196    image from within abcde that can be used by applications such
197    as Audacious and vlc to illustrate playback with an album cover.
198    Many hardware playback devices such as iPODs will also use this
199    image during playback and show it on the device's display.
200
201 Q. How does album art downloading work?
202 A. The details are contained in abcde within a new function called
203    'getalbumart' which can be called either from the commandline or 
204    from within an ~/.abcde.conf file. The technique works in 3 possible
205    ways:
206
207     1. If CDDBMETHOD is musicbrainz the album art is downloaded from
208        coverartarchive by MBID (MusicBrainz Identifier)
209     2. If 1 fails, download is tried from amazon by ASIN (Amazon 
210        Standard Identification Number)
211     3. If if 1 and 2 fail or CDDBMETHOD is cddb the album art will 
212        be downloaded using glyrc by artist + album title
213
214    You  will need to install your distro's package of glyr, a music 
215    related metadata search engine, and it is strongly advised that
216    you use 'musicbrainz' for your cddb lookups. To access the more 
217    advanced features of getalbumart it is also strongly advised that
218    you install the ImageMagick package of your distro. getalbumart 
219    will work without ImageMagick but functionality will be reduced.
220
221 Q. What settings and options should I select?
222 A. If you want to operate abcde from the commandline only you will
223    get reasonable results with something like either of the following:
224
225      abcde -o mp3:-V2 -a default,getalbumart
226      abcde -o mp3:-V2 -G
227
228    But to experience all of the options of getalbumart you should also
229    consider setting the following in your ~/.abcde.conf file:
230
231     #----------------------------------------------------------------#
232     CDDBMETHOD=musicbrainz       # Use MusicBrainz for CDDB 
233     ACTIONS=default,getalbumart  # Select the album art action + default
234
235     # Give the path to the metadata search application glyrc. Add any
236     # glyrc options:
237     GLYRC=glyrc
238     GLYRCOPTS= 
239
240     # Give the path to ImageMagick's 'identify' which is used to give a 
241     # commandline summary of the album art and also assist in any conversions.
242     # Add any 'identify' options:
243     IDENTIFY=identify
244     IDENTIFYOPTS=
245
246     # Give the path to ImageMagick's 'display' which will show the album art. 
247     # The options below are the abcde default, feel free to add your own:  
248     DISPLAYCMD=display
249     DISPLAYCMDOPTS="-resize 512x512 -title abcde_album_art"
250
251     # Give the path to ImageMagick's 'convert' which is used to convert album 
252     # art to the format specified in ALBUMARTTYPE. Add any 'convert' options:   
253     CONVERT=convert
254     CONVERTOPTS=
255     # If you want to run CONVERTOPTS on all files (including those specified
256     # in ALBUMARTTYPE) set the following to "y":
257     ALBUMARTALWAYSCONVERT="n"
258
259     # By default the filename will be cover.jpg and the file format will
260     # be jpeg. 'convert' will automagically change other formats to jpeg:
261     ALBUMARTFILE="cover.jpg"
262     ALBUMARTTYPE="JPEG"
263     #----------------------------------------------------------------#
264
265    There are more hints concerning commandline options in the sample 
266    abcde.conf file included with your abcde package. Good news is that
267    the existing defaults will work well without any extra adjustments :).
268
269 Q. Can I manually select album art?
270 A. If you have set INTERACTIVE=y (this is the default) then you will have
271    the opportunity to manually select the album art of your choice either
272    from online by typing in a URL or by typing in the path to a local file.
273    
274 Q. What if I want my album art embedded?
275 A. The philosophy of getalbumart at the moment is to simply place the album
276    art in the same location as the encoded files. Perhaps this will change
277    one day. In the meantime you can use abcde's post_encode function in
278    your ~/.abcde.conf file to embed the album art. Here is an example for
279    mp3 embedding using eyeD3:
280
281    #----------------------------------------------------------------#
282    post_encode ()
283    {
284     ARTISTFILE="$(mungefilename "$TRACKARTIST")"
285     ALBUMFILE="$(mungefilename "$DALBUM")"
286
287    if [ "$OUTPUTTYPE" = "mp3" ] && [ "$TAGGER" = "$EYED3" ] ; then
288     vecho "Preparing to embed the album art..." >&2
289    else
290     vecho "Not embedding album art, you need mp3 output and eyeD3 tagging..." >&2
291     return 1
292    fi
293
294    if [ "$VARIOUSARTISTS" = "y" ] ; then
295      FINDPATH="$(eval echo "$VAOUTPUTFORMAT")"
296    else
297      FINDPATH="$(eval echo "$OUTPUTFORMAT")"
298    fi
299
300    TRIMPATH="$(dirname "$OUTPUTDIR/$FINDPATH")"
301    cd "$TRIMPATH"
302
303     if [ -e "cover.jpg" ] ; then
304       for i in *.mp3
305       do
306       eyeD3 --add-image cover.jpg:FRONT_COVER "$i"
307       done
308       mkdir backup && mv cover.jpg backup
309       vecho "Your files have had the album art embedded..." >&2
310     else
311      vecho "No album art found so no image embedded..." >&2
312     fi
313    }
314   #----------------------------------------------------------------#
315
316   Variations of the 'for' loop in this example should work for other encoding 
317   types. For example with flac:
318
319    #--------------------
320    for i in *.flac
321    do 
322     metaflac --import-picture-from=cover.jpg "$i"
323    done
324    #--------------------
325
326   With other appropriate adjustments to the $OUTPUTTYPE and $TAGGER checks of 
327   course...
328
329   
330 4. FORMATS
331    =======
332
333 Q. What formats can I encode my music to?
334 A. As for version 2.2, abcde includes support for MP3, Ogg/Vorbis,
335    Ogg/Speex, Flac and MPP/MP+(Musepack). Support for AAC will be added once
336    an FLOSS encoder/decoder is working.
337
338 Q. I want the new *put the newest and coolest codec there* format to be
339    supported by abcde. Abcde is so cool but i want to encode also to this
340    new format...
341 A. Patches are welcome! ;)
342    No, seriously, if the format is usable, available for Linux and open
343    source/free software, it should be fairly easy to integrate. Support for
344    AAC (m4p) should be the next one to be introduced.
345
346 Q. I use Debian/RedHat/(put your Unix flavour here) and MP3 encoding is not
347    working. What am I doing wrong?
348 A. Since MP3 is considered non-free (you get it for free, but hardware players
349    and net broadcasters have to pay license fees), some release engineering
350    groups and release management teams have decided not to provide MP3 encoding
351    tools.
352    These distributions or operative systems have decided to use Ogg/Vorbis as
353    the default encoding format, since it contains no (known) patent claims
354    and they are (supposed to be) completely Free (released under a BSD-like
355    license).
356    However, there is no strong (at the moment) hardware support, although
357    some groups and companies are strongly working on getting it, real soon
358    now. For that reason some people prefer to encode to MP3.
359
360    UPDATE *** UPDATE
361    There are known brands already selling Ogg/Vorbis portable players: Rio,
362    iRiver, Neuros, iAudio,...
363    Go buy one and you have no more reasons to use MP3.
364
365    If you are among those individuals, you might need to add support for MP3
366    encoding to your system:
367    Debian : check http://ftp.nerim.net/debian-marillat to install lame in your
368             system. Others prefer bladeenc. Check www.apt-get.org or google.
369    RedHat : search on rpmfind.net
370    FreeBSD: By default includes LAME support.
371    OpenBSD: Available by specifying you want to install the port with LAME
372             support, or by just installing it later from the ports tree.
373    NetBSD : Available in pkgsrc.
374
375    Others : Please, help me here.
376
377 Q. Huh! Why is MPPENCODER (with MPP) and .mpc the extension?
378 A. Dunno. You must ask the guys who created and defined the format. The
379    standard is MPEGplus (MPP/MP+) but the files use .mpc extension.
380    
381 Q. Why do I get .aac files instead of .m4a files when I encode with faac?
382 A. Faac uses mp4v2 to create aac files in an m4a or mp4 container. Some 
383    Linux distros have disabled this mp4v2 support due to a licensing issue 
384    and this leave faac only capable of generating mpeg-2/ADTS streams. 
385    These streams should correctly have the .aac file extension and some 
386    players (such as Audacious) will not even play mpeg-2/ADTS streams when
387    they are placed in an .m4a container.
388    As of version 2.6.1 abcde tests the version of faac being used for mp4v2 
389    support and then appropriately  places the audio either in .m4a or .aac. 
390    Note that tagging is not possible with mpeg-2/ADTS streams in .aac.
391
392
393 5. USEPIPES
394    ========
395
396 Q. What is/are 'USEPIPES'??
397 A. This is a slightly different method of ripping and encoding with abcde
398    utilising Unix pipes. Using this method a program sends as output what
399    another programs expects as input without writing the information to the
400    hard disk. For it to work with abcde, a ripper must send the data of the
401    CD tracks which are ripped to the 'standard output', while sending other
402    information and error messages to 'standard error' so that the encoder
403    does not get confused. The encoder program needs to be able to encode the
404    information send to it by reading from the standard input (which is what
405    the ripper sends to the standard output).
406    Usually Unix/Linux programs deal with the standard input/output by using
407    the special file name '-', as in the following example:
408
409    cdripper -o - | audioencoder -i - -o file.ext
410
411    The 'cdripper' program uses the flag '-o' to identify the file it will
412    output the data to. For the 'audioencoder' program to be able to read
413    the output through a Unix pipe (the '|' symbol), the output needs to be
414    sent to the standard output using the '-' special filename. Once the
415    output has been piped to 'audioencoder' we use the same special filename
416    to read the information as input with the '-i' flag and output it to
417    'file.ext' with the '-o' flag.
418
419 Q. How do I use USEPIPES with abcde?
420 A. You can run USEPIPES in either of two ways:
421
422      1. Add 'USEPIPES=y' to your ~/.abcde.conf file
423      2. Use the commandline option 'abcde -P'
424
425 Q. Do all rippers and encoders work with USEPIPES?
426 A. No :). Keep in mind that every ripper and encoder differs from in each
427    other in the way they interact with pipes and not all rippers and encoders
428    will use or understand the '-o' and '-' options. Currently (May 2015) the
429    following rippers and encoders work:
430
431    Rippers:  cdparanoia, debug, libcdio, cdda2wav, flac, pird.
432    Encoders: mp3enc, lame, bladeenc, oggenc, opusenc, flac, speexenc,
433              mpcenc, wavpack, faac, neroAacEnc, fdkaac.
434
435 Q. Can I add a ripper or encoder which is not supported?
436 A. Sure! If you plan to use a ripper or encoder which is not supported you
437    need to know how to use the ripper/encoder. For example, cdparanoia just
438    uses '-' as the output filename and works. The program used to decode
439    FLAC files (yes, abcde supports 'ripping' from a FLAC file :) uses '-c'.
440    To add support for a ripper called 'cdripper' which uses the '-' special
441    flag for outputting to the standard output, you need to open the config
442    file (either /etc/abcde.conf or ~/.abcde.conf) and add the line:
443
444      PIPERIPPER_cdripper="-"
445    
446    For an encoder called 'audioencoder' which uses '--stdin' to read the pipe
447   input, you need to add:
448
449      PIPE_audioencoder="--stdin"
450
451   Of course, you should try your configuration and report it to the abcde
452   developers so that it can be included in future versions of abcde. If
453   you are familiar with POSIX shell programing, please open "abcde" and
454   take a look at the lines below the one marked with "###USEPIPESSUPPORT###",
455   the required syntax is reasonably clear.
456
457 6. MISC PROBLEMS
458    =============
459
460 Q. What happened with normalize?
461 A. Normalize has changed its name under Debian, which is the GNU/Linux
462    distribution for developing abcde (well, is The GNU/Linux Distribution
463    i only use, at the moment). Now it is called normalize-audio.
464    If you are using some other flavour of OS, you need to change the name
465    of the executable in your abcde.conf file.
466
467 Q. I am using MacOSX and I am having problems to use abcde.
468 A. Well, I have a Mac, but I use linux on it. I have not been able to find
469    a way to make it work there, since I do not have the development tools
470    installed. I have placed a basic support, but some user reports are just
471    complaining about abcde not encoding the ripped tracks, as if
472    icedax/cdda2wav/cdparanoia/cddafs would never end reading them. If you have
473    such a system and experience problems, please, report them, and I will
474    try to work them out with your help.
475
476 Q. My hardware player (put it here) does not recognize the playlists created
477    with abcde. What I am doing wrong?
478 A. Try using "-m" when creating the playlists, or setting DOSPLAYLIST as an
479    option in the config file.
480
481 OBSOLETE
482 --------
483 Q. I set KEEPWAVS to "y" but abcde insists on erasing my directory, along
484    with the wav tracks. What I am doing wrong?
485 A. The default action set includes clean, which cleans the temp directory,
486    if nothing goes wrong. Take the "clean" out from the action list and you
487    are done.
488    UPDATE: KEEPWAVS unselects now the clean action.
489
490 --
491 Jesus Climent <jesus.climent@hispalinux.es>
492 Andrew Strong <andrew.david.strong@gmail.com>