Fix Cue file always references "dummy.wav" bug
[clinton/abcde.git] / abcde
diff --git a/abcde b/abcde
index 4ab5d00..79afd6a 100755 (executable)
--- a/abcde
+++ b/abcde
@@ -13,7 +13,7 @@
 #
 # $Id$
 
-VERSION='2.4'
+VERSION='2.4.1'
 
 usage ()
 {
@@ -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[@]}"
@@ -779,7 +779,7 @@ return 0
 # id3 tags a filename
 # variables used:
 # TRACKS, TRACKNAME, TRACKARTIST, TAGGER, TAGGEROPTS, VORBISCOMMENT, METAFLAC, ATOMICPARSLEY 
-# COMMENT, DALBUM, DARTIST, CDYEAR, CDGENRE (and temporarily) ID3TAGV
+# COMMENT, DALBUM, DARTIST, CDYEAR, CDGENRE
 do_tag ()
 {
        COMMENTOUTPUT="$(eval echo ${COMMENT})"
@@ -835,7 +835,7 @@ do_tag ()
                                                -A "$DALBUM" -a "$TRACKARTIST" -t "$TRACKNAME" \
                                                -y "$CDYEAR" -g "$GENREID" \
                                                -T "${TRACKNUM:-$1}/$TRACKS" \
-                                               "${TPE2:+--TPE2 \"$TPE2\"}" \
+                                               ${TPE2:+--TPE2 "$TPE2"} \
                                                "$ABCDETEMPDIR/track$1.$OUTPUT"
                                        ;;
                        esac
@@ -1125,7 +1125,7 @@ do_encode ()
                                fi
                                # Quick hack to avoid tagging Ogg/Speex, since there is no other way to tag than inline tagging
                                if [ ! "$DOTAG" = "y" ]; then
-                                       $RUN_COMMAND nice $EFFECTIVE_NICE $SPEEXENCODER $SPEEXENCODEROPTS --author "$TRACKARTIST" --title "$TRACKNAME" "$COMMENT" "$IN" "$OUT"
+                                       $RUN_COMMAND nice $EFFECTIVE_NICE $SPEEXENCODER $SPEEXENCODEROPTS --author "$TRACKARTIST" --title "$TRACKNAME" --comment "$COMMENT" "$IN" "$OUT"
                                else
                                        $RUN_COMMAND nice $EFFECTIVE_NICE $SPEEXENCODER $SPEEXENCODEROPTS "$IN" "$OUT"
                                fi
@@ -1662,7 +1662,7 @@ abcde.mkcue () {
 
        local MODE DISCID TRACKS
        local i OFFSET LBA 
-
+    local CUEWAVFILE
 
     if [ "$1" = --wholedisc ] ; then
         MODE=INDEX
@@ -1670,6 +1670,21 @@ abcde.mkcue () {
         MODE=PREGAP
     fi
 
+    vecho "One track is $ONETRACK"
+    TRACKFILE="$(mungefilename "$TRACKNAME")"
+    ARTISTFILE="$(mungefilename "$TRACKARTIST")"
+    ALBUMFILE="$(mungefilename "$DALBUM")"
+    if [ "$ONETRACK" = "y" ]; then
+        if [ "$VARIOUSARTISTS" = "y" ]; then
+            CUEWAVFILE="$(eval echo \""$VAONETRACKOUTPUTFORMAT"\" | sed -e 's@^.*/@@').$OUTPUT"
+        else
+            CUEWAVFILE="$(eval echo \""$ONETRACKOUTPUTFORMAT"\" | sed -e 's@^.*/@@').$OUTPUT"
+        fi
+        vecho "Cue wav file is $CUEWAVFILE"
+    else
+        CUEWAVFILE="dummy.wav"
+    fi
+
     set -- $TRACKINFO
 
     DISCID=$1
@@ -1677,7 +1692,7 @@ abcde.mkcue () {
     shift 2
 
     echo REM DISCID $DISCID
-    echo FILE \"dummy.wav\" WAVE
+    echo FILE \""$CUEWAVEFILE"\" WAVE
 
     if [ $1 -ne 150 ] && [ $MODE = "PREGAP" ] ; then
         OFFSET=$1
@@ -2011,6 +2026,25 @@ do_cleancue()
                                        eval track="\$TRACK$n"
                                        n=$(expr $n + 1)
                                        echo "    TITLE \"$track\"" >> "$CUEFILE_OUT"
+                               # When making a single-track rip, put the
+                               # actual file name into the file declaration
+                               # in the cue file so that it is usable by
+                               # music players and the like
+                               elif [ "$ONETRACK" = "y" ] &&
+                                               echo "$line" | grep '^FILE "dummy.wav" WAVE' > /dev/null 2>&1 ; then
+
+                                       TRACKFILE="$(mungefilename "$TRACKNAME")"
+                                       ARTISTFILE="$(mungefilename "$TRACKARTIST")"
+                                       ALBUMFILE="$(mungefilename "$DALBUM")"
+
+                                       if [ "$VARIOUSARTISTS" = "y" ]; then
+                                               OUTPUTFILE="$(eval echo \""$VAONETRACKOUTPUTFORMAT"\" | sed -e 's@^.*/@@').$OUTPUT"
+                                       else
+                                               OUTPUTFILE="$(eval echo \""$ONETRACKOUTPUTFORMAT"\" | sed -e 's@^.*/@@').$OUTPUT"
+                                       fi
+
+                                       echo "FILE \"$OUTPUTFILE\" WAVE" >> "$CUEFILE_OUT"
+                                       continue
                                fi
 # FIXME # If the lines above are uncommented, remove the line below.
                                echo "$line" >> "$CUEFILE_OUT"
@@ -3054,11 +3088,14 @@ BLADEENCOPTS=
 L3ENCOPTS=
 XINGMP3ENCOPTS=
 MP3ENCOPTS=
+MP3GAINOPTS="-a -k"
 # ogg
 VORBIZEOPTS=
 OGGENCOPTS=
+VORBISGAINOPTS="--album"
 # flac
 FLACOPTS=
+FLACGAINOPTS="--add-replay-gain"
 # speex
 SPEEXENCOPTS=
 # mpc