Add configurable options for replaygain tools.
[clinton/abcde.git] / abcde
diff --git a/abcde b/abcde
index 69d0674..60c07ae 100755 (executable)
--- a/abcde
+++ b/abcde
@@ -13,7 +13,7 @@
 #
 # $Id$
 
-VERSION='2.4'
+VERSION='2.4.0.1'
 
 usage ()
 {
@@ -496,7 +496,7 @@ makeids ()
 do_replaygain()
 {
        if checkstatus replaygain; then :; else
-               run_command "" echo "Adding replygain information..."
+               run_command "" echo "Adding replaygain information..."
                for TMPOUTPUT in $( echo $OUTPUTTYPE | tr , \ )
                do
                        case $TMPOUTPUT in
@@ -541,14 +541,14 @@ do_replaygain()
                        done
                        case "$OUTPUT" in
                                flac)
-                                       run_command replaygain-flac nice $ENCNICE $METAFLAC --add-replay-gain "${OUTPUTFILES[@]}"
+                                       run_command replaygain-flac nice $ENCNICE $METAFLAC $FLACGAINOPTS "${OUTPUTFILES[@]}"
                                        #run_command replaygain-flac true
                                        ;;
                                vorbis|ogg)
-                                       run_command replaygain-vorbis nice $ENCNICE $VORBISGAIN --album "${OUTPUTFILES[@]}"
+                                       run_command replaygain-vorbis nice $ENCNICE $VORBISGAIN $VORBISGAINOPTS "${OUTPUTFILES[@]}"
                                        ;;
                                mp3)
-                                       run_command replaygain-mp3 nice $ENCNICE $MP3GAIN -a -k "${OUTPUTFILES[@]}"
+                                       run_command replaygain-mp3 nice $ENCNICE $MP3GAIN $MP3GAINOPTS "${OUTPUTFILES[@]}"
                                        ;;
                                mpc)
                                        run_command replaygain-mpc nice $ENCNICE $MPPGAIN --auto "${OUTPUTFILES[@]}"
@@ -801,7 +801,7 @@ do_tag ()
                        GENREID=$(do_getgenreid "${CDGENRE}")
                        # Set TPE2 in case we have a Various Artists rip.
                        TPE2=""
-                       if [ "$VARIOUSARTISTS" = "y"]; then
+                       if [ "$VARIOUSARTISTS" = "y" ]; then
                                TPE2="Various"
                        fi
        
@@ -834,7 +834,7 @@ do_tag ()
                                                $TAGGER $TAGGEROPTS -c "$COMMENTOUTPUT" \
                                                -A "$DALBUM" -a "$TRACKARTIST" -t "$TRACKNAME" \
                                                -y "$CDYEAR" -g "$GENREID" \
-                                               -T "${TRACKNUM:-$1/$TRACKS}" \
+                                               -T "${TRACKNUM:-$1}/$TRACKS" \
                                                "${TPE2:+--TPE2 \"$TPE2\"}" \
                                                "$ABCDETEMPDIR/track$1.$OUTPUT"
                                        ;;
@@ -1679,7 +1679,7 @@ abcde.mkcue () {
     echo REM DISCID $DISCID
     echo FILE \"dummy.wav\" WAVE
 
-    if [ $1 -ne 150 ] && [ $MODE = "PREGAP"] ; then
+    if [ $1 -ne 150 ] && [ $MODE = "PREGAP" ] ; then
         OFFSET=$1
     else
         OFFSET=150
@@ -2715,7 +2715,7 @@ do_cdread ()
                # FIXME # Add the possibility of grabbing ranges of tracks in onetrack
                # FIXME # Until then, we grab the whole CD in one track, no matter what
                # the user said
-               # We need the first and last track for cdda2wav
+               # We need the first and last track for cdda2wav/icedax
                FIRSTTRACK=$2
                LASTTRACK=$(expr $3 + 0)
                UTRACKNUM=$FIRSTTRACK
@@ -2725,7 +2725,7 @@ do_cdread ()
                                #XX FIXME XX
                                # Add a variable to check if tracks are provided in command line and if not, use "0-" to rip the tracks
                                READTRACKNUMS="$FIRSTTRACK-$LASTTRACK" ;;
-                       cdda2wav) READTRACKNUMS="$FIRSTTRACK+$LASTTRACK" ;;
+                       cdda2wav | icedax) READTRACKNUMS="$FIRSTTRACK+$LASTTRACK" ;;
                        *) echo "abcde error: $CDROMREADERSYNTAX does not support ONETRACK mode"
                                exit 1 ;;
                esac
@@ -2772,17 +2772,17 @@ do_cdread ()
                        STRIPTRACKNUM=$(expr $UTRACKNUM + 0)
                        nice $READNICE $FLAC -d -f --cue=${READTRACKNUMS:-$STRIPTRACKNUM.1-$(($STRIPTRACKNUM + 1)).0} "$FILEARG" "$CDROM" ;;
                cdparanoia) 
-                   if [ "$REDIR" = "y"]; then
+                   if [ "$REDIR" = "y" ]; then
                            nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" >&2
                        else
                            nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG"
                        fi;;
 
-               cdda2wav)
+               cdda2wav | icedax)
                        if [ "$OSFLAVOUR" = "OSX" ] ; then
