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]...>"
run_command replaygain-mp3 nice $ENCNICE $MP3GAIN $MP3GAINOPTS "${OUTPUTFILES[@]}"
;;
mpc)
- run_command replaygain-mpc nice $ENCNICE $MPPGAIN --auto "${OUTPUTFILES[@]}"
+ run_command replaygain-mpc nice $ENCNICE $MPCGAIN "${OUTPUTFILES[@]}"
+ ;;
+ wv)
+ run_command replaygain-wv nice $ENCNICE $WVGAIN $WVGAINOPTS "${OUTPUTFILES[@]}"
;;
*);;
esac
eyed3_06) addopts=( \
${ENCODING:+--set-encoding="$ENCODING"} \
${TPE2:+--set-text-frame=TPE2:"$TPE2"} \
+ # We set 'recording-date' so the date tag will show
+ # in Audacious, vlc and friends... Andrew.
+ ${CDYEAR:+--set-text-frame="TDRC:$CDYEAR"} \
${COMMENTOUTPUT:+--comment=::"$COMMENTOUTPUT"} \
);;
*) addopts=( \
${ENCODING:+--encoding="$ENCODING"} \
${TPE2:+--text-frame=TPE2:"$TPE2"} \
+ # We set 'recording-date' so the date tag will show
+ # in Audacious, vlc and friends... Andrew.
+ ${CDYEAR:+--text-frame="TDRC:$CDYEAR"} \
${COMMENTOUTPUT:+--comment "$COMMENTOUTPUT"} \
);;
esac
run_command tagtrack-$OUTPUT-$1 nice $ENCNICE $TAGGER $TAGGEROPTS \
-A "$DALBUM" \
- -a "$TRACKARTIST" -t "$TRACKNAME" ${CDYEAR:+-Y "$CDYEAR"} \
+ -a "$TRACKARTIST" -t "$TRACKNAME" \
-G "$GENREID" -n "${TRACKNUM:-$1}" \
${TRACKNUM:+-N "$TRACKS"} \
"${addopts[@]}" \
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
;;
TEMPARG="PIPE_$MPCENCODER"
;;
wv)
- TEMPARG="PIPE_$WVCENCODERSYNTAX"
+ TEMPARG="PIPE_$WVENCODERSYNTAX"
+ ;;
+ ape)
+ TEMPARG="PIPE_$APENCODERSYNTAX"
;;
aac)
TEMPARG="PIPE_$AACENCODERSYNTAX"
%local*%)
case "$OPUSENCODERSYNTAX" in
opusenc)
-
- if [ "$(eval echo ${COMMENT})" != "" ]; then
- case "$COMMENT" in
- *=*) ;;
- *) COMMENT="COMMENT=$COMMENT" ;;
- esac
- fi
# Tag the file at encode time, as it can't be done after encoding.
if [ "$DOTAG" = "y" ]; then
- $RUN_COMMAND nice $EFFECTIVE_NICE $OPUSENCODER $OPUSENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" --title "$TRACKNAME" --genre "$CDGENRE" --date "$CDYEAR" --comment TRACKNUMBER="$1" ${COMMENT:+--comment "$COMMENT"} "$IN" "$OUT"
+ $RUN_COMMAND nice $EFFECTIVE_NICE $OPUSENCODER $OPUSENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" --title "$TRACKNAME" \
+ --genre "$CDGENRE" --date "$CDYEAR" --comment TRACKNUMBER="$1" ${COMMENT:+--comment COMMENT="$COMMENT"} "$IN" "$OUT"
else
$RUN_COMMAND nice $EFFECTIVE_NICE $OPUSENCODER $OPUSENCODEROPTS "$IN" "$OUT"
fi
fi
;;
mpc)
- # MPP/MP+(Musepack) format (.mpc) is done locally, with inline
- # tagging. Uses mpcenc for Musepack SV8 encoding, changed from
- # 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"
+ # Tag the file inline at encode time.
+ if [ "$DOTAG" = "y" ]; then
+ $RUN_COMMAND nice $EFFECTIVE_NICE $MPCENCODER $MPCENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" --title "$TRACKNAME" \
+ --track "$1" --genre "$CDGENRE" --year "$CDYEAR" ${COMMENT:+--comment "$COMMENT"} "$IN" "$OUT"
+ else
+ $RUN_COMMAND nice $EFFECTIVE_NICE $MPCENCODER $MPCENCODEROPTS "$IN" "$OUT"
+ fi
;;
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"
+ -w Track="$1" -w Genre="$CDGENRE" -w Year="$CDYEAR" ${COMMENT:+-w Comment="$COMMENT"} "$IN" -o "$OUT"
else
$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.
fdkaac)
if [ "$DOTAG" = "y" ]; then
$RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" \
- --title "$TRACKNAME" --track "$1" --genre "$CDGENRE" --long-tag Year:"$CDYEAR" --comment "$COMMENT" "$IN" -o "$OUT"
+ --title "$TRACKNAME" --track "$1" --genre "$CDGENRE" --date "$CDYEAR" --comment "$COMMENT" "$IN" -o "$OUT"
else
$RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS "$IN" -o "$OUT"
fi
;;
wav)
# In case of wav output we need nothing. Just keep the wavs.
+ # But we need the following to allow full logging and subsequent
+ # successful cleaning of $ABCDETEMPDIR. Andrew.
+ echo "encodetrack-$OUTPUT-$UTRACKNUM" >> "$ABCDETEMPDIR/status"
;;
esac
$RUN_COMMAND_PIPES
# do_batch_gain
# variables used:
-# MP3GAIN, MP3GAINOPTS, VORBISGAIN, VORBISGAINOPTS, MPPGAIN, MPPGAINOPTS
+# MP3GAIN, MP3GAINOPTS, VORBISGAIN, VORBISGAINOPTS, MPCGAIN
# FIXME #
do_batch_gain ()
{
SPEEXENCODERSYNTAX=default
MPCENCODERSYNTAX=default
WVENCODERSYNTAX=default
+APENCODERSYNTAX=default
AACENCODERSYNTAX=default
NORMALIZERSYNTAX=default
CUEREADERSYNTAX=default
FLAC=flac
# speex
SPEEXENC=speexenc
-# mpp (Musepack)
+# mpc (Musepack)
MPCENC=mpcenc
# wv (wavpack)
WVENC=wavpack
+# ape
+APENC=mac
+APETAG=apetag
# m4a
AACENC=faac
CDSPEED=eject
VORBISGAIN=vorbisgain
MP3GAIN=mp3gain
-MPPGAIN=replaygain
+MPCGAIN=mpcgain
+WVGAIN=wvgain
+# For Wavpack replay gain we set both the default of 'track gain'
+# as well as this option for 'album gain'. Better media players
+# such as vlc can select either or neither. Andrew.
+WVGAINOPTS='-a'
MKCUE=mkcue
MKTOC=cdrdao
DIFF=diff
MPCENCOPTS=
# wv
WVENCOPTS=
+# ape
+# Monkey's Audio Console (mac) chokes without a mode setting
+# so we set one here. Andrew.
+APENCOPTS='-c4000'
# m4a
AACENCOPTS=
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
- for OUTPUT in "$(echo "$OUTPUTTYPE" | tr , \ )"; do
- TEMPOUTPUT=$( echo "$OUTPUT" | cut -d: -f1 )
+ # Allows commandline selection of options while using multiple outputs.
+ # Example: abcde -o 'flac:-8,mp3:-b 320' Patch by Matthias Andree.
+ for OUTPUT in $(echo "$OUTPUTTYPE" | tr -d ' ' | tr , ' '); do
+ TEMPOUTPUT=${OUTPUT%%:*}
TEMPOUTPUTTYPE="${TEMPOUTPUTTYPE:+$TEMPOUTPUTTYPE,}$TEMPOUTPUT"
done
OUTPUTTYPE="$TEMPOUTPUTTYPE"
;;
mpc)
[ "$MPCENCODERSYNTAX" = "default" ] && MPCENCODERSYNTAX=mpcenc
- [ "$DOREPLAYGAIN" = "y" ] && NEEDMPPGAIN=y
+ [ "$DOREPLAYGAIN" = "y" ] && NEEDMPCGAIN=y
;;
wv)
[ "$WVENCODERSYNTAX" = "default" ] && WVENCODERSYNTAX=wavpack
[ "$DOTAG" = "y" ]
+ [ "$DOREPLAYGAIN" = "y" ] && NEEDWVGAIN=y
+ ;;
+ ape)
+ [ "$APENCODERSYNTAX" = "default" ] && APENCODERSYNTAX=mac
+ [ "$DOTAG" = "y" ] && NEEDAPETAG=y
;;
aac)
[ "$AACENCODERSYNTAX" = "default" ] && AACENCODERSYNTAX=faac
esac
case "$WVENCODERSYNTAX" in
wavpack)
- WVCENCODEROPTS="${WVENCODEROPTSCLI:-$WVENCOPTS}"
+ WVENCODEROPTS="${WVENCODEROPTSCLI:-$WVENCOPTS}"
WVENCODER="$WVENC"
;;
esac
+case "$APENCODERSYNTAX" in
+ mac)
+ APENCODEROPTS="${APENCODEROPTSCLI:-$APENCOPTS}"
+ APENCODER="$APENC"
+ ;;
+esac
case "$AACENCODERSYNTAX" in
faac|neroAacEnc|fdkaac)
AACENCODEROPTS="${AACENCODEROPTSCLI:-$AACENCOPTS}"
PIPEENCODERSVARCHECK="PIPE_$MPCENCODER" ;;
wv)
PIPEENCODERSVARCHECK="PIPE_$WVENCODER" ;;
+ ape)
+ PIPEENCODERSVARCHECK="PIPE_$APENCODER" ;;
esac
decho "PIPERIPPERSVARCHECK: $( eval echo "\$$PIPERIPPERSVARCHECK" )"
if [ "$( eval echo "\$$PIPERIPPERSVARCHECK" )" = "$" ] || \
# Make sure a buncha things exist
for X in $CDROMREADER $CDDISCID ${NEEDTAGGER+$TAGGER} $MP3ENCODER \
$OGGENCODER $OPUSENCODER $FLACENCODER $SPEEXENCODER $MPCENCODER \
- $AACENCODER $WVENCODER $CDDBTOOL \
+ $AACENCODER $WVENCODER $CDDBTOOL $APENCODER \
${NEEDHTTPGET+$HTTPGET} ${NEEDDISTMP3+$DISTMP3} \
${NEEDCOMMENTER+$VORBISCOMMENT} ${NEEDMETAFLAC+$METAFLAC} \
${NEEDNORMALIZER+$NORMALIZER} ${NEEDEJECT+$EJECT} \
${NEEDDISKUTIL+diskutil} ${NEEDCDSPEED+$CDSPEED} \
${NEEDVORBISGAIN+$VORBISGAIN} ${NEEDMP3GAIN+$MP3GAIN} \
- ${NEEDMPPGAIN+$MPPGAIN} ${NEEDCUEREADER+$CUEREADER} \
+ ${NEEDMPCGAIN+$MPCGAIN} ${NEEDCUEREADER+$CUEREADER} \
+ ${NEEDWVGAIN+WVGAIN} ${NEEDAPETAG+$APETAG} \
${NEEDCUE2DISCID+$CUE2DISCID}
do
checkexec "$X"