Support for WavPack added. Closes issue 123.
authorAndrew Strong <andrew.david.strong@gmail.com>
Thu, 8 Jan 2015 09:39:04 +0000 (20:39 +1100)
committerAndrew Strong <andrew.david.strong@gmail.com>
Thu, 8 Jan 2015 09:39:04 +0000 (20:39 +1100)
abcde
abcde.1
changelog

diff --git a/abcde b/abcde
index 836c4d9..9bdad01 100755 (executable)
--- a/abcde
+++ b/abcde
@@ -48,7 +48,7 @@ echo "-m     Modify playlist to include CRLF endings, to comply with some player
 echo "-n     No lookup. Don't query CDDB, just create and use template"
 echo "-N     Noninteractive. Never prompt for anything"
 echo "-o <type1[,type2]...>"
-echo "       Output file type(s) (vorbis,mp3,flac,spx,mpc,wav,m4a,opus). Defaults to vorbis"
+echo "       Output file type(s) (vorbis,mp3,flac,spx,mpc,wav,m4a,opus,wv). Defaults to vorbis"
 echo "-p     Pad track numbers with 0's (if less than 10 tracks)"
 echo "-P     Use UNIX pipes to read+encode without wav files"
 echo "-r <host1[,host2]...>"
@@ -941,6 +941,9 @@ do_tag ()
                mpc)
                        run_command tagtrack-$OUTPUT-$1 true
                        ;;
+        wv)
+            run_command tagtrack-$OUTPUT-$1 true
+                       ;;
                aac)
                        run_command tagtrack-$OUTPUT-$1 true
                ;;
@@ -1045,6 +1048,9 @@ do_encode ()
                        mpc)
                                TEMPARG="PIPE_$MPCENCODER"
                                ;;
+                       wv)
+                               TEMPARG="PIPE_$WVCENCODERSYNTAX"
+                               ;;
                        aac)
                                TEMPARG="PIPE_$AACENCODERSYNTAX"
                                ;;
@@ -1199,6 +1205,15 @@ do_encode ()
                                # Musepack SV7 which used mppenc....
                                $RUN_COMMAND nice $EFFECTIVE_NICE $MPCENCODER $MPCENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" --title "$TRACKNAME" --track "$1" --genre "$CDGENRE" --year "$CDYEAR" --comment "$COMMENT" "$IN" "$OUT"
                                ;;
+                       wv)
+                        if [ "$DOTAG" = "y" ]; then
+             # wavpack tagging is done inline using Apev2 tags:
+                               $RUN_COMMAND nice $EFFECTIVE_NICE $WVENCODER $WVENCODEROPTS -w Artist="$TRACKARTIST" -w Album="$DALBUM" -w Title="$TRACKNAME" \
+                               -w Track="$1" -w Genre="$CDGENRE" -w Year="$CDYEAR" -w Comment="$COMMENT" "$IN" -o "$OUT"
+                       else
+                          $RUN_COMMAND nice $EFFECTIVE_NICE $WVENCODER $WVENCODEROPTS "$IN" -o "$OUT"
+                        fi
+                               ;;
                        aac)
                        # aac container is only used to catch faac encoded files where faac 
                        # is compiled without mp4 support (with libmp4v2).           Andrew.
@@ -3233,6 +3248,7 @@ OPUSENCODERSYNTAX=default
 FLACENCODERSYNTAX=default
 SPEEXENCODERSYNTAX=default
 MPCENCODERSYNTAX=default
+WVENCODERSYNTAX=default
 AACENCODERSYNTAX=default
 NORMALIZERSYNTAX=default
 CUEREADERSYNTAX=default
@@ -3288,6 +3304,8 @@ FLAC=flac
 SPEEXENC=speexenc
 # mpp (Musepack)
 MPCENC=mpcenc
+# wv (wavpack)
+WVENC=wavpack
 # m4a
 AACENC=faac
 
@@ -3343,6 +3361,8 @@ FLACGAINOPTS="--add-replay-gain"
 SPEEXENCOPTS=
 # mpc
 MPCENCOPTS=
+# wv
+WVENCOPTS=
 # m4a
 AACENCOPTS=
 
