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
TPE2="Various"
fi
-
case "$ID3SYNTAX" in
id3)
run_command tagtrack-$OUTPUT-$1 nice $ENCNICE \
);;
esac
run_command tagtrack-$OUTPUT-$1 nice $ENCNICE $TAGGER $TAGGEROPTS \
- -A "$DALBUM" \
+ -A "$DALBUM" \
-a "$TRACKARTIST" -t "$TRACKNAME" \
-G "$GENREID" -n "${TRACKNUM:-$1}" \
${TRACKNUM:+-N "$TRACKS"} \
opus)
run_command tagtrack-$OUTPUT-$1 true
;;
- ape)
- case "$APENCODER" in
- mac) # For mac use the aged apetag: http://www.muth.org/Robert/Apetag/ ... FIXME: use a more modern tagger when/if one appears. 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" -p comment="$COMMENT"
- ;;
- esac
- ;;
flac)
(
echo ARTIST="$TRACKARTIST"
*) echo COMMENT="$COMMENTOUTPUT";;
esac
fi
- ) | run_command tagtrack-$OUTPUT-$1 nice $ENCNICE $METAFLAC $METAFLACOPTS ${IMPORTCUESHEET:+--import-cuesheet-from="$ABCDETEMPDIR/$CUEFILE"} --import-tags-from=- "$ABCDETEMPDIR/track$1.$FLACOUTPUTCONTAINER"
+ ) | run_command tagtrack-$OUTPUT-$1 nice $ENCNICE $METAFLAC $METAFLACOPTS ${IMPORTCUESHEET:+--import-cuesheet-from="$ABCDETEMPDIR/$CUEFILE"} \
+ --import-tags-from=- "$ABCDETEMPDIR/track$1.$FLACOUTPUTCONTAINER"
;;
spx)
run_command tagtrack-$OUTPUT-$1 true
mpc)
run_command tagtrack-$OUTPUT-$1 true
;;
- wv)
- run_command tagtrack-$OUTPUT-$1 true
+ 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.
+ 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
- ;;
- m4a)
- case "$AACENCODERSYNTAX" in
- fdkaac) # We will use inline tagging...
- run_command tagtrack-$OUTPUT-$1 true
- ;;
- neroAacEnc) # Tag post encode with neroAacTag...
- run_command tagtrack-$OUTPUT-$1 nice $ENCNICE "$NEROAACTAG" "$ABCDETEMPDIR/track$1.m4a" \
- -meta:artist="$TRACKARTIST" -meta:album="$DALBUM" -meta:title="$TRACKNAME" -meta:track=${TRACKNUM:-$1} \
- -meta:year="$CDYEAR" -meta:genre="$CDGENRE" -meta:comment="$COMMENT"
- ;;
- faac)
- run_command tagtrack-$OUTPUT-$1 true
;;
- esac
+ m4a)
+ case "$AACENCODERSYNTAX" in
+ fdkaac)
+ # We will use inline tagging...
+ run_command tagtrack-$OUTPUT-$1 true
+ ;;
+ neroAacEnc)
+ # Tag post encode with neroAacTag...
+ run_command tagtrack-$OUTPUT-$1 nice $ENCNICE "$NEROAACTAG" "$ABCDETEMPDIR/track$1.m4a" \
+ -meta:artist="$TRACKARTIST" -meta:album="$DALBUM" -meta:title="$TRACKNAME" -meta:track=${TRACKNUM:-$1} \
+ -meta:year="$CDYEAR" -meta:genre="$CDGENRE" -meta:comment="$COMMENT"
+ ;;
+ faac)
+ run_command tagtrack-$OUTPUT-$1 true
+ ;;
+ esac
;;
wav)
run_command tagtrack-$OUTPUT-$1 true
if checkerrors "tagtrack-(.{3,6})-$1"; then :; else
run_command tagtrack-$1 true
fi
-
}
# do_nogap_encode
# do_encode [tracknumber] [hostname]
# If no hostname is specified, encode locally
# variables used:
-# TRACKS, TRACKNAME, TRACKARTIST, DISTMP3, DISTMP3OPTS, {FOO}ENCODERSYNTAX, OUTPUTTYPE, ENCODEROPTS, DALBUM, DARTIST, ENCNICE, CDYEAR, CDGENRE, COMMENT
+# TRACKS, TRACKNAME, TRACKARTIST, DISTMP3, DISTMP3OPTS, {FOO}ENCODERSYNTAX, OUTPUTTYPE, ENCODEROPTS,
+# DALBUM, DARTIST, ENCNICE, CDYEAR, CDGENRE, COMMENT
do_encode ()
{
if [ "$USEPIPES" = "y" ]; then
opus)
TEMPARG="PIPE_$OPUSENCODERSYNTAX"
;;
- ape)
- TEMPARG="PIPE_$APENCODERSYNTAX"
- ;;
flac)
TEMPARG="PIPE_$FLACENCODERSYNTAX"
;;
TEMPARG="PIPE_$MPCENCODER"
;;
wv)
- TEMPARG="PIPE_$WVCENCODERSYNTAX"
+ TEMPARG="PIPE_$WVENCODERSYNTAX"
;;
aac)
TEMPARG="PIPE_$AACENCODERSYNTAX"
IN="$( eval echo "\$$TEMPARG" )"
else
IN="$ABCDETEMPDIR/track$1.wav"
- case "$OUTPUT" in
- mp3)
- case "$MP3ENCODERSYNTAX" in
- # FIXME # check if mp3enc needs -if for pipes
- # FIXME # I have not been able to find a working mp3enc binary
- mp3enc)
- FILEARG="-if $IN"
- ;;
- *)
- FILEARG="$IN"
- ;;
- esac
- ;;
- *)
- FILEARG="$IN"
- ;;
- esac
fi
# We need IN to proceed, if we are not using pipes.
if [ -s "$IN" -o X"$USEPIPES" = "Xy" ] ; then
opus)
OUTPUT=$OPUSOUTPUTCONTAINER
;;
- ape)
- OUTPUT=$APEOUTPUTCONTAINER
- ;;
flac)
OUTPUT=$FLACOUTPUTCONTAINER
;;
RUN_COMMAND=""
# We need a way to store the creation of the files when using PIPES
RUN_COMMAND_PIPES="run_command encodetrack-$OUTPUT-$1 true"
- # When pipping it does not make sense to have a higher nice for
+ # When piping it does not make sense to have a higher nice for
# reading than for encoding, since it will be hold by the
# encoding process. Setting an effective nice, to calm down a
# bit the reading process.
%local*%)
case "$MP3ENCODERSYNTAX" in
lame|toolame|gogo) $RUN_COMMAND nice $EFFECTIVE_NICE $MP3ENCODER $MP3ENCODEROPTS "$IN" "$OUT" ;;
- bladeenc) $RUN_COMMAND nice $EFFECTIVE_NICE $MP3ENCODER $MP3ENCODEROPTS -quit "$IN" ;;
+ bladeenc) $RUN_COMMAND nice $EFFECTIVE_NICE $MP3ENCODER $MP3ENCODEROPTS -quit "$IN" "$OUT" ;;
l3enc|xingmp3enc) $RUN_COMMAND nice $EFFECTIVE_NICE $MP3ENCODER "$IN" "$OUT" $MP3ENCODEROPTS ;;
- # FIXME # Relates to the previous FIXME since it might need the "-if" removed.
mp3enc) $RUN_COMMAND nice $EFFECTIVE_NICE $MP3ENCODER -if "$IN" -of "$OUT" $MP3ENCODEROPTS ;;
esac
;;
%local*%)
case "$OPUSENCODERSYNTAX" in
opusenc)
- # 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="$COMMENT"} "$IN" "$OUT"
- else
- $RUN_COMMAND nice $EFFECTIVE_NICE $OPUSENCODER $OPUSENCODEROPTS "$IN" "$OUT"
- 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="$COMMENT"} "$IN" "$OUT"
+ else
+ $RUN_COMMAND nice $EFFECTIVE_NICE $OPUSENCODER $OPUSENCODEROPTS "$IN" "$OUT"
+ fi
+ ;;
esac
;;
*)
;;
esac
;;
- ape)
- case "$APENCODERSYNTAX" in
- mac)
- $RUN_COMMAND nice $EFFECTIVE_NICE $APENCODER "$IN" "$OUT" $APENCODEROPTS
- ;;
- esac
- ;;
flac)
case "$2" in
%local*%)
fi
# Tag the file at encode time, as it can't be done after encoding.
if [ "$DOTAG" = "y" ]; then
- $RUN_COMMAND nice $EFFECTIVE_NICE $SPEEXENCODER $SPEEXENCODEROPTS --author "$TRACKARTIST" --title "$TRACKNAME" ${COMMENT:+--comment "$COMMENT"} "$IN" "$OUT"
+ $RUN_COMMAND nice $EFFECTIVE_NICE $SPEEXENCODER $SPEEXENCODEROPTS --author "$TRACKARTIST" --title "$TRACKNAME" \
+ ${COMMENT:+--comment "$COMMENT"} "$IN" "$OUT"
else
$RUN_COMMAND nice $EFFECTIVE_NICE $SPEEXENCODER $SPEEXENCODEROPTS "$IN" "$OUT"
fi
;;
mpc)
- # Tag the file inline at encode time.
- $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"
- else
- $RUN_COMMAND nice $EFFECTIVE_NICE $WVENCODER $WVENCODEROPTS "$IN" -o "$OUT"
- fi
+ if [ "$DOTAG" = "y" ]; then
+ $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" ${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.
- $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS -o "$OUT" "$IN"
- ;;
+ # aac container is only used to catch faac encoded files where faac
+ # is compiled without mp4 support (with libmp4v2).
+ $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS -o "$OUT" "$IN"
+ ;;
m4a)
- case "$AACENCODERSYNTAX" in
- faac)
- if [ "$DOTAG" = "y" ]; then
- $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS --artist "$TRACKARTIST" \
- --album "$DALBUM" --title "$TRACKNAME" --track ${TRACKNUM:-$1} --year "$CDYEAR" \
- --genre "$CDGENRE" --comment "$COMMENT" -o "$OUT" "$IN"
- else
- $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS -o "$OUT" "$IN"
- fi
- ;;
- neroAacEnc)
- $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS -if "$IN" -of "$OUT"
- ;;
- fdkaac)
- if [ "$DOTAG" = "y" ]; then
- $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" \
- --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
- ;;
- esac
+ case "$AACENCODERSYNTAX" in
+ faac)
+ if [ "$DOTAG" = "y" ]; then
+ $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" \
+ --title "$TRACKNAME" --track ${TRACKNUM:-$1} --year "$CDYEAR" --genre "$CDGENRE" --comment "$COMMENT" -o "$OUT" "$IN"
+ else
+ $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS -o "$OUT" "$IN"
+ fi
+ ;;
+ neroAacEnc)
+ $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS -if "$IN" -of "$OUT"
+ ;;
+ fdkaac)
+ if [ "$DOTAG" = "y" ]; then
+ $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" \
+ --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
+ ;;
+ esac
;;
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"
+ # successful cleaning of $ABCDETEMPDIR.
+ 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 ()
{
opus)
OUTPUT=$OPUSOUTPUTCONTAINER
;;
- ape)
- OUTPUT=$APEOUTPUTCONTAINER
- ;;
flac)
OUTPUT=$FLACOUTPUTCONTAINER
;;
opus)
OUTPUT=$OPUSOUTPUTCONTAINER
;;
- ape)
- OUTPUT=$APEOUTPUTCONTAINER
- ;;
flac)
OUTPUT=$FLACOUTPUTCONTAINER
;;
if [ "$USEPIPES" = "y" ]; then
TEMPARG="PIPERIPPER_$CDROMREADERSYNTAX"
FILEARG="$( eval echo "\$$TEMPARG" )"
- REDIR="y"
+ REDIR=""
PIPE_MESSAGE="and encoding "
else
WAVDATA="$ABCDETEMPDIR/track$UTRACKNUM.wav"
case "$CDROMREADERSYNTAX" in
- ## FIXME ## Find the cases for dagrab and flac, to avoid exceptions
+ ## FIXME ## Find the cases for flac, to avoid exceptions
flac)
FILEARG="--output-name=$WAVDATA"
;;
- dagrab)
- FILEARG="-f $WAVDATA"
- ;;
*)
FILEARG="$WAVDATA"
;;
esac
- REDIR="n"
+ REDIR=">&2"
fi
if [ "$1" = "onetrack" ]; then
echo "Grabbing ${PIPE_MESSAGE}tracks $UTRACKNUM - $LASTTRACK as one track ..." >&2
### FIXME ### use an exception for flac, since it uses -o
### FIXME ### Shall we just use -o $FILEARG ??
flac)
- # Avoid problems wit math expressions by unpadding the given UTRACKNUM
+ # Avoid problems with math expressions by unpadding the given UTRACKNUM
STRIPTRACKNUM=$(expr $UTRACKNUM + 0)
nice $READNICE $FLAC -d -f --cue=${READTRACKNUMS:-$STRIPTRACKNUM.1-$(($STRIPTRACKNUM + 1)).0} "$FILEARG" "$CDROM" ;;
cdparanoia)
- if [ "$REDIR" = "y" ]; then
- nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" >&2
- else
- nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG"
- fi;;
-
+ nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" $REDIR ;;
cdda2wav | icedax)
if [ "$OSFLAVOUR" = "OSX" ] ; then
# Hei, we have to unmount the device before running anything like cdda2wav/icedax in OSX
CDDA2WAVCDROM="$CDROMID"
fi
fi
- if [ "$REDIR" = "y" ]; then
- nice $READNICE $CDROMREADER -D $CDDA2WAVCDROM -t ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" >&2
- else
- nice $READNICE $CDROMREADER -D $CDDA2WAVCDROM -t ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG"
- fi ;;
- ## FIXME ## We have an exception for dagrab, since it uses -f
- ## FIXME ## Shall we just use -f $FILEARG ??
- dagrab)
- if [ "$REDIR" = "y" ]; then
- nice $READNICE $CDROMREADER -d "$CDROM" -v $UTRACKNUM "$FILEARG" >&2
- else
- nice $READNICE $CDROMREADER -d "$CDROM" -v $UTRACKNUM "$FILEARG"
- fi ;;
+ nice $READNICE $CDROMREADER -D $CDDA2WAVCDROM -t ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" $REDIR ;;
+ dagrab) nice $READNICE $CDROMREADER -d "$CDROM" -f "$FILEARG" -v $UTRACKNUM >&2 ;;
pird)
- if [ "$REDIR" = "y" ]; then
+ if [ "$USEPIPES" = "y" ]; then
nice $READNICE $CDROMREADER -j ${READTRACKNUMS:-$UTRACKNUM} "$CDROM" "$FILEARG"
else
+ # Write ripped audio data to stdout and redirect to $FILEARG.
+ # $REDIR can be ignored. Progress is written to stderr by default.
nice $READNICE $CDROMREADER -j ${READTRACKNUMS:-$UTRACKNUM} "$CDROM" "$PIPERIPPER_pird" > "$FILEARG"
- fi ;;
+ fi
+ ;;
cddafs)
# Find the track's mounted path
REALTRACKNUM=$(expr $UTRACKNUM + 0)
FILEPATH=$(find "$FILEPATH" | grep "/$REALTRACKNUM ");
# If the file exists, copy it
if [ -e "$FILEPATH" ] ; then
- if [ "$REDIR" = "y" ]; then
- nice $READNICE $CDROMREADER "$FILEPATH" "$FILEARG" >&2
- else
- nice $READNICE $CDROMREADER "$FILEPATH" "$FILEARG"
- fi
+ nice $READNICE $CDROMREADER "$FILEPATH" "$FILEARG" $REDIR
else
false
fi ;;
- debug)
- if [ "$REDIR" = "y" ]; then
- nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" -w $UTRACKNUM-[:1] "$FILEARG" >&2
- else
- nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" -w $UTRACKNUM-[:1] "$FILEARG"
- fi ;;
+ debug) nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" -w $UTRACKNUM-[:1] "$FILEARG" $REDIR ;;
esac
RETURN=$?
# If we get some error or we get some missing wav
SPEEXENCODERSYNTAX=default
MPCENCODERSYNTAX=default
WVENCODERSYNTAX=default
+APENCODERSYNTAX=default
AACENCODERSYNTAX=default
NORMALIZERSYNTAX=default
CUEREADERSYNTAX=default
OGGENC=oggenc
#opus
OPUSENC=opusenc
-# ape
-APENC=mac
# flac
FLAC=flac
# speex
SPEEXENC=speexenc
-# mpp (Musepack)
+# mpc (Musepack)
MPCENC=mpcenc
# wv (wavpack)
WVENC=wavpack
+# ape
+APENC=mac
+APETAG=apetag
# m4a
-AACENC=faac
+FAAC=faac
+NEROAACENC=neroAacEnc
+FDKAAC=fdkaac
ID3=id3
ID3V2=id3v2
EYED3=eyeD3
VORBISCOMMENT=vorbiscomment
METAFLAC=metaflac
-AACTAG=faac
NEROAACTAG=neroAacTag
-FDKAAC=fdkaac
-APETAG=apetag
CDPARANOIA=cdparanoia
CDDA2WAV=icedax
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
VORBISGAINOPTS="--album"
#opus
OPUSENCOPTS=
-# ape
-# mac has no defaults and will choke without one so we place one... Andrew
-APENCOPTS='-c3000'
# flac
# The flac option is a workaround for an error where flac fails
# to encode with error 'floating point exception'. This is flac
MPCENCOPTS=
# wv
WVENCOPTS=
+# ape
+# Monkey's Audio Console (mac) chokes without a mode setting
+# so we set one here.
+APENCOPTS='-c4000'
# m4a
-AACENCOPTS=
+FAACENCOPTS=
+NEROACENCOPTS=
+# fdkaac chokes without either a bitrate or bitrate-mode specified so
+# we set bitrate here.
+FDKAACENCOPTS='192k'
ID3OPTS=
EYED3OPTS=""
CDPARANOIAOPTS=
+PIRDOPTS=
CDDA2WAVOPTS=
DAGRABOPTS=
CDDAFSOPTS="-f"
if [ "$CDROM" = "" ] ; then
if [ -e /dev/cdroms/cdrom0 ]; then
CDROM=/dev/cdroms/cdrom0
- elif [ "$OSFLAVOUR" = "OSX" ] && [[ $(diskutil list) =~ CD_part.*(disk.)$'\n' ]]; then
+ elif [ "$OSFLAVOUR" = "OSX" ] && [[ $(diskutil list) =~ CD_part[^/]*(disk.)$'\n' ]]; then
CDROM=/dev/${BASH_REMATCH[1]}
elif [ -e /dev/cdrom ]; then
CDROM=/dev/cdrom
case "$OUTPUT" in
vorbis:*|ogg:*) OGGENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
opus:*) OPUSENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
- ape:*) APENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
mp3:*) MP3ENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
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- )" ;;
+ 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"
[ "$OPUSENCODERSYNTAX" = "default" ] && OPUSENCODERSYNTAX=opusenc
OPUSOUTPUTCONTAINER=opus
;;
- ape)
- [ "$APENCODERSYNTAX" = "default" ] && APENCODERSYNTAX=mac
- APEOUTPUTCONTAINER=ape
- ;;
mp3)
[ "$MP3ENCODERSYNTAX" = "default" ] && MP3ENCODERSYNTAX=lame
[ "$DOTAG" = "y" ] && NEEDTAGGER=y
;;
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
m4a)
[ "$AACENCODERSYNTAX" = "default" ] && AACENCODERSYNTAX=faac
[ "$DOTAG" = "y" ] && CHECKFAACBUILD=y
+ [ "$AACENCODERSYNTAX" = "neroAacEnc" ] && NEEDNEROAACTAG=y
;;
wav)
if [ "$KEEPWAVS" = "y" ]; then
OPUSENCODER="$OPUSENC"
;;
esac
-case "$APENCODERSYNTAX" in
- mac)
- APENCODEROPTS="${APENCODEROPTSCLI:-$APENCOPTS}"
- APENCODER="$APENC"
- ;;
-esac
case "$FLACENCODERSYNTAX" in
flac)
FLACENCODEROPTS="${FLACENCODEROPTSCLI:-$FLACOPTS}"
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}"
- AACENCODER="$AACENC"
+ # Some elaborate 'if' work to keep backward compatability for those
+ # who don't realise that AACENCOPTS does not work with abcde from
+ # version 2.6.1 onwards.
+ faac)
+ if [ -z "$FAACENCOPTS" ] && [ -n "$AACENCOPTS" ]; then
+ AACENCODEROPTS="${AACENCODEROPTSCLI:-$AACENCOPTS}"
+ AACENCODER="$FAAC"
+ else
+ AACENCODEROPTS="${AACENCODEROPTSCLI:-$FAACENCOPTS}"
+ AACENCODER="$FAAC"
+ fi
+ ;;
+ neroAacEnc)
+ if [ -z "$NEROAACENCOPTS" ] && [ -n "$AACENCOPTS" ]; then
+ AACENCODEROPTS="${AACENCODEROPTSCLI:-$AACENCOPTS}"
+ AACENCODER="$NEROAACENC"
+ else
+ AACENCODEROPTS="${AACENCODEROPTSCLI:-$NEROAACENCOPTS}"
+ AACENCODER="$NEROAACENC"
+ fi
+ ;;
+ fdkaac)
+ if [ -z "$FDKAACENCOPTS" ] && [ -n "$AACENCOPTS" ]; then
+ AACENCODEROPTS="${AACENCODEROPTSCLI:-$AACENCOPTS}"
+ AACENCODER="$FDKAAC"
+ else
+ AACENCODEROPTS="${AACENCODEROPTSCLI:-$FDKAACENCOPTS}"
+ AACENCODER="$FDKAAC"
+ fi
;;
esac
###USEPIPESSUPPORT###
# Rippers with USEPIPE support
-# FIXME # Include here all the rippers we can figure out support pipes
PIPERIPPER_cdparanoia="-"
+# Note that by default in abcde cdda2wav redirects to icedax.
+PIPERIPPER_cdda2wav="-"
PIPERIPPER_debug="-"
PIPERIPPER_flac="-c "
PIPERIPPER_pird="-"
# Encoders with USEPIPE support
-# FIXME # Include here all the encoders we can figure out support pipes
+PIPE_mp3enc="-sti"
PIPE_lame="-"
-PIPE_bladeenc="-"
+PIPE_bladeenc="stdin"
PIPE_oggenc="-"
PIPE_opusenc="-"
PIPE_flac="-"
+PIPE_speexenc="-"
+PIPE_mpcenc="-"
+PIPE_wavpack="-"
+PIPE_faac="-"
+# Both neroAacEnc and fdkaac seem to manage without the addition of
+# the 'ignorelength' option in PIPE_$AACENCODERSYNTAX when piping
+# in this manner. Andrew.
+PIPE_neroAacEnc="-"
+PIPE_fdkaac="-"
# Figure out if we can use pipes with the ripper/encoder combination
# exit otherwise
PIPEENCODERSVARCHECK="PIPE_$OGGENCODERSYNTAX" ;;
opus)
PIPEENCODERSVARCHECK="PIPE_$OPUSENCODERSYNTAX" ;;
- ape)
- PIPEENCODERSVARCHECK="PIPE_$APENCODERSYNTAX" ;;
flac)
PIPEENCODERSVARCHECK="PIPE_$FLACENCODERSYNTAX" ;;
spx)
- PIPEENCODERSVARCHECK="PIPE_$SPEEXENCODER" ;;
+ PIPEENCODERSVARCHECK="PIPE_$SPEEXENCODERSYNTAX" ;;
mpc)
- PIPEENCODERSVARCHECK="PIPE_$MPCENCODER" ;;
+ PIPEENCODERSVARCHECK="PIPE_$MPCENCODERSYNTAX" ;;
wv)
- PIPEENCODERSVARCHECK="PIPE_$WVENCODER" ;;
+ PIPEENCODERSVARCHECK="PIPE_$WVENCODERSYNTAX" ;;
+ m4a)
+ PIPEENCODERSVARCHECK="PIPE_$AACENCODERSYNTAX" ;;
+ aac)
+ PIPEENCODERSVARCHECK="PIPE_$AACENCODERSYNTAX" ;;
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 $APENCODER $APETAG \
+ $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} \
- ${NEEDCUE2DISCID+$CUE2DISCID}
+ ${NEEDMPCGAIN+$MPCGAIN} ${NEEDCUEREADER+$CUEREADER} \
+ ${NEEDWVGAIN+WVGAIN} ${NEEDAPETAG+$APETAG} \
+ ${NEEDCUE2DISCID+$CUE2DISCID} ${NEEDNEROAACTAG+$NEROAACTAG}
do
checkexec "$X"
done
# for the mp4 container and no tagging capability. (AtomicParsley also cannot tag
# these files). The resulting files are actually ADTS streams which belong in an
# aac container and with some version sniffing this is all cleaned up below. If
-# faac is compiled with libmp4v2 inline tagging occurs with faac. Andrew.
+# faac is compiled with libmp4v2 inline tagging occurs with faac.
+# FIXME: Should this be in this location? (Better incorporated into the checks above.)
if [ "$CHECKFAACBUILD" = "y" ] && [ "$AACENCODERSYNTAX" = "faac" ] ; then
- if faac --help 2>&1 | grep -q -F 'MP4 support unavailable.'; then
- echo "WARNING: Your copy of Faac does not have mp4 support"
- echo "WARNING: Encoding untagged files to aac..."
- OUTPUTTYPE=aac
- else
- echo "Using Faac to Tag AAC Tracks..."
- fi
+ if faac --help 2>&1 | grep -q -F 'MP4 support unavailable.'; then
+ echo "WARNING: Your copy of Faac does not have mp4 support"
+ echo "WARNING: Encoding untagged files to aac..."
+ OUTPUTTYPE=aac
+ else
+ echo "Using Faac to Tag AAC Tracks..."
+ fi
fi
# And last but not least, check if we can diff between files. We do not abort,