-                               # Hei, we have to unmount the device before running anything like cdda2wav in OSX
+                               # Hei, we have to unmount the device before running anything like cdda2wav/icedax in OSX
                                disktool -u ${CDROM#/dev/} 0
-                               # Also, in OSX the cdrom device for cdda2wav changes...
+                               # Also, in OSX the cdrom device for cdda2wav/icedax changes...
                                CDDA2WAVCDROM="IODVDServices"
                        elif [ "$OSFLAVOUR" = "FBSD" ] ; then
                                CDDA2WAVCDROM="$CDROMID"
@@ -2793,7 +2793,7 @@ do_cdread ()
                                        CDDA2WAVCDROM="$CDROMID"
                                fi
                        fi
-                   if [ "$REDIR" = "y"]; then
+                   if [ "$REDIR" = "y" ]; then
                                nice $READNICE $CDROMREADER -D $CDDA2WAVCDROM -t ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" >&2
                    else
                                nice $READNICE $CDROMREADER -D $CDDA2WAVCDROM -t ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG"
@@ -2801,7 +2801,7 @@ do_cdread ()
                ## FIXME ## We have an exception for dagrab, since it uses -f
                ## FIXME ## Shall we just use -f $FILEARG ??
                dagrab) 
-                   if [ "$REDIR" = "y"]; then
+                   if [ "$REDIR" = "y" ]; then
                                nice $READNICE $CDROMREADER -d "$CDROM" -v $UTRACKNUM "$FILEARG" >&2
                        else
                                nice $READNICE $CDROMREADER -d "$CDROM" -v $UTRACKNUM "$FILEARG"
@@ -2813,7 +2813,7 @@ do_cdread ()
                        FILEPATH=$(find "$FILEPATH" | grep "/$REALTRACKNUM ");
                        # If the file exists, copy it
                        if [ -e "$FILEPATH" ] ; then
-                       if [ "$REDIR" = "y"]; then
+                       if [ "$REDIR" = "y" ]; then
                                        nice $READNICE $CDROMREADER "$FILEPATH" "$FILEARG" >&2
                                else
                                        nice $READNICE $CDROMREADER "$FILEPATH" "$FILEARG"
@@ -2822,7 +2822,7 @@ do_cdread ()
                                false
                        fi ;;
                debug)
-                   if [ "$REDIR" = "y"]; then
+                   if [ "$REDIR" = "y" ]; then
                                nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" -w $UTRACKNUM-[:1] "$FILEARG" >&2
                        else
                                nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" -w $UTRACKNUM-[:1] "$FILEARG"
@@ -2990,7 +2990,7 @@ NOGAP=n
 BATCHNORM=n
 NOCDDBQUERY=n
 
-# If using scsi devices, cdda2wav needs a CDROMID, instead of a device node
+# If using scsi devices, cdda2wav/icedax needs a CDROMID, instead of a device node
 # i.e. CDROMID="1,0,0"
 CDROMID=""
 # If we are using the IDE bus, we need CDPARANOIACDROMBUS defined as "d"
@@ -3026,7 +3026,7 @@ METAFLAC=metaflac
 AACTAG=faac
 
 CDPARANOIA=cdparanoia
-CDDA2WAV=cdda2wav
+CDDA2WAV=icedax
 DAGRAB=dagrab
 CDDAFS=cp
 CDDISCID=cd-discid
@@ -3054,11 +3054,14 @@ BLADEENCOPTS=
 L3ENCOPTS=
 XINGMP3ENCOPTS=
 MP3ENCOPTS=
+MP3GAINOPTS="-a -k"
 # ogg
 VORBIZEOPTS=
 OGGENCOPTS=
+VORBISGAINOPTS="--album"
 # flac
 FLACOPTS=
+FLACGAINOPTS="--add-replay-gain"
 # speex
 SPEEXENCOPTS=
 # mpc
@@ -3095,7 +3098,7 @@ ACTIONS=cddb,read,encode,tag,move,clean
 DEFAULT_OUTPUT_BINARIES=vorbis:oggenc,flac:flac,mp3:toolame,mp3:lame,mp3:bladeenc,spx:speex,m4a:faac
 
 # List of prefered cdromreaders - by default, run whichever we have in the path
-DEFAULT_CDROMREADERS="cdparanoia cdda2wav"
+DEFAULT_CDROMREADERS="cdparanoia icedax cdda2wav"
 
 # List of quality levels associated with the encoders:
 DEFAULT_QUALITY_XLO="oggenc:-q -1,lame:-q 9,speex:--quality 1,m4a:"
@@ -3308,7 +3311,7 @@ if [ "$ONETRACK" = "y" ]; then
        case "$CDROMREADERSYNTAX" in
                flac) ;;
                cdparanoia) ;;
-               cdda2wav) ;;
+               cdda2wav | icedax) ;;
                *) log error "$CDROMREADERSYNTAX does not support ONETRACK mode"
                   exit 1 ;;
        esac
@@ -3396,7 +3399,7 @@ done
 
 # At this point a CDROM has to be defined, so we check it exists.
 if [ X"$CDROM" != "X" ] ; then 
-       if [ "$CDROMREADERSYNTAX" = "cdda2wav" ] && [ "$NEEDCDROMID" = "y" ] ; then
+       if ( [ "$CDROMREADERSYNTAX" = "cdda2wav" ] || [ "$CDROMREADERSYNTAX" = "icedax" ] ) && [ "$NEEDCDROMID" = "y" ] ; then
                if [ "$OSFLAVOUR" = "FBSD" ]; then
                        if echo "$CDROMID" | grep "^[0-9],[0-9],[0-9]$" >/dev/null 2>&1 ; then :; else
                                log error "CDROMID not in the right format for $CDROMREADERSYNTAX"
@@ -3494,7 +3497,7 @@ case "$CDROMREADERSYNTAX" in
                CDROMREADER="$CDPARANOIA"
                CDROMREADEROPTS="$CDPARANOIAOPTS"
                ;;
-       cdda2wav)
+       cdda2wav | icedax)
                CDROMREADER="$CDDA2WAV"
                CDROMREADEROPTS="$CDDA2WAVOPTS"
                ;;