@@ -3823,6 +3843,7 @@ case "$OUTPUTTYPE" in *:*)
                        flac:*) FLACENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                        spx:*)  SPEEXENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                        mpc:*)  MPCENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
+                       wv:*)   WVENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                        m4a:*|aac:*)  AACENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                esac
        done
@@ -3835,7 +3856,8 @@ case "$OUTPUTTYPE" in *:*)
 esac
 
 # If nothing has been specified, use oggenc for oggs and lame for mp3s and flac
-# for flacs and speexenc for speex and mpcenc for mpcs and faac for m4as
+# for flacs and speexenc for speex and mpcenc for mpcs and faac for m4as and
+# wavpack for wvs...
 
 # Getting ready for multiple output changes
 for OUTPUT in $(echo $OUTPUTTYPE | tr , \ )
@@ -3870,6 +3892,10 @@ do
                        [ "$MPCENCODERSYNTAX" = "default" ] && MPCENCODERSYNTAX=mpcenc
                        [ "$DOREPLAYGAIN" = "y" ] && NEEDMPPGAIN=y
                        ;;
+               wv)
+                       [ "$WVENCODERSYNTAX" = "default" ] && WVENCODERSYNTAX=wavpack
+                       [ "$DOTAG" = "y" ]
+                       ;;
                aac)
                    [ "$AACENCODERSYNTAX" = "default" ] && AACENCODERSYNTAX=faac
                        [ "$DOTAG" = "n" ]
@@ -3969,6 +3995,12 @@ case "$MPCENCODERSYNTAX" in
                MPCENCODER="$MPCENC"
                ;;
 esac
+case "$WVENCODERSYNTAX" in
+       wavpack)
+               WVCENCODEROPTS="${WVENCODEROPTSCLI:-$WVENCOPTS}"
+               WVENCODER="$WVENC"
+               ;;
+esac
 case "$AACENCODERSYNTAX" in
        faac|neroAacEnc|fdkaac)
                AACENCODEROPTS="${AACENCODEROPTSCLI:-$AACENCOPTS}"
@@ -4101,6 +4133,8 @@ if [ "$USEPIPES" = "y" ]; then
                        PIPEENCODERSVARCHECK="PIPE_$SPEEXENCODER" ;;
                mpc)
                        PIPEENCODERSVARCHECK="PIPE_$MPCENCODER" ;;
+               wv)
+                       PIPEENCODERSVARCHECK="PIPE_$WVENCODER" ;;
        esac
        decho "PIPERIPPERSVARCHECK: $( eval echo "\$$PIPERIPPERSVARCHECK" )"
        if [ "$( eval echo "\$$PIPERIPPERSVARCHECK" )" = "$" ] || \
@@ -4123,7 +4157,7 @@ fi
 # Make sure a buncha things exist
 for X in $CDROMREADER $CDDISCID ${NEEDTAGGER+$TAGGER} $MP3ENCODER \
        $OGGENCODER $OPUSENCODER $FLACENCODER $SPEEXENCODER $MPCENCODER \
-       $AACENCODER $CDDBTOOL \
+       $AACENCODER $WVENCODER $CDDBTOOL \
        ${NEEDHTTPGET+$HTTPGET} ${NEEDDISTMP3+$DISTMP3} \
        ${NEEDCOMMENTER+$VORBISCOMMENT} ${NEEDMETAFLAC+$METAFLAC} \
        ${NEEDNORMALIZER+$NORMALIZER} ${NEEDEJECT+$EJECT} \
diff --git a/abcde.1 b/abcde.1
index d96e183..e8ec39e 100644 (file)
--- a/abcde.1
+++ b/abcde.1
@@ -1,6 +1,7 @@
 .TH abcde 1
 .SH NAME
-abcde \- Grab an entire CD and compress it to Ogg/Vorbis, MP3, FLAC, Ogg/Speex, AAC and/or MPP/MP+(Musepack) format.
+abcde \- Grab an entire CD and compress it to Ogg/Vorbis, MP3, FLAC, Ogg/Speex, AAC, 
+WavPack and/or MPP/MP+(Musepack) format.
 .SH SYNOPSIS
 .B abcde
 .I [options] [tracks]
