-#!/bin/sh
+#!/bin/bash
# Copyright (c) 1998-2001 Robert Woodcock <rcw@debian.org>
# Copyright (c) 2003-2005 Jesus Climent <jesus.climent@hispalinux.es>
# This code is hereby licensed for public consumption under either the
#
# Copyright for this work is to expire January 1, 2010, after which it
# shall be public domain.
+#
+# $Id$
-VERSION="2.3.99"
+VERSION="2.3.99-$Revision$"
usage ()
{
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 "-f Force operations that otherwise are considered harmful. Read \"man abcde\""
echo "-g Use \"lame --nogap\" for MP3 encoding. Disables low disk and pipes flags"
echo "-h This help information"
echo "-S <#> Set the CD speed"
echo "-t <#> Start the track numbering at a given number"
echo "-T <#> Same as -t but modifies tag numbering"
+echo "-u Use UNICODE tags and comments"
echo "-v Show version number and exit"
echo "-V Be a bit more verbose about what is happening behind the scenes"
echo "-x Eject CD after all tracks are read"
# do_getcddbinfo
# Finds an specific field from cddbinfo
-#
-# TRACKNAME=$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | cut -f2 -d= | tr -d \[:cntrl:\] | sed 's/\ \+$//')
-# TRACKNAME=$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | head -n 1 | cut -f2 -d= | tr -d \[:cntrl:\])
-# TRACKNAME="$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | cut -f2- -d= | tr -d \[:cntrl:\] | sed 's/\ \+$//')"
-
do_getcddbinfo()
{
case $1 in
;;
esac
OUTPUTFILES=""
+ REPLAYINDEX=0
for UTRACKNUM in $TRACKQUEUE
do
CDDBTRACKNUM=$(expr $UTRACKNUM - 1)
ALBUMFILE="$(mungefilename "$DALBUM")"
do_gettracknum
if [ "$VARIOUSARTISTS" = "y" ]; then
- OUTPUTFILE=$(eval echo $VAOUTPUTFORMAT)
+ OUTPUTFILE="$(eval echo $VAOUTPUTFORMAT)"
else
- OUTPUTFILE=$(eval echo $OUTPUTFORMAT)
+ OUTPUTFILE="$(eval echo $OUTPUTFORMAT)"
fi
- OUTPUTFILES="$OUTPUTDIR/$OUTPUTFILE.$OUTPUT $OUTPUTFILES"
+ OUTPUTFILES[$REPLAYINDEX]="$OUTPUTDIR/$OUTPUTFILE.$OUTPUT"
+ (( REPLAYINDEX = $REPLAYINDEX + 1 ))
done
case "$OUTPUT" in
flac)
- run_command replaygain-flac $METAFLAC --add-replay-gain $OUTPUTFILES
+ run_command replaygain-flac $METAFLAC --add-replay-gain "${OUTPUTFILES[@]}"
;;
vorbis|ogg)
- run_command replaygain-vorbis $VORBISGAIN --album $OUTPUTFILES
+ run_command replaygain-vorbis $VORBISGAIN --album "${OUTPUTFILES[@]}"
;;
mp3)
- run_command replaygain-mp3 $MP3GAIN -a $OUTPUTFILES
+ run_command replaygain-mp3 $MP3GAIN -a "${OUTPUTFILES[@]}"
+ ;;
+ mpc)
+ run_command replaygain-mpc $MPPGAIN --auto "${OUTPUTFILES[@]}"
;;
*);;
esac
case "$2" in
%local*%)
case "$FLACENCODERSYNTAX" in
- flac) $RUN_COMMAND nice $ENCNICE $FLACENCODER $FLACENCODEROPTS -o "$OUT" "$IN" ;;
+ flac) $RUN_COMMAND nice $ENCNICE $FLACENCODER -f $FLACENCODEROPTS -o "$OUT" "$IN" ;;
esac
;;
*)
# do_batch_gain
# variables used:
-# MP3GAIN, MP3GAINOPTS, VORBISGAIN, VORBISGAINOPTS
+# MP3GAIN, MP3GAINOPTS, VORBISGAIN, VORBISGAINOPTS, MPPGAIN, MPPGAINOPTS
# FIXME #
do_batch_gain ()
{
CDSPEED=eject
VORBISGAIN=vorbisgain
MP3GAIN=mp3gain
+MPPGAIN=replaygain
MKCUE=mkcue
MKTOC=cdrdao
DIFF=diff
VORBIZEOPTS=
OGGENCOPTS=
# flac
-FLACOPTS="-f"
+FLACOPTS=
# speex
SPEEXENCOPTS=
# mpc
fi
# 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:bBc:C:d:Defghj:klLmMnNo:pPr:s:S:t:T:vVxw:W:z opt ; do
+#while getopts 1a:bc:C:d:Dehj:klLmMnNo:pPr:Rs:S:t:T:vVxw:W: opt ; do
+while getopts 1a:bBc:C:d:Defghj:klLmMnNo:pPr:s:S:t:T:uvVxw:W:z opt ; do
case "$opt" in
1) ONETRACK=y ;;
a) ACTIONS="$OPTARG" ;;
R) DOREPLAYGAIN=y ;;
s) SHOWCDDBFIELDS="$OPTARG" ;;
S) CDSPEEDVALUE="$OPTARG" ;;
-# t) PREPROCESSFORMATS="$OPTARG"
-# PREPROCESS=y ;;
-# T) POSTPROCESSFORMATS="$OPTARG" ;;
t) STARTTRACKNUMBER="$OPTARG" ;;
T) STARTTRACKNUMBER="$OPTARG" ; STARTTRACKNUMBERTAG="y" ;;
+ u) CDDBPROTO=6 ;;
v)
echo "This is abcde v$VERSION."
echo "Usage: abcde [options] [tracks]"
fi
fi
+# If the user provided a DISCID, disable eject
+if [ -n "$DISCID" ]; then EJECTCD=n ; fi
+
# Decide if we can continue.
if [ "$ONETRACK" = "y" ]; then
# FIXME # remove check as soon as we find out about the other readers
;;
spx)
[ "$SPEEXENCODERSYNTAX" = "default" ] && SPEEXENCODERSYNTAX=speexenc
+# [ "$DOREPLAYGAIN" = "y" ] &&
;;
mpc)
[ "$MPPENCODERSYNTAX" = "default" ] && MPPENCODERSYNTAX=mppenc
+ [ "$DOREPLAYGAIN" = "y" ] && NEEDMPPGAIN=y
;;
wav)
if [ "$KEEPWAVS" = "y" ]; then
${NEEDNORMALIZER+$NORMALIZER} ${NEEDEJECT+$EJECT} \
${NEEDDISKTOOL+disktool} ${NEEDCDSPEED+$CDSPEED} \
${NEEDVORBISGAIN+$VORBISGAIN} ${NEEDMP3GAIN+$MP3GAIN} \
+ ${NEEDMPPGAIN+$MPPGAIN} \
${NEEDCUEREADER+$CUEREADER} ${NEEDCUE2DISCID+$CUE2DISCID}
do
# Cut off the command-line options we just added in
if [ "$NOGAP" = "y" ] || [ "$BATCHNORM" = "y" ]; then
:
else
+ # If we are not reading, set the encode output to loud already, so
+ # that we can see the output of the first track.
+ if [ "$MAXPROCS" = "1" ] && [ ! "$DOREAD" = "y" ]; then
+ echo "encode-output=loud" >> "$ABCDETEMPDIR/status"
+ fi
echo NEXTTRACK # Get the encoder machine churning again
if [ "$DOREAD" = "y" ]; then
if [ "$LOWDISK" = "y" ] && [ "$DOENCODE" = "y" ]; then
TRACKNUM="$FIRSTTRACK"
splitvarious
else
-# TRACKNUM=$(printf %0.${TRACKNUMPADDING}d $(expr ${UTRACKNUM} + 0))
TRACKNUM=$UTRACKNUM
CDDBTRACKNUM=$(expr $UTRACKNUM - 1)
- #TRACKNAME="$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | cut -f2- -d= | tr -d \[:cntrl:\] | sed 's/\ \+$//')"
do_getcddbinfo TRACKNAME
splitvarious
fi
if [ "$DOREPLAYGAIN" = "y" ]; then
do_replaygain
fi
+
# Check to see if run_command logged any errors
if [ -f "$ABCDETEMPDIR/errors" ]; then
log error "The following commands failed to run:"