Monkey's Audio encoding (re-)added
authorAndrew Strong <andrew.david.strong@gmail.com>
Fri, 20 Mar 2015 23:01:56 +0000 (10:01 +1100)
committerAndrew Strong <andrew.david.strong@gmail.com>
Fri, 20 Mar 2015 23:01:56 +0000 (10:01 +1100)
Encoding to Monkey's Audio (ape) using Monkey's Audio
Console (mac). Tagging with Robert Muth's 'apetag'.
Thanks to Shantiq for testing.

abcde
abcde.1
abcde.conf
changelog

diff --git a/abcde b/abcde
index 1653eea..a9a4398 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,wv). Defaults to vorbis"
+echo "       Output file type(s) (vorbis,mp3,flac,spx,mpc,wav,m4a,opus,wv,ape). 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]...>"
@@ -954,6 +954,12 @@ do_tag ()
         wv)
             run_command tagtrack-$OUTPUT-$1 true
                        ;;
+        ape) # This tagging syntax is suitable for Robert Muth's application 'apetag', the Monkey's Audio 
+             # Console port (mac) used for encoding does not have the ability to tag.              Andrew.
+            run_command tagtrack-$OUTPUT-$1 nice $ENCNICE "$APETAG" -i "$ABCDETEMPDIR/track$1.ape" -m overwrite \
+                    -p artist="$TRACKARTIST" -p album="$DALBUM" -p title="$TRACKNAME" -p track=${TRACKNUM:-$1} \
+                    -p year="$CDYEAR" -p genre="$CDGENRE" ${COMMENTOUTPUT:+-p comment="$COMMENTOUTPUT"} 
+                       ;;
                aac)
                        run_command tagtrack-$OUTPUT-$1 true
                ;;
@@ -1061,6 +1067,9 @@ do_encode ()
                        wv)
                                TEMPARG="PIPE_$WVCENCODERSYNTAX"
                                ;;
+                       ape)
+                               TEMPARG="PIPE_$APENCODERSYNTAX"
+                               ;;
                        aac)
                                TEMPARG="PIPE_$AACENCODERSYNTAX"
                                ;;
@@ -1217,6 +1226,9 @@ do_encode ()
                           $RUN_COMMAND nice $EFFECTIVE_NICE $WVENCODER $WVENCODEROPTS "$IN" -o "$OUT"
                         fi
                                ;;
+                       ape)
+                         $RUN_COMMAND nice $EFFECTIVE_NICE $APENCODER "$IN" "$OUT" $APENCODEROPTS
+                        ;;
                        aac)
                        # aac container is only used to catch faac encoded files where faac 
                        # is compiled without mp4 support (with libmp4v2).           Andrew.
@@ -3255,6 +3267,7 @@ FLACENCODERSYNTAX=default
 SPEEXENCODERSYNTAX=default
 MPCENCODERSYNTAX=default
 WVENCODERSYNTAX=default
+APENCODERSYNTAX=default
 AACENCODERSYNTAX=default
 NORMALIZERSYNTAX=default
 CUEREADERSYNTAX=default
@@ -3312,6 +3325,9 @@ SPEEXENC=speexenc
 MPCENC=mpcenc
 # wv (wavpack)
 WVENC=wavpack
+# ape
+APENC=mac
+APETAG=apetag
 # m4a
 AACENC=faac
 
@@ -3373,6 +3389,10 @@ SPEEXENCOPTS=
 MPCENCOPTS=
 # wv
 WVENCOPTS=
+# ape
+# Monkey's Audio Console (mac) chokes without a mode setting
+# so we set one here.                                 Andrew.
+APENCOPTS='-c4000'
 # m4a
 AACENCOPTS=
 
@@ -3854,6 +3874,7 @@ case "$OUTPUTTYPE" in *:*)
                        spx:*)  SPEEXENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                        mpc:*)  MPCENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                        wv:*)   WVENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
+                       ape:*)  APENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                        m4a:*|aac:*)  AACENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                esac
        done
@@ -3906,6 +3927,10 @@ do
                        [ "$WVENCODERSYNTAX" = "default" ] && WVENCODERSYNTAX=wavpack
                        [ "$DOTAG" = "y" ]
                        ;;
