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,
 
    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
 
 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   
                                        ;;
                                faac)
                                        run_command tagtrack-$OUTPUT-$1 true   
                                        ;;
+                               qaac)
+                                       run_command tagtrack-$OUTPUT-$1 true   
+                                       ;;
                        esac
                        ;;
                wav)
                        esac
                        ;;
                wav)
@@ -1253,6 +1256,14 @@ do_encode ()
                                                        $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS "$IN" -o "$OUT"
                                                fi
                                                ;;
                                                        $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)
                                        esac
                                ;;
                        wav)
@@ -3431,6 +3442,10 @@ APETAG=apetag
 FAAC=faac
 NEROAACENC=neroAacEnc
 FDKAAC=fdkaac
 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
 
 ID3=id3
 ID3V2=id3v2
@@ -3439,6 +3454,7 @@ VORBISCOMMENT=vorbiscomment
 METAFLAC=metaflac
 NEROAACTAG=neroAacTag
 
 METAFLAC=metaflac
 NEROAACTAG=neroAacTag
 
+WINE=wine
 CDPARANOIA=cdparanoia
 CD_PARANOIA=cd-paranoia
 CDDA2WAV=icedax
 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'
 # fdkaac chokes without either a bitrate or bitrate-mode specified so 
 # we set bitrate here.
 FDKAACENCOPTS='--bitrate 192k'
+QAACENCOPTS=
 
 ID3OPTS=
 EYED3OPTS=""
 
 ID3OPTS=
 EYED3OPTS=""
@@ -4078,6 +4095,7 @@ do
                        [ "$AACENCODERSYNTAX" = "default" ] && AACENCODERSYNTAX=faac
                        [ "$DOTAG" = "y" ] && CHECKFAACBUILD=y
                        [ "$AACENCODERSYNTAX" = "neroAacEnc" ] && NEEDNEROAACTAG=y
                        [ "$AACENCODERSYNTAX" = "default" ] && AACENCODERSYNTAX=faac
                        [ "$DOTAG" = "y" ] && CHECKFAACBUILD=y
                        [ "$AACENCODERSYNTAX" = "neroAacEnc" ] && NEEDNEROAACTAG=y
+                       [ "$AACENCODERSYNTAX" = "qaac" ] && NEEDWINE=y
                        ;;
                wav)
                        if [ "$KEEPWAVS" = "y" ]; then
                        ;;
                wav)
                        if [ "$KEEPWAVS" = "y" ]; then
@@ -4211,6 +4229,15 @@ case "$AACENCODERSYNTAX" in
                        AACENCODER="$FDKAAC"
                fi
                ;;
                        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
 esac
 
 # and which tagger
@@ -4351,6 +4378,7 @@ PIPE_speexenc="-"
 PIPE_mpcenc="-"
 PIPE_wavpack="-"
 PIPE_faac="-"
 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.
 # 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} \
        ${NEEDMPCGAIN+$MPCGAIN} ${NEEDCUEREADER+$CUEREADER} \
        ${NEEDWVGAIN+WVGAIN} ${NEEDAPETAG+$APETAG} \
        ${NEEDCUE2DISCID+$CUE2DISCID} ${NEEDNEROAACTAG+$NEROAACTAG} \
-       ${NEEDGLYRC+$GLYRC}
+       ${NEEDGLYRC+$GLYRC} ${NEEDWINE+$WINE}
 do
        checkexec "$X"
 done
 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\'
 .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\'
 .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,
 .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,
 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,
 .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,
 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
 .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
 # 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
 # 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
 
 #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
 # Taggers, rippers, replaygain etc:
 #ID3=id3
 #ID3V2=id3v2
 #IDENTIFY=identify
 #CONVERT=convert
 #DISPLAYCMD=display
 #IDENTIFY=identify
 #CONVERT=convert
 #DISPLAYCMD=display
+#WINE=wine
 
 # Options to call programs with:
 
 
 # Options to call programs with:
 
 #     '--profile 2 --bitrate-mode 5 --afterburner 1'
 #     for a good quality encode. 
 #FDKAACENCOPTS='--bitrate 192k'
 #     '--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'
 
 # 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 
 abcde 2.7
 
   * Rewrite of abcde's mungefilename function. Thanks to