@@ -10,7 +11,8 @@ tagging or commenting it, is very involved.
 .BR abcde
 is designed to automate this. It will take an entire CD and convert it into
 a compressed audio format - Ogg/Vorbis, MPEG Audio Layer III, Free Lossless
-Audio Codec (FLAC), Ogg/Speex, MPP/MP+(Musepack), M4A (AAC) or Opus format(s).
+Audio Codec (FLAC), Ogg/Speex, MPP/MP+(Musepack), M4A (AAC) wv (WavPack) 
+or Opus format(s).
 With one command, it will:
 .TP
 .B *
@@ -25,7 +27,8 @@ Grab an audio track (or all the audio CD tracks) from your CD
 Normalize the volume of the individual file (or the album as a single unit)
 .TP
 .B *
-Compress to Ogg/Vorbis, MP3, FLAC, Ogg/Speex, MPP/MP+(Musepack), M4A and/or Opus format(s), all in one CD read
+Compress to Ogg/Vorbis, MP3, FLAC, Ogg/Speex, MPP/MP+(Musepack), M4A, wv (WavPack) 
+and/or Opus format(s), all in one CD read
 .TP
 .B *
 Comment or ID3/ID3v2 tag
@@ -134,7 +137,7 @@ Non interactive mode. Do not ask anything from the user. Just go ahead.
 .TP
 .B \-o [filetype][:filetypeoptions]
 Select output type. Can be "vorbis" (or "ogg"), "mp3", "flac", "spx", "mpc",
-"m4a", "wav" or "opus".  Specify a comma-delimited list of output types to obtain
+"m4a", "wav", "wv" or "opus".  Specify a comma-delimited list of output types to obtain
 all specified types.  See the OUTPUTTYPE configuration variable. One can pass
 options to the encoder for a specific filetype on the command line separating
 them with a colon. The options must be escaped with double-quotes.
@@ -213,7 +216,7 @@ Each track is, by default, placed in a separate file named after the track in a
 subdirectory named after the artist under the current directory. This can be
 modified using the OUTPUTFORMAT and VAOUTPUTFORMAT variables in your
 \fIabcde.conf\fR. Each file is given an extension identifying  its compression
-format, 'vorbis' for '.ogg', '.mp3', '.flac', '.spx', '.mpc', '.wav' or '.opus'.
+format, 'vorbis' for '.ogg', '.mp3', '.flac', '.spx', '.mpc', '.wav', 'wv' or '.opus'.
 .SH CONFIGURATION
 \fBabcde\fR sources two configuration files on startup - \fI/etc/abcde.conf\fR and
 \fI$HOME/.abcde.conf\fR, in that order.
@@ -316,6 +319,10 @@ point we only have \'mpcenc\' available, from musepack.net.
 Specifies the style of encoder to use for M4A (AAC) encoder. We support \'faac\'
 as \'default\' as well as higher quality audio with neroAacEnc and fdkaac.
 .TP
+.B WVENCODERSYNTAX
+Specifies the style of encoder to use for WavPack. We support \'wavpack\'
+as \'default\'.
+.TP
 .B OPUSENCODERSYNTAX
 Specifies the style of encoder to use for the Opus encoder. At this point only
 \'opusenc\' is available for Opus encoding.
@@ -356,7 +363,7 @@ with \fBdistmp3\fR (DISTMP3NICE).
 .B PATHNAMES
 The following configuration file options specify the pathnames of their
 respective utilities: LAME, TOOLAME, GOGO, BLADEENC, L3ENC, XINGMP3ENC, MP3ENC,
-VORBIZE, OGGENC, FLAC, SPEEXENC, MPCENC, AACENC, OPUSENC, ID3, EYED3, METAFLAC,
+VORBIZE, OGGENC, FLAC, SPEEXENC, MPCENC, AACENC, WVENC, OPUSENC, ID3, EYED3, METAFLAC,
 CDPARANOIA, CDDA2WAV, PIRD, CDDAFS, CDDISCID, CDDBTOOL, EJECT, MD5SUM, DISTMP3,
 VORBISCOMMENT, NORMALIZE, CDSPEED, MP3GAIN, VORBISGAIN, MPPGAIN, MKCUE, MKTOC,
 CUE2DISCID (see option "\-X"), DIFF and HTTPGET.