+               ape)
+                       [ "$APENCODERSYNTAX" = "default" ] && APENCODERSYNTAX=mac
+                       [ "$DOTAG" = "y" ]
+                       ;;
                aac)
                    [ "$AACENCODERSYNTAX" = "default" ] && AACENCODERSYNTAX=faac
                        [ "$DOTAG" = "n" ]
@@ -4011,6 +4036,12 @@ case "$WVENCODERSYNTAX" in
                WVENCODER="$WVENC"
                ;;
 esac
+case "$APENCODERSYNTAX" in
+       mac)
+               APENCODEROPTS="${APENCODEROPTSCLI:-$APENCOPTS}"
+               APENCODER="$APENC"
+               ;;
+esac
 case "$AACENCODERSYNTAX" in
        faac|neroAacEnc|fdkaac)
                AACENCODEROPTS="${AACENCODEROPTSCLI:-$AACENCOPTS}"
@@ -4165,6 +4196,8 @@ if [ "$USEPIPES" = "y" ]; then
                        PIPEENCODERSVARCHECK="PIPE_$MPCENCODER" ;;
                wv)
                        PIPEENCODERSVARCHECK="PIPE_$WVENCODER" ;;
+               ape)
+                       PIPEENCODERSVARCHECK="PIPE_$APENCODER" ;;
        esac
        decho "PIPERIPPERSVARCHECK: $( eval echo "\$$PIPERIPPERSVARCHECK" )"
        if [ "$( eval echo "\$$PIPERIPPERSVARCHECK" )" = "$" ] || \
diff --git a/abcde.1 b/abcde.1
index c2f2989..c013e72 100644 (file)
--- a/abcde.1
+++ b/abcde.1
@@ -1,7 +1,7 @@
 .TH abcde 1
 .SH NAME
 abcde \- Grab an entire CD and compress it to Ogg/Vorbis, MP3, FLAC, Ogg/Speex, AAC, 
-WavPack and/or MPP/MP+(Musepack) format.
+WavPack, Monkey's Audio (ape) and/or MPP/MP+(Musepack) format.
 .SH SYNOPSIS
 .B abcde
 .I [options] [tracks]
@@ -11,8 +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) wv (WavPack) 
-or Opus format(s).
+Audio Codec (FLAC), Ogg/Speex, MPP/MP+(Musepack), M4A (AAC) wv (WavPack), 
+Monkey's Audio (ape) or Opus format(s).
 With one command, it will:
 .TP
 .B *
@@ -27,8 +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, wv (WavPack) 
-and/or Opus format(s), all in one CD read
+Compress to Ogg/Vorbis, MP3, FLAC, Ogg/Speex, MPP/MP+(Musepack), M4A, wv (WavPack), 
+Monkey's Audio (ape) and/or Opus format(s), all in one CD read
 .TP
 .B *
 Comment or ID3/ID3v2 tag
@@ -136,8 +136,8 @@ provide song names, artist(s), ...
 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", "wv" or "opus".  Specify a comma-delimited list of output types to obtain
+Select output type. Can be "vorbis" (or "ogg"), "mp3", "flac", "spx", "mpc", "m4a", 
+"wav", "wv", "ape" 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.
@@ -216,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', 'wv' or '.opus'.
+format, 'vorbis' for '.ogg', '.mp3', '.flac', '.spx', '.mpc', '.wav', 'wv', 'ape' 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.
@@ -324,6 +324,10 @@ as \'default\' as well as higher quality audio with neroAacEnc and fdkaac.
 Specifies the style of encoder to use for WavPack. We support \'wavpack\'
 as \'default\'.
 .TP
+.B APENCODERSYNTAX
+Specifies the style of encoder to use for Monkey's Audio (ape). We support \'mac\',
+Monkey's Audio Console, 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.
@@ -364,16 +368,16 @@ 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, WVENC, OPUSENC, ID3, EYED3, METAFLAC,
-CDPARANOIA, CDDA2WAV, PIRD, CDDAFS, CDDISCID, CDDBTOOL, EJECT, MD5SUM, DISTMP3,
+VORBIZE, OGGENC, FLAC, SPEEXENC, MPCENC, AACENC, WVENC, APENC, 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.
 .TP
 .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, WVENCOPTS, OGGENCOPTS,
