#!/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