Support added for AAC encoding with qaac via Wine
authorAndrew Strong <andrew.david.strong@gmail.com>
Sun, 21 Jun 2015 02:33:05 +0000 (12:33 +1000)
committerAndrew Strong <andrew.david.strong@gmail.com>
Sun, 21 Jun 2015 02:33:05 +0000 (12:33 +1000)
This also allows for Apple Lossless Audio Coding (alac)
when using:

  QAACENCOPTS="--alac"

This closes Issue 142, thanks to Bernd Fischer-Krellenberg
for the enhancement request.

FAQ
abcde
abcde.1
abcde.conf
changelog

diff --git a/FAQ b/FAQ
index 71db8f3..86f3778 100644 (file)
--- a/FAQ
+++ b/FAQ
@@ -432,7 +432,7 @@ A. No :). Keep in mind that every ripper and encoder differs from in each
 
    Rippers:  cdparanoia, debug, libcdio, cdda2wav, flac, pird.
    Encoders: mp3enc, lame, bladeenc, oggenc, opusenc, flac, speexenc,
-             mpcenc, wavpack, faac, neroAacEnc, fdkaac.
+             mpcenc, wavpack, faac, neroAacEnc, fdkaac, qaac.
 
 Q. Can I add a ripper or encoder which is not supported?
 A. Sure! If you plan to use a ripper or encoder which is not supported you
diff --git a/abcde b/abcde
index fc5956a..4af4702 100755 (executable)
--- a/abcde
+++ b/abcde
@@ -990,6 +990,9 @@ do_tag ()
                                faac)
                                        run_command tagtrack-$OUTPUT-$1 true   
                                        ;;
+                               qaac)
+                                       run_command tagtrack-$OUTPUT-$1 true   
+                                       ;;
                        esac
                        ;;
                wav)
@@ -1253,6 +1256,14 @@ do_encode ()
                                                        $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS "$IN" -o "$OUT"
                                                fi
                                                ;;
+                                       qaac)
+                                               if [ "$DOTAG" = "y" ]; then
+                                                       $RUN_COMMAND nice $EFFECTIVE_NICE $WINE $AACENCODER $AACENCODEROPTS  --artist "$TRACKARTIST" --album "$DALBUM" \
+                                                       --title "$TRACKNAME" --track ${TRACKNUM:-$1} --date "$CDYEAR" --genre "$CDGENRE" --comment "$COMMENT" -o "$OUT" "$IN"
+                                               else 
+                                                       $RUN_COMMAND nice $EFFECTIVE_NICE $WINE $AACENCODER $AACENCODEROPTS -o "$OUT" "$IN"
+                                               fi
+                                               ;;
                                        esac
                                ;;
                        wav)
@@ -3431,6 +3442,10 @@ APETAG=apetag
 FAAC=faac
 NEROAACENC=neroAacEnc
 FDKAAC=fdkaac
+# Note that the qaac PATH will almost always require adjustment
+# as it is a Windows application being run through Wine. More
+# detailed notes in the sample abcde.conf file in the abcde tarball.
+QAAC=qaac
 
 ID3=id3
 ID3V2=id3v2
@@ -3439,6 +3454,7 @@ VORBISCOMMENT=vorbiscomment
 METAFLAC=metaflac
 NEROAACTAG=neroAacTag
 
+WINE=wine
 CDPARANOIA=cdparanoia
 CD_PARANOIA=cd-paranoia
 CDDA2WAV=icedax
@@ -3508,6 +3524,7 @@ NEROACENCOPTS=
 # fdkaac chokes without either a bitrate or bitrate-mode specified so 
 # we set bitrate here.
 FDKAACENCOPTS='--bitrate 192k'
+QAACENCOPTS=
 
 ID3OPTS=
 EYED3OPTS=""
@@ -4078,6 +4095,7 @@ do
                        [ "$AACENCODERSYNTAX" = "default" ] && AACENCODERSYNTAX=faac
                        [ "$DOTAG" = "y" ] && CHECKFAACBUILD=y
                        [ "$AACENCODERSYNTAX" = "neroAacEnc" ] && NEEDNEROAACTAG=y
+                       [ "$AACENCODERSYNTAX" = "qaac" ] && NEEDWINE=y
                        ;;
                wav)
                        if [ "$KEEPWAVS" = "y" ]; then
@@ -4211,6 +4229,15 @@ case "$AACENCODERSYNTAX" in
                        AACENCODER="$FDKAAC"
                fi
                ;;
+       qaac)
+               if [ -z "$QAACENCOPTS" ] && [ -n "$AACENCOPTS" ]; then
+                       AACENCODEROPTS="${AACENCODEROPTSCLI:-$AACENCOPTS}"
+                       AACENCODER="$QAAC"
+               else
+                       AACENCODEROPTS="${AACENCODEROPTSCLI:-$QAACENCOPTS}"
+                       AACENCODER="$QAAC"
+               fi
+               ;;
 esac
 
 # and which tagger
@@ -4351,6 +4378,7 @@ PIPE_speexenc="-"
 PIPE_mpcenc="-"
 PIPE_wavpack="-"
 PIPE_faac="-"
+PIPE_qaac="-"
 # Both neroAacEnc and fdkaac seem to manage without the addition of
 # the 'ignorelength' option in PIPE_$AACENCODERSYNTAX when piping
 # in this manner.                                           Andrew.
@@ -4409,7 +4437,7 @@ for X in $CDROMREADER $CDDISCID ${NEEDTAGGER+$TAGGER} $MP3ENCODER \
        ${NEEDMPCGAIN+$MPCGAIN} ${NEEDCUEREADER+$CUEREADER} \
        ${NEEDWVGAIN+WVGAIN} ${NEEDAPETAG+$APETAG} \
        ${NEEDCUE2DISCID+$CUE2DISCID} ${NEEDNEROAACTAG+$NEROAACTAG} \
