view run-tests.sh @ 21:12a0c2e493c4

Two-stage decimate for factors not supported in a single stage
author Chris Cannam
date Fri, 18 Oct 2013 17:40:07 +0100
parents 7d4165ded830
children 83e285b97c01
line wrap: on
line source
#!/bin/bash

mydir="`dirname $0`"

# Our input sweep is at 96kHz, so these factors correspond to 48, 24,
# 12, 6, 3, and 1.5kHz.

factors="2 4 8 16 32 64"

original=96000

do_src() {
    factor="$1"
    infile="$2"
    outfile="$3"
    sndfile-resample -to "$(($original/$factor))" "$infile" "$outfile"
}

do_linear() {
    factor="$1"
    infile="$2"
    outfile="$3"
echo "factor is $factor"
    echo "running... sndfile-resample -to $(($original/$factor)) -c 4 $infile $outfile"
    sndfile-resample -to "$(($original/$factor))" -c 4 "$infile" "$outfile"
}

do_resample_hq() {
    factor="$1"
    infile="$2"
    outfile="$3"
    "$mydir/garage-resampler/resample" --snr 100 --bandwidth 0.02 --to "$(($original/$factor))" "$infile" "$outfile"
}

do_resample_mq() {
    factor="$1"
    infile="$2"
    outfile="$3"
    "$mydir/garage-resampler/resample" --snr 70 --bandwidth 0.03 --to "$(($original/$factor))" "$infile" "$outfile"
}

do_resample_lq() {
    factor="$1"
    infile="$2"
    outfile="$3"
    "$mydir/garage-resampler/resample" --snr 50 --bandwidth 0.05 --to "$(($original/$factor))" "$infile" "$outfile"
}

decimate_twice() {
    first="$1"
    second="$2"
    infile="$3"
    outfile="$4"
    "$mydir/qm-dsp-decimate/decimate" --by "$first" "$infile" "$outfile".tmp
    "$mydir/qm-dsp-decimate/decimate" --by "$second" "$outfile".tmp "$outfile"
    rm "$outfile".tmp
}    

do_decimate() {
    factor="$1"
    infile="$2"
    outfile="$3"
    case "$factor" in
	16) decimate_twice 4 4 "$infile" "$outfile";;
	32) decimate_twice 8 4 "$infile" "$outfile";;
	64) decimate_twice 8 8 "$infile" "$outfile";;
	*) "$mydir/qm-dsp-decimate/decimate" --by "$factor" "$infile" "$outfile";;
    esac
}

mkdir -p "$mydir"/out

for f in $factors; do
    for impl in linear decimate resample_hq resample_mq resample_lq src; do
	do_$impl "$f" "$mydir/infinitewave-testsignals/Swept_float.wav" "$mydir"/out/"$f"_"$impl".wav
    done
done