-FLACOPTS, SPEEXENCOPTS, MPCENCOPTS, AACENCOPTS, OPUSENCOPTS, ID3OPTS, EYED3OPTS,
+BLADEENCOPTS, L3ENCOPTS, XINGMP3ENCOPTS, MP3ENCOPTS, VORBIZEOPTS, WVENCOPTS, APENCOPTS,
+OGGENCOPTS, FLACOPTS, SPEEXENCOPTS, MPCENCOPTS, AACENCOPTS, OPUSENCOPTS, ID3OPTS, EYED3OPTS,
 MP3GAINOPTS, CDPARANOIAOPTS, CDDA2WAVOPTS, PIRDOPTS, CDDAFSOPTS, CDDBTOOLOPTS,
 EJECTOPTS, DISTMP3OPTS, NORMALIZEOPTS, CDSPEEDOPTS, MKCUEOPTS, VORBISCOMMMENTOPTS,
 METAFLACOPTS, DIFFOPTS, FLACGAINOPTS, VORBISGAINOPTS and HTTPGETOPTS.
@@ -416,7 +420,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', 'wv' and/or 'wav', depending on the
+be 'vorbis', 'mp3', 'flac', 'spx', 'mpc', 'm4a', 'wv', 'ape' and/or 'wav', depending on the
 OUTPUTTYPE you define. For example
 .br
 OUTPUTFORMAT='${OUTPUT}/${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM}._${TRACKFILE}'
@@ -580,6 +584,9 @@ information about the CD.
 (for MP3s) id3 or eyeD3, id3 v1 and v2 tagging programs.
 .TP
 .B *
+For Monkey's Audio (ape) tagging Robert Muth's 'apetag' is required.
+.TP
+.B *
 (optional) distmp3, a client/server for distributed mp3 encoding.
 .TP
 .B *
index 0156748..290838b 100644 (file)
@@ -62,6 +62,7 @@
 # speexenc - the only encoder for SPEEXENCODERSYNTAX
 # mpcenc - encoder for MPCENCODERSYNTAX
 # wavpack - encoder for WVENCODER
+# mac - for APENCODER
 # faac, neroAacEnc, fdkaac - for AACENCODER
 # opusenc - for OPUSENCODER
 # default is a valid option for oggenc, lame, flac, speexenc, mpcenc, wavpack, faac and opus.
@@ -74,6 +75,7 @@
 #SPEEXENCODERSYNTAX=default
 #MPCENCODERSYNTAX=default
 #WVENCODERSYNTAX=default
+#APENCODERSYNTAX=default
 #AACENCODERSYNTAX=default
 #OPUSENCODERSYNTAX=default
 
 #SPEEXENC=speexenc
 #MPCENC=mpcenc
 #WVENC=wavpack
+#APENC=mac
 #AACENC=faac
 #OPUSENC=opusenc
 
 # for a good quality encode
 #WVENCOPTS=
 
+# Monkey's Audio (ape)
+# Without this set mac chokes unfortunately. Choices
+# are from 1000 to 5000.
+#APENCOPTS='-c3000'
+#APETAG=apetag
+
 # M4A/AAC
 # For faac options see 'faac --long-help' and consider
 # using '-q 250' for a good quality encode.
 # OUTPUTTYPE can be any of a number of formats, either a single format
 # (e.g. "ogg") or a combination of them separated with ","
 # (e.g. "flac,mp3"). Currently recognised and supported are:
-# "flac", "m4a", "mp3, "mpc", "ogg", "opus", "spx", "vorbis", "wav", "wv"
+# "flac", "m4a", "mp3, "mpc", "ogg", "opus", "spx", "vorbis", "wav", "wv", "ape"
 #OUTPUTTYPE=ogg
 
 # Output filename format - change this to reflect your inner desire to
index 4524083..9b57ec1 100644 (file)
--- a/changelog
+++ b/changelog
@@ -1,5 +1,7 @@
 abcde 2.6.1
 
+  * Monkey's Audio (ape) encoding added. Tagging is with
+  * Robert Muth's apetag. Thanks to Shantiq for testing.
   * Simplify Opus tagging.This closes Issue 133.
   * Allow 'clean' when OUTPUTTYPE=wav, broken for some time.
    Thanks to Roger rogerx.oss<at>gmail.com for showing the