-       ${NEEDGLYRC+$GLYRC}
+       ${NEEDGLYRC+$GLYRC} ${NEEDWINE+$WINE}
 do
        checkexec "$X"
 done
diff --git a/abcde.1 b/abcde.1
index b62d7c5..80e1674 100644 (file)
--- a/abcde.1
+++ b/abcde.1
@@ -329,7 +329,9 @@ point we only have \'mpcenc\' available, from musepack.net.
 .TP
 .B AACENCODERSYNTAX
 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.
+as \'default\' as well as higher quality audio with neroAacEnc, fdkaac and qaac.
+If qaac is used it is also possible to generate Apple Lossless Audio Codec (alac)
+files. Note that qaac is a Windows application which requires Wine to be installed.
 .TP
 .B WVENCODERSYNTAX
 Specifies the style of encoder to use for WavPack. We support \'wavpack\'
@@ -379,11 +381,11 @@ 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, APENC, OPUSENC, ID3, EYED3,
+VORBIZE, OGGENC, FLAC, SPEEXENC, MPCENC, WVENC, APENC, OPUSENC, ID3, EYED3,
 METAFLAC, CDPARANOIA, CD_PARANOIA, CDDA2WAV, PIRD, CDDAFS, CDDISCID, CDDBTOOL, 
 EJECT, MD5SUM, DISTMP3, VORBISCOMMENT, NORMALIZE, CDSPEED, MP3GAIN, VORBISGAIN, 
 MPCGAIN, MKCUE, MKTOC, CUE2DISCID (see option "\-X"), DIFF, HTTPGET, GLYRC,
-IDENTIFY, DISPLAYCMD and CONVERT.
+IDENTIFY, DISPLAYCMD, CONVERT, QAAC and WINE.
 .TP
 .B COMMAND-LINE OPTIONS
 If you wish to specify command-line options to any of the programs \fBabcde\fR uses,
@@ -393,7 +395,7 @@ OGGENCOPTS, FLACOPTS, SPEEXENCOPTS, MPCENCOPTS, FAACENCOPTS, NEROAACENCOPTS, FDK
 OPUSENCOPTS, ID3OPTS, EYED3OPTS, MP3GAINOPTS, CDPARANOIAOPTS, CDDA2WAVOPTS, PIRDOPTS, 
 CDDAFSOPTS, CDDBTOOLOPTS, EJECTOPTS, DISTMP3OPTS, NORMALIZEOPTS, CDSPEEDOPTS, MKCUEOPTS, 
 VORBISCOMMMENTOPTS, METAFLACOPTS, DIFFOPTS, FLACGAINOPTS, VORBISGAINOPTS, HTTPGETOPTS,
-GLYRCOPTS, IDENTIFYOPTS, CONVERTOPTS and DISPLAYCMDOPTS.
+GLYRCOPTS, IDENTIFYOPTS, CONVERTOPTS, DISPLAYCMDOPTS and QAACENCOPTS.
 .TP
 .B CDSPEEDVALUE
 Set the value of the CDROM speed. The default is to read the disc as fast as
index 864fab5..2956c73 100644 (file)
@@ -64,7 +64,7 @@
 # mpcenc - encoder for MPCENCODERSYNTAX
 # wavpack - encoder for WVENCODERSYNTAX
 # mac - for APENCODERSYNTAX
-# faac, neroAacEnc, fdkaac - for AACENCODERSYNTAX
+# faac, neroAacEnc, fdkaac, qaac - for AACENCODERSYNTAX
 # opusenc - for OPUSENCODERSYNTAX
 # default is a valid option for oggenc, lame, flac, speexenc, mpcenc, wavpack, faac and opus.
 # Currently this affects the default location of the binary, the variable
 #FDKAAC=fdkaac
 #OPUSENC=opusenc
 
+# The path for qaac can be problematic as abcde cannot cope
+# with the 'standard' Wine location with spaces:
+#   "$HOME/.wine/drive_c/Program\ Files/qaac/qaac.exe"
+# However the following works well:
+#   "$HOME/.wine/drive_c/qaac/qaac.exe"
+# Installation instructions for qaac that follow this installation
+# path here: http://www.andrews-corner.org/qaac.html
+#QAAC=qaac
+
 # Taggers, rippers, replaygain etc:
 #ID3=id3
 #ID3V2=id3v2
 #IDENTIFY=identify
 #CONVERT=convert
 #DISPLAYCMD=display
+#WINE=wine
 
 # Options to call programs with:
 
 #     '--profile 2 --bitrate-mode 5 --afterburner 1'
 #     for a good quality encode. 
 #FDKAACENCOPTS='--bitrate 192k'
+#QAACENCOPTS=
+#  4. qaac: simply run 'qaac' to see all options and
+#     consider using '--tvbr 100' for a good quality
+#     encode or '--alac' for Apple Lossless Audio Codec.
 
 # OPUS
 # For the encoder options look at: 'opusenc -h'
index aa10ce8..7f90d27 100644 (file)
--- a/changelog
+++ b/changelog
@@ -1,3 +1,14 @@
+abcde 2.7.1
+
+  * Support added for AAC encoding with qaac via Wine. This
+    also allows for Apple Lossless Audio Coding (alac) when
+    using:
+
+     QAACENCOPTS="--alac"
+
+    This closes Issue 142, thanks to Bernd Fischer-Krellenberg
+    for the enhancement request.
+
 abcde 2.7
 
   * Rewrite of abcde's mungefilename function. Thanks to