Major changes to audio conversion script

This commit is contained in:
Donald Burr 2015-02-24 16:34:09 -08:00
parent 608b84f10c
commit 4e3d1c1642

View file

@ -3,62 +3,134 @@
# #
# use "play" command to play back audio # use "play" command to play back audio
# store location that this script is in #SOURCE_DIR="$D/audio/raw"
D="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #OUTPUT_DIR="$D/audio/cooked"
RAW_DIR="$D/audio/raw"
COOKED_DIR="$D/audio/cooked"
FLAC_DIR="$D/audio/cooked/flac"
MP3_DIR="$D/audio/cooked/mp3"
if [ "$1" = "-m" ]; then ENCODE_FLAC="NO"
ENCODE_TO_MP3=YES ENCODE_MP3="NO"
FLAC_ARGS="-8"
LAME_ARGS="--preset studio"
while getopts ":s:o:fmF:M:h" opt; do
case $opt in
s)
SOURCE_DIR="$OPTARG"
;;
o)
OUTPUT_DIR="$OPTARG"
;;
f)
ENCODE_FLAC="YES"
;;
m)
ENCODE_MP3="YES"
;;
h)
echo "Insert usage message here." >&2
exit 0
;;
\?)
echo "Error: invalid option \`-$OPTARG'" >&2
exit 1
;;
:)
echo "Error: option \`-$OPTARG' requires an argument" >&2
exit 1
;;
esac
done
if [ -z "$SOURCE_DIR" ]; then
echo "ERROR: source directory must be specified."
exit 1
else else
ENCODE_TO_MP3=NO # make into an absolute path
SOURCE_DIR="`cd \"$SOURCE_DIR\"; pwd`"
if [ ! -d "$SOURCE_DIR" ]; then
echo "ERROR: source dir \`$SOURCE_DIR' does not exist." >&2
exit 1
fi
fi fi
cd "$RAW_DIR" if [ -z "$OUTPUT_DIR" ]; then
echo "ERROR: output directory must be specified."
exit 1
else
# make into an absolute path
OUTPUT_DIR="`cd \"$OUTPUT_DIR\"; pwd`"
if [ ! -d "$OUTPUT_DIR" ]; then
echo "ERROR: output dir \`$OUTPUT_DIR' does not exist." >&2
exit 1
fi
fi
WAV_DIR="$OUTPUT_DIR/wav"
FLAC_DIR="$OUTPUT_DIR/flac"
MP3_DIR="$OUTPUT_DIR/mp3"
echo "Source directory: $SOURCE_DIR"
echo "Output directory: $OUTPUT_DIR"
echo -n "Encoding FLAC? $ENCODE_FLAC"
if [ "$ENCODE_FLAC" = "YES" ]; then
echo " (arguments: $FLAC_ARGS)"
else
echo
fi
echo -n "Encoding MP3? $ENCODE_MP3"
if [ "$ENCODE_MP3" = "YES" ]; then
echo " (arguments: $LAME_ARGS)"
else
echo
fi
cd "$SOURCE_DIR"
for DIR in *; do for DIR in *; do
if [ ! -d "$FLAC_DIR/$DIR" ]; then if [ ! -d "$WAV_DIR" ]; then
mkdir -p "$WAV_DIR/$DIR"
fi
if [ "$ENCODE_FLAC" = "YES" -a ! -d "$FLAC_DIR/$DIR" ]; then
mkdir -p "$FLAC_DIR/$DIR" mkdir -p "$FLAC_DIR/$DIR"
fi fi
if [ "$ENCODE_TO_MP3" = "YES" ]; then if [ "$ENCODE_MP3" = "YES" -a ! -d "$MP3_DIR/$DIR" ]; then
if [ ! -d "$MP3_DIR/$DIR" ]; then
mkdir -p "$MP3_DIR/$DIR" mkdir -p "$MP3_DIR/$DIR"
fi fi
fi
cd "$DIR" cd "$DIR"
echo "working in $DIR" echo "working in directory: $DIR"
for INFILE in *.raw; do for INFILE in *.raw; do
echo "working on $INFILE" echo "...working on file: $INFILE"
FIX="`echo $INFILE | sed -e 's/^\[.*\] //g'`" FIX="`echo $INFILE | sed -e 's/^\[.*\] //g'`"
BASENAME="`basename \"$FIX\" .raw`" BASENAME="`basename \"$FIX\" .raw`"
TEMP_OUTFILE="$BASENAME.wav" RAWNAME="$BASENAME.raw"
echo "...converting to intermediate format $TEMP_OUTFILE" if [ -f "$RAWNAME" ]; then
#sox -r 44100 -e unsigned -b 8 -c 1 <RAW_FILE> <TARGET_FILE> echo "......filename conflict detected, adding some randomness"
sox -r 22050 -e signed -b 16 -L -c 1 "$INFILE" "$TEMP_OUTFILE"
if [ -f "$FLAC_DIR/$DIR/$BASENAME.flac" -o -f "$MP3_DIR/$DIR/$BASENAME.mp3" ] ; then
FUDGE="$RANDOM" FUDGE="$RANDOM"
FLAC_FILE="$FLAC_DIR/$DIR/$BASENAME-$FUDGE.flac" BASENAME="$BASENAME-$FUDGE"
MP3_FILE="$MP3_DIR/$DIR/$BASENAME-$FUDGE.mp3" RAWNAME="$BASENAME-$FUDGE.raw"
fi
echo "......renaming to $RAWNAME"
mv "$INFILE" "$RAWNAME"
WAVNAME="$WAV_DIR/$DIR/$BASENAME.wav"
echo "......encoding to WAV: $BASENAME.wav"
sox -r 22050 -e signed -b 16 -L -c 1 "$RAWNAME" "$WAVNAME"
if [ "$ENCODE_FLAC" = "YES" ]; then
FLACNAME="$FLAC_DIR/$DIR/$BASENAME.flac"
if [ ! -f "$FLACNAME" ]; then
echo "......converting it to FLAC: $BASENAME.flac"
flac -s $FLAC_ARGS "$WAVNAME" -o "$FLACNAME"
else else
FLAC_FILE="$FLAC_DIR/$DIR/$BASENAME.flac" echo "......HUH? already converted?"
MP3_FILE="$MP3_DIR/$DIR/$BASENAME.mp3"
fi fi
if [ ! -f "$FLAC_FILE" ]; then fi
echo "...converting it to FLAC: $FLAC_FILE" if [ "$ENCODE_MP3" = "YES" ]; then
flac -s -8 "$TEMP_OUTFILE" -o "$FLAC_FILE" MP3NAME="$MP3_DIR/$DIR/$BASENAME.mp3"
if [ ! -f "$MP3NAME" ]; then
echo "......converting it to MP3: $BASENAME.mp3"
lame --quiet $LAME_ARGS "$WAVNAME" "$MP3NAME"
else else
echo "...already converted" echo "......HUH? already converted"
fi
if [ "$ENCODE_TO_MP3" = "YES" ]; then
if [ ! -f "$MP3_FILE" ]; then
echo "...converting it to MP3: $MP3_FILE"
lame --quiet --preset studio "$TEMP_OUTFILE" "$MP3_FILE"
else
echo "...already converted"
fi fi
fi fi
rm -f "$TEMP_OUTFILE"
done done
cd .. cd ..
done done