136 lines
3.2 KiB
Bash
Executable file
136 lines
3.2 KiB
Bash
Executable file
#!/bin/bash
|
|
# Signed 16 bit Little Endian, Rate 22050 Hz, Mono
|
|
#
|
|
# use "play" command to play back audio
|
|
|
|
#SOURCE_DIR="$D/audio/raw"
|
|
#OUTPUT_DIR="$D/audio/cooked"
|
|
|
|
ENCODE_FLAC="NO"
|
|
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
|
|
# 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
|
|
|
|
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
|
|
if [ ! -d "$WAV_DIR/$DIR" ]; then
|
|
mkdir -p "$WAV_DIR/$DIR"
|
|
fi
|
|
if [ "$ENCODE_FLAC" = "YES" -a ! -d "$FLAC_DIR/$DIR" ]; then
|
|
mkdir -p "$FLAC_DIR/$DIR"
|
|
fi
|
|
if [ "$ENCODE_MP3" = "YES" -a ! -d "$MP3_DIR/$DIR" ]; then
|
|
mkdir -p "$MP3_DIR/$DIR"
|
|
fi
|
|
cd "$DIR"
|
|
echo "working in directory: $DIR"
|
|
for INFILE in *.raw; do
|
|
echo "...working on file: $INFILE"
|
|
FIX="`echo $INFILE | sed -e 's/^\[.*\] //g'`"
|
|
BASENAME="`basename \"$FIX\" .raw`"
|
|
RAWNAME="$BASENAME.raw"
|
|
if [ -f "$RAWNAME" ]; then
|
|
echo "......filename conflict detected, adding some randomness"
|
|
FUDGE="$RANDOM"
|
|
BASENAME="$BASENAME-$FUDGE"
|
|
RAWNAME="$BASENAME.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
|
|
echo "......HUH? already converted?"
|
|
fi
|
|
fi
|
|
if [ "$ENCODE_MP3" = "YES" ]; then
|
|
MP3NAME="$MP3_DIR/$DIR/$BASENAME.mp3"
|
|
if [ ! -f "$MP3NAME" ]; then
|
|
echo "......converting it to MP3: $BASENAME.mp3"
|
|
lame --quiet $LAME_ARGS "$WAVNAME" "$MP3NAME"
|
|
else
|
|
echo "......HUH? already converted"
|
|
fi
|
|
fi
|
|
done
|
|
cd ..
|
|
done
|