summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
01904e3)
First steps to get a singletrack flac as a source for tracks
git-svn-id: http://abcde.googlecode.com/svn/trunk@129
a0fa61bc-5347-0410-a1a9-
7f54aa4e1825
+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
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
=====
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
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
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
MAJOR CHANGES
=============
MAJOR CHANGES
=============
parsed CDDB entries.
* Added SHOWCDDBFIELDS to define wether to show the YEAR and GENRE fields from
the CDDB output.
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
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 "-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"
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
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
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
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
# 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
fi
# In OSX, remount the disc again
if [ "$OSFLAVOUR" = "OSX" ]; then
LASTTRACK=$3
UTRACKNUM=$FIRSTTRACK
case "$CDROMREADERSYNTAX" in
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"
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
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"
;;
dagrab)
FILEARG="-f $WAVDATA"
;;
fi
fi
case "$CDROMREADERSYNTAX" in
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)
cdparanoia)
nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS $CDROM ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" $REDIR ;;
cdda2wav)
MKCUE=mkcue
MKTOC=cdrdao
DIFF=diff
MKCUE=mkcue
MKTOC=cdrdao
DIFF=diff
# Options for programs called from abcde
# mp3
# 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
# 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" ;;
case "$opt" in
1) ONETRACK=y ;;
a) ACTIONS="$OPTARG" ;;
+ z) echo "Placeholder for a future autodebug option" ;;
?) usage; exit ;;
esac
done
shift $(($OPTIND - 1))
?) 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
# 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
cdparanoia) ;;
cdda2wav) ;;
*) echo "abcde error: $CDROMREADERSYNTAX does not support ONETRACK mode"
cdparanoia) ;;
cdda2wav) ;;
*) echo "abcde error: $CDROMREADERSYNTAX does not support ONETRACK mode"
CDROMREADER="$CDDAFS"
CDROMREADEROPTS="$CDDAFSOPTS"
;;
CDROMREADER="$CDDAFS"
CDROMREADEROPTS="$CDDAFSOPTS"
;;
+ flac)
+ CDROMREADER="$FLAC"
+ CDROMREADEROPTS="$FLACOPTS"
+ ;;
esac
# There's only one normalize...
esac
# There's only one normalize...
;;
flac)
[ "$FLACENCODERSYNTAX" = "default" ] && FLACENCODERSYNTAX=flac
;;
flac)
[ "$FLACENCODERSYNTAX" = "default" ] && FLACENCODERSYNTAX=flac
+ [ "$REPLAYGAIN" = "y" ] && NEEDMETAFLAC=y
[ "$DOTAG" = "y" ] && NEEDMETAFLAC=y
;;
spx)
[ "$DOTAG" = "y" ] && NEEDMETAFLAC=y
;;
spx)
if [ X"$CDSPEEDVALUE" != "X" ]; then
case "$CDROMREADERSYNTAX" in
cdparanoia|debug) CDROMREADEROPTS="$CDPARANOIAOPTS -S $CDSPEEDVALUE" ;;
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
*) NEEDCDSPEED=y ;;
esac
fi
# Rippers with USEPIPE support
# FIXME # Include here all the rippers we can figure out support pipes
PIPE_cdparanoia="-"
# Rippers with USEPIPE support
# FIXME # Include here all the rippers we can figure out support pipes
PIPE_cdparanoia="-"
# Encoders with USEPIPE support
# FIXME # Include here all the encoders we can figure out support pipes
# 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} \
${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)
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
if [ X"$CDSPEEDVALUE" != "X" ]; then
case "$CDROMREADERSYNTAX" in
+ cdparanoia|debug) ;;
+ flac) ;;
fi
# If the above didn't catch the stragglers, this will
wait
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
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
.TP
.B \-1
Encode the whole CD in a single file. The resulting file uses the CD title
+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:
.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
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
.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.
.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 \-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
.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.
.TP
.B \-s [fields...]
List, separated by comas, the fields to be shown in the CDDB parsed entries.
ATM.
.TP
.B CDROMREADERSYNTAX
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 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
.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 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
.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
.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
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
.SH BACKEND TOOLS
abcde requires the following backend tools to work:
.TP
.TP
.B *
(optional) normalize, a WAV file volume normalizer.
.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),
.SH "SEE ALSO"
.BR cdparanoia (1),
.BR cdda2wav (1),
.BR oggenc (1),
.BR vorbize (1),
.BR flac (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 id3 (1),
.BR wget (1),
.BR fetch (1),
.BR cd-discid (1),
.BR distmp3 (1),
.BR distmp3host (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.
.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',
#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.
#CDROMREADERSYNTAX=cdparanoia
# CUE reader program to use.
#ACTIONS=cddb,read,encode,tag,move,clean
# CD device you want to read from
#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"
#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 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
abcde (2.3.4-1) unstable; urgency=low