Major changes to audio conversion script
This commit is contained in:
parent
608b84f10c
commit
4e3d1c1642
1 changed files with 111 additions and 39 deletions
|
@ -3,62 +3,134 @@
|
|||
#
|
||||
# use "play" command to play back audio
|
||||
|
||||
# store location that this script is in
|
||||
D="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
RAW_DIR="$D/audio/raw"
|
||||
COOKED_DIR="$D/audio/cooked"
|
||||
FLAC_DIR="$D/audio/cooked/flac"
|
||||
MP3_DIR="$D/audio/cooked/mp3"
|
||||
#SOURCE_DIR="$D/audio/raw"
|
||||
#OUTPUT_DIR="$D/audio/cooked"
|
||||
|
||||
if [ "$1" = "-m" ]; then
|
||||
ENCODE_TO_MP3=YES
|
||||
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
|
||||
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
|
||||
|
||||
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
|
||||
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"
|
||||
fi
|
||||
if [ "$ENCODE_TO_MP3" = "YES" ]; then
|
||||
if [ ! -d "$MP3_DIR/$DIR" ]; then
|
||||
if [ "$ENCODE_MP3" = "YES" -a ! -d "$MP3_DIR/$DIR" ]; then
|
||||
mkdir -p "$MP3_DIR/$DIR"
|
||||
fi
|
||||
fi
|
||||
cd "$DIR"
|
||||
echo "working in $DIR"
|
||||
echo "working in directory: $DIR"
|
||||
for INFILE in *.raw; do
|
||||
echo "working on $INFILE"
|
||||
echo "...working on file: $INFILE"
|
||||
FIX="`echo $INFILE | sed -e 's/^\[.*\] //g'`"
|
||||
BASENAME="`basename \"$FIX\" .raw`"
|
||||
TEMP_OUTFILE="$BASENAME.wav"
|
||||
echo "...converting to intermediate format $TEMP_OUTFILE"
|
||||
#sox -r 44100 -e unsigned -b 8 -c 1 <RAW_FILE> <TARGET_FILE>
|
||||
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
|
||||
RAWNAME="$BASENAME.raw"
|
||||
if [ -f "$RAWNAME" ]; then
|
||||
echo "......filename conflict detected, adding some randomness"
|
||||
FUDGE="$RANDOM"
|
||||
FLAC_FILE="$FLAC_DIR/$DIR/$BASENAME-$FUDGE.flac"
|
||||
MP3_FILE="$MP3_DIR/$DIR/$BASENAME-$FUDGE.mp3"
|
||||
BASENAME="$BASENAME-$FUDGE"
|
||||
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
|
||||
FLAC_FILE="$FLAC_DIR/$DIR/$BASENAME.flac"
|
||||
MP3_FILE="$MP3_DIR/$DIR/$BASENAME.mp3"
|
||||
echo "......HUH? already converted?"
|
||||
fi
|
||||
if [ ! -f "$FLAC_FILE" ]; then
|
||||
echo "...converting it to FLAC: $FLAC_FILE"
|
||||
flac -s -8 "$TEMP_OUTFILE" -o "$FLAC_FILE"
|
||||
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 "...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"
|
||||
echo "......HUH? already converted"
|
||||
fi
|
||||
fi
|
||||
rm -f "$TEMP_OUTFILE"
|
||||
done
|
||||
cd ..
|
||||
done
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue