2. EXECUTION
=========
+Q. I want to force abcde 2.x to behave more like 1.x. How do I do it?
+A. Put these options in your abcde.conf:
+
+ INTERACTIVE=n
+ OUTPUTTYPE=mp3
+ ID3TAGV=1
+
Q. Low on disk space?
A. abcde has different algorithms to schedule ripping and encoding - to
optimize for disk conservation, use -l. You can also define
=====
abcde is a frontend command-line utility (actually, a shell script) that
-grabs tracks off a CD, encodes them to Ogg/Vorbis, MP3, FLAC, Ogg/Speex and/or
-MPP/MP+(Musepack) format, and tags them, all in one go.
+grabs tracks off a CD or a singletrack flac file with an embeded cuesheet,
+encodes them to Ogg/Vorbis, MP3, FLAC, Ogg/Speex and/or MPP/MP+(Musepack)
+format, and tags them, all in one go.
Your finished Ogg/MP3/FLAC/Speex/MPP's are, by default, stored in a subdirectory
of the current directory (named after the artist) with a filename based on the
Many of the questions related of problems executing abcde have been moved to the
FAQ, which should be distributed along with this package. Reffer to that file
-for help.
-
-To make abcde 2.x work more like 1.x, put these options in your abcde.conf:
-
-INTERACTIVE=n
-OUTPUTTYPE=mp3
-ID3TAGV=1
+for more help.
MAJOR CHANGES
=============
parsed CDDB entries.
* Added SHOWCDDBFIELDS to define wether to show the YEAR and GENRE fields from
the CDDB output.
-
+* Added the possibility of using a singletrack flac file with an embeded
+ cuesheet as a source to extract tracks from.
+
Changes in 2.3:
* Support for mkcue, to create a CUE sheet of the CD structure. It can be used
with "-1" to create a backup, so that later on the original CD can be
echo "-C <discid#>"
echo " Specify discid to resume from (only needed if you no longer have the cd)"
echo "-d <device>"
-echo " Specify CDROM device to grab"
+echo " Specify CDROM device to grab (flac uses a single-track flac file)"
echo "-D Debugging mode (equivalent to sh -x abcde)"
echo "-e Erase encoded track information from status file"
#echo "-E Set the encoding information for the tags"
do_replaygain()
{
if checkstatus replaygain; then :; else
- run_command "" echo "Adding reply-gain information..."
+ run_command "" echo "Adding replygain information..."
for OUTPUT in $( echo $OUTPUTTYPE | tr , \ )
# THE OUTPUT NEEDS TO BE CORRECTED WITH THE CONTAINER?
do
if [ "$OSFLAVOUR" = "OSX" ]; then
disktool -u ${CDROM#/dev/}
fi
- TRACKINFO=$($CDDISCID $CDROM)
+ if [ "$CDROMREADERSYNTAX" = "flac" ] ; then
+ TRACKINFO=$($METAFLAC $METAFLACOPTS --export-cuesheet-to=- $CDROM | $CUE2DISCID)
+ else
+ TRACKINFO=$($CDDISCID $CDROM)
+ fi
# Make sure there's a CD in there by checking cd-discid's return code
- if [ "$?" = "1" ]; then
- echo "abcde error: CD could not be read. Perhaps there's no CD in the drive?" >&2
- exit 1
+ if [ ! "$?" = "0" ]; then
+ if [ "$CDROMREADERSYNTAX" = "flac" ] ; then
+ echo "abcde error: cuesheet information from the flac file could not be read." >&2
+ echo "abcde error: Perhaps the flac file does not contain a cuesheet?." >&2
+ exit 1
+ else
+ echo "abcde error: CD could not be read. Perhaps there's no CD in the drive?" >&2
+ exit 1
+ fi
fi
# In OSX, remount the disc again
if [ "$OSFLAVOUR" = "OSX" ]; then
LASTTRACK=$3
UTRACKNUM=$FIRSTTRACK
case "$CDROMREADERSYNTAX" in
+ ### FIXME ### How are we calculating the tracks in flac mode?
+ flac) READTRACKNUMS="$FIRSTTRACK.1-$(($LASTTRACK + 1)).0" ;;
cdparanoia) READTRACKNUMS="$FIRSTTRACK-$LASTTRACK" ;;
cdda2wav) READTRACKNUMS="$FIRSTTRACK+$LASTRACK" ;;
*) echo "abcde error: $CDROMREADERSYNTAX does not support ONETRACK mode"
else
WAVDATA="$ABCDETEMPDIR/track$UTRACKNUM.wav"
case "$CDROMREADERSYNTAX" in
- ## FIXME ## Find the case for dagrab, to avoid exceptions
+ ## FIXME ## Find the cases for dagrab and flac, to avoid exceptions
+ flac)
+ FILEARG="--output-name=$WAVDATA"
+ ;;
dagrab)
FILEARG="-f $WAVDATA"
;;
fi
fi
case "$CDROMREADERSYNTAX" in
+ ### FIXME ### use an exception for flac, since it uses -o
+ ### FIXME ### Shall we just use -o $FILEARG ??
+ flac)
+ nice $READNICE $FLAC -d --cue=${READTRACKNUMS:-$UTRACKNUM.1-$(($UTRACKNUM + 1)).0} "$FILEARG" "$CDROM" ;;
cdparanoia)
nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS $CDROM ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" $REDIR ;;
cdda2wav)
MKCUE=mkcue
MKTOC=cdrdao
DIFF=diff
+CUE2DISCID=cue2discid
# Options for programs called from abcde
# mp3
# Parse command line options
#while getopts 1a:A:bc:C:d:Dehj:klLmMnNo:pPr:Rs:S:t:T:vVxw:W: opt ; do
-while getopts 1a:bc:C:d:Dehj:klLmMnNo:pPr:Rs:S:t:T:vVxw:W: opt ; do
+while getopts 1a:bc:C:d:Dehj:klLmMnNo:pPr:Rs:S:t:T:vVxw:W:z opt ; do
case "$opt" in
1) ONETRACK=y ;;
a) ACTIONS="$OPTARG" ;;
exit 1
fi
;;
+ z) echo "Placeholder for a future autodebug option" ;;
?) usage; exit ;;
esac
done
shift $(($OPTIND - 1))
+# If the user specified a flac file, then switch to special flac mode
+if echo $CDROM | grep -i -q '.flac$'; then
+ vecho "abcde: switching to flac CDROMREADERSYNTAX..."
+ CDROMREADERSYNTAX=flac
+ if [ "$EJECTCD" = "y" ];then
+ vecho "abcde: CDROM flac mode, deactivating EJECTCD..."
+ EJECTCD=n
+ fi
+fi
+
# Decide if we can continue.
if [ "$ONETRACK" = "y" ]; then
# FIXME # remove check as soon as we find out about the other readers
case "$CDROMREADERSYNTAX" in
+ flac) ;;
cdparanoia) ;;
cdda2wav) ;;
*) echo "abcde error: $CDROMREADERSYNTAX does not support ONETRACK mode"
CDROMREADER="$CDDAFS"
CDROMREADEROPTS="$CDDAFSOPTS"
;;
+ flac)
+ CDROMREADER="$FLAC"
+ CDROMREADEROPTS="$FLACOPTS"
+ ;;
esac
# There's only one normalize...
;;
flac)
[ "$FLACENCODERSYNTAX" = "default" ] && FLACENCODERSYNTAX=flac
+ [ "$REPLAYGAIN" = "y" ] && NEEDMETAFLAC=y
[ "$DOTAG" = "y" ] && NEEDMETAFLAC=y
;;
spx)
if [ X"$CDSPEEDVALUE" != "X" ]; then
case "$CDROMREADERSYNTAX" in
cdparanoia|debug) CDROMREADEROPTS="$CDPARANOIAOPTS -S $CDSPEEDVALUE" ;;
+ ### FIXME ### translate "cue2discid" from python to bash
+ flac) NEEDMETAFLAC=y ; NEEDCUE2DISCID=y ;;
*) NEEDCDSPEED=y ;;
esac
fi
# Rippers with USEPIPE support
# FIXME # Include here all the rippers we can figure out support pipes
PIPE_cdparanoia="-"
+PIPE_flac="-c "
# Encoders with USEPIPE support
# FIXME # Include here all the encoders we can figure out support pipes
${NEEDCOMMENTER+$VORBISCOMMENT} ${NEEDMETAFLAC+$METAFLAC} \
${NEEDNORMALIZER+$NORMALIZER} ${NEEDEJECT+$EJECT} \
${NEEDDISKTOOL+disktool} ${NEEDCDSPEED+$CDSPEED} \
- ${NEEDVORBISGAIN+$VORBISGAIN} ${NEEDCUEREADER+$CUEREADER}
+ ${NEEDVORBISGAIN+$VORBISGAIN} ${NEEDCUEREADER+$CUEREADER} \
+ ${NEEDCUE2DISCID+$CUE2DISCID}
do
# Cut off the command-line options we just added in
X=$(echo $X | cut -d' ' -f2)
if [ X"$CDSPEEDVALUE" != "X" ]; then
case "$CDROMREADERSYNTAX" in
- cdparanoia|debug) : ;;
+ cdparanoia|debug) ;;
+ flac) ;;
*) do_cdspeed ;;
esac
fi
fi
# If the above didn't catch the stragglers, this will
wait
-if [ "$DOREPLAYGAIN" = "y" ]; then
+if [ "$REPLAYGAIN" = "y" ]; then
do_replaygain
fi
# Check to see if run_command logged any errors
.TP
.B \-1
Encode the whole CD in a single file. The resulting file uses the CD title
-for tagging.
+for tagging. If the resulting format is a flac file with an embeded cuesheet,
+the file can be used as a source for creating other formats.
.TP
.B \-a [actions]
Comma-delimited list of actions to perform. Can be one or more of:
you still have the CD in the drive). You must have already finished at
least the "read" action during the previous session.
.TP
-.B \-d [devicename]
-CD\-ROM block device that contains audio tracks to be read.
+.B \-d [devicename | filename]
+CD\-ROM block device that contains audio tracks to be read. Alternatively, a
+single-track flac file with embeded cuesheet.
.TP
.B \-D
Capture debugging information (you'll want to redirect this \- try 'abcde \-D
.B \-M
Create a CUE file with information about the CD. Together with the possibility
of creating a single file (see option "\-1"), one can recreate the original CD.
+If the cuesheet is embeded in a flac single file it can be used as source for
+encoding other formats.
.TP
.B \-o [filetype][:filetypeoptions]
Select output type. Can be "vorbis" (or "ogg"), "mp3", "flac", "spx" or "mpc".
.TP
.B \-R
Add replaygain information to the id3 or tag information for play
-normalization. Only works with MP3 and Ogg/Vorbis.
+normalization. Only works with Ogg/FLAC and Ogg/Vorbis.
.TP
.B \-s [fields...]
List, separated by comas, the fields to be shown in the CDDB parsed entries.
ATM.
.TP
.B CDROMREADERSYNTAX
-Specifies the style of cdrom reader to use. Valid options are \'cdparanoia\'
-and \'debug\'. It is used for querying the CDROM and obtain a list of valid
-tracks and DATA tracks. Right now, only cdparanoia is supported.
+Specifies the style of cdrom reader to use. Valid options are \'cdparanoia\',
+\'debug\' and \'flac\'. It is used for querying the CDROM and obtain a list of
+valid tracks and DATA tracks. The special \'flac\' case is used to "rip" CD
+tracks from a single-track flac file.
.TP
.B CUEREADERSYNTAX
Specifies the syntax of the program we use to read the CD CUE sheet. Right now
.TP
.B CDROM
If set, it points to the CD-Rom device which has to be used for audio
-extraction. Abcde tries to guess the right device, but it may fail.
+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.
.TP
.B CDPARANOIACDROMBUS
Defined as "d" when using cdparanoia with an IDE bus and as "g" when using
.TP
.B EJECTCD
If set to "y", abcde will call eject(1) to eject the cdrom from the drive
-after all tracks have been read.
+after all tracks have been read. It has no effect when CDROM is set to a flac
+file.
.TP
.B EXTRAVERBOSE
If set to "y", some operations which are usually now shown to the end user
config file
.TP
.B abcde -W 1
-For double CDs settings: will create the 1st CD starting with the track number
-101, and will add a comment "CD 1" to the tracks
+For double+ CD settings: will create the 1st CD starting with the track number
+101, and will add a comment "CD 1" to the tracks, the second starting with 201
+and so on.
+.TP
+.B abcde \-d singletrack.flac
+Will extract the files contained in singletrack using the embeded cuesheet.
.SH BACKEND TOOLS
abcde requires the following backend tools to work:
.TP
.TP
.B *
(optional) normalize, a WAV file volume normalizer.
+.TP
+.B *
+(optional) mkcue, a CD cuesheet extractor.
.SH "SEE ALSO"
.BR cdparanoia (1),
.BR cdda2wav (1),
.BR oggenc (1),
.BR vorbize (1),
.BR flac (1),
-.BR speexenc(1),
-.BR mppenc(1),
+.BR speexenc (1),
+.BR mppenc (1),
.BR id3 (1),
.BR wget (1),
.BR fetch (1),
.BR cd-discid (1),
.BR distmp3 (1),
.BR distmp3host (1),
-.BR curl(1)
+.BR curl (1)
+.BR mkcue (1),
.SH AUTHORS
Robert Woodcock <rcw@debian.org>,
Jesus Climent <jesus.climent@hispalinux.es> and contributions from many others.
#NORMALIZERSYNTAX=default
# CD reader program to use - currently recognized options are 'cdparanoia',
-# 'cdda2wav', 'dagrab' and 'cddafs' (Mac OS X only).
+# 'cdda2wav', 'dagrab', 'cddafs' (Mac OS X only) and 'flac'.
#CDROMREADERSYNTAX=cdparanoia
# CUE reader program to use.
#ACTIONS=cddb,read,encode,tag,move,clean
# CD device you want to read from
+# It can be defined as a singletrack flac file, but since it might change from
+# file to file it makes little sense to define it here.
#CDROM=/dev/cdrom
# If we are using the IDE bus, we need CDPARANOIACDROMBUS defined as "d"
# If we are using the ide-scsi emulation layer, we need to define a "g"
* Added SHOWCDDBFIELDS to allow the user to show YEAR and GENRE in the
parsed CDDB output.
* Changed cdparanoia-audio-tracks to use the status file to save the data.
+ * Added the possibility of using a singletrack flac file with an embeded
+ cuesheet as a source of tracks.
- -- Jesus Climent <jesus.climent@hispalinux.es> Sat, 3 Sep 2005 19:26:44 +0300
+ -- Jesus Climent <jesus.climent@hispalinux.es> Sat, 1 Oct 2005 14:44:03 +0300
abcde (2.3.4-1) unstable; urgency=low