@@ -364,7 +371,7 @@ CUE2DISCID (see option "\-X"), DIFF and HTTPGET.
 .B COMMAND-LINE OPTIONS
 If you wish to specify command-line options to any of the programs \fBabcde\fR uses,
 set the following configuration file options: LAMEOPTS, TOOLAMEOPTS, GOGOOPTS,
-BLADEENCOPTS, L3ENCOPTS, XINGMP3ENCOPTS, MP3ENCOPTS, VORBIZEOPTS, OGGENCOPTS,
+BLADEENCOPTS, L3ENCOPTS, XINGMP3ENCOPTS, MP3ENCOPTS, VORBIZEOPTS, WVENCOPTS, OGGENCOPTS,
 FLACOPTS, SPEEXENCOPTS, MPCENCOPTS, AACENCOPTS, OPUSENCOPTS, ID3OPTS, EYED3OPTS,
 MP3GAINOPTS, CDPARANOIAOPTS, CDDA2WAVOPTS, PIRDOPTS, CDDAFSOPTS, CDDBTOOLOPTS,
 EJECTOPTS, DISTMP3OPTS, NORMALIZEOPTS, CDSPEEDOPTS, MKCUEOPTS, VORBISCOMMMENTOPTS,
@@ -400,7 +407,7 @@ Specifies the encoding format to output, as well as the default extension and
 encoder. Defaults to "vorbis". Valid settings are "vorbis" (or "ogg")
 (Ogg/Vorbis), "mp3" (MPEG-1 Audio Layer III), "flac" (Free Lossless Audio
 Codec), "spx" (Ogg/Speex), "mpc" (MPP/MP+ (Musepack)), "m4a" (AAC)),
-"wav" (Microsoft Waveform) or "opus" (Opus Interactive Audio Codec). Values
+"wv" (WavPack", "wav" (Microsoft Waveform) or "opus" (Opus Interactive Audio Codec). Values
 like "vorbis,mp3" encode the tracks in both Ogg/Vorbis and MP3 formats. For example
 .br
 OUTPUTTYPE=vorbis,flac
@@ -408,7 +415,7 @@ OUTPUTTYPE=vorbis,flac
 For each value in OUTPUTTYPE, \fBabcde\fR expands a different process for encoding,
 tagging and moving, so you can use the format placeholder, OUTPUT, to create
 different subdirectories to hold the different types. The variable OUTPUT will
-be 'vorbis', 'mp3', 'flac', 'spx', 'mpc', 'm4a' and/or 'wav', depending on the
+be 'vorbis', 'mp3', 'flac', 'spx', 'mpc', 'm4a', 'wv' and/or 'wav', depending on the
 OUTPUTTYPE you define. For example
 .br
 OUTPUTFORMAT='${OUTPUT}/${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM}._${TRACKFILE}'
@@ -552,7 +559,7 @@ Will extract the files contained in singletrack using the embedded cuesheet.
 .B *
 An Ogg/Vorbis, MP3, FLAC, Ogg/Speex, MPP/MP+(Musepack), M4A encoder or Opus encoder 
 (oggenc, vorbize, lame, gogo, bladeenc, l3enc, mp3enc, flac, speexenc, mpcenc, faac, 
-neroAacEnc, fdkaac, opusenc).
+neroAacEnc, fdkaac, wavpack, opusenc).
 .TP
 .B *
 An audio CD reading utility (cdparanoia, icedax, cdda2wav, pird,
@@ -597,6 +604,7 @@ information about the CD.
 .BR mpcenc (1),
 .BR faac (1),
 .BR fdkaac (1),
+.BR wavpack (1),
 .BR id3 (1),
 .BR eyeD3 (1),
 .BR wget (1),
index c2012f6..62eacd6 100644 (file)
--- a/changelog
+++ b/changelog
@@ -1,5 +1,6 @@
 abcde 2.6.1
 
+  * Support for WavPack added. Closes issue 123.
   * Fix for mp3 encoding with different versions of eyeD3.
     Thanks to Matthias Andree for this patch.
   * Major AAC encoding cleanup, including addition of the fdkaac encoder.