From 18c2829a753fc36183391e46a776915bf0363b51 Mon Sep 17 00:00:00 2001 From: Rob Sykes Date: Wed, 19 Aug 2015 17:04:32 +0100 Subject: [PATCH] test script updates --- tests/eg-test | 18 ++++------ tests/io-test | 24 +++++++++++-- tests/phase-test | 37 ++++++++++++++++++++ tests/q-test | 87 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 151 insertions(+), 15 deletions(-) create mode 100755 tests/phase-test create mode 100755 tests/q-test diff --git a/tests/eg-test b/tests/eg-test index 3fa46fc..117e3dc 100755 --- a/tests/eg-test +++ b/tests/eg-test @@ -4,6 +4,10 @@ set -e # SoX Resampler Library Copyright (c) 2007-14 robs@users.sourceforge.net # Licence for this file: LGPL v2.1 See LICENCE for details. +# Exercise each example programme: + + + len=8 #vg="valgrind --leak-check=full --show-reachable=yes" @@ -32,19 +36,9 @@ rm *.f32 -# Check conversion between differing I/O types, but no rate-change: -for i in 1 2 3; do - prev="" - sox -n -c $i 0.f32 synth $len gain -.1 - ./3-options-input-fn 1 1 $i 0 2 < 0.f32 | ./3-options-input-fn 1 1 $i 2 0 > 1.f32 - cmp [01].f32 -done -rm *.f32 - - # Exercise VR making sure that varied internal stage reconfigurations occur: -rm -f ?.png +rm -f v?.png for n in 0 1 2 3; do - $vg ./5-variable-rate $n | sox -tf32 -r44100 -c1 - -n spectrogram -z130 -hwd -o $n.png -X 50 + $vg ./5-variable-rate $n | sox -tf32 -r44100 -c1 - -n spectrogram -z130 -hwd -o v$n.png -X 50 vg="" done diff --git a/tests/io-test b/tests/io-test index 537f896..36b244f 100755 --- a/tests/io-test +++ b/tests/io-test @@ -1,7 +1,13 @@ #!/bin/bash +set -e + # SoX Resampler Library Copyright (c) 2007-13 robs@users.sourceforge.net # Licence for this file: LGPL v2.1 See LICENCE for details. +# Tests IO + + + ir=96000 or=44100 len=16 @@ -13,13 +19,13 @@ types=(f32 f64 s32 s16) do_one() { $ex $ir $or $c $1 $2 $3 < $c.${types[$1]} | - sox -t ${types[$2]} -r $or -c $c - -n spectrogram -X50 -hwk -z180 -o io$n$c.png + sox -t ${types[$2]} -r $or -c $c - -n spectrogram -X50 -hwk -z180 -o io$c$n.png n=`expr $n + 1` } -rm io??.png +rm -f io??.png -j=2; test z$1 != z && j=$1 +j=3; test z$1 != z && j=$1 for c in `seq 1 $j`; do for n in `seq 0 3`; do @@ -38,3 +44,15 @@ for c in `seq 1 $j`; do done rm ?.[sf][0-9][0-9] + + + +# Check conversion between differing I/O types, but no rate-change: + +for i in 1 2 3; do + prev="" + sox -n -c $i 0.f32 synth $len gain -.1 + $ex 1 1 $i 0 2 < 0.f32 | $ex 1 1 $i 2 0 > 1.f32 + cmp [01].f32 +done +rm *.f32 diff --git a/tests/phase-test b/tests/phase-test new file mode 100755 index 0000000..622e6aa --- /dev/null +++ b/tests/phase-test @@ -0,0 +1,37 @@ +#!/bin/bash +set -e + +# SoX Resampler Library Copyright (c) 2007-14 robs@users.sourceforge.net +# Licence for this file: LGPL v2.1 See LICENCE for details. + +# Tests varying phase-response. + + + +rm -f ph-*.png +tool=./3-options-input-fn + +spec="spectrogram -z180 -Z-20 -wd -ho" +ext=f32; e=0 +rate1=48000 +rate2=44100 + +for n in 1 2; do + +sox -r $rate1 -n 0.$ext synth 1s sq pad .03 .03 gain -1 + +for q in `seq 0 7`; do + f=ph-$rate2-q$q + $tool $rate1 $rate2 1 $e $e $q'6' < 0.$ext | sox -c1 -r$rate2 -t $ext - -n $spec $f.png -X 2000 +done + +for q in `seq 0 10`; do + f=ph-$rate2-p`printf %02u $q` + $tool $rate1 $rate2 1 $e $e 46 0 0 0 $q'0' < 0.$ext | sox -c1 -r$rate2 -t $ext - -n $spec $f.png -X 2000 +done + +r=$rate1; rate1=$rate2; rate2=$r + +done + +rm 0.$ext diff --git a/tests/q-test b/tests/q-test new file mode 100755 index 0000000..aa9a00b --- /dev/null +++ b/tests/q-test @@ -0,0 +1,87 @@ +#!/bin/bash +set -e + +# SoX Resampler Library Copyright (c) 2007-14 robs@users.sourceforge.net +# Licence for this file: LGPL v2.1 See LICENCE for details. + +# Tests rate conversion time and generates spectrograms for qualities 0..7 & variable-rate. + + + +rm -f *.png *.wav +tool=./3-options-input-fn + +spec="spectrogram -z180 -Z-20 -wd -ho" +ext=f32; e=0 +ext=f64; e=1 +c=2 +q1=4; q2=4 +q1=0; q2=7 + +rates=48000 +rates="48000 77773 96000" + +for rate0 in $rates; do + +rate1=$rate0 +rate2=44100 + +for n in 1 2; do + +rate1n=`expr $rate1 / 2` + + + +# Measure time to convert a 5-minute file: + +#: << : +sox -r $rate1 -n -c $c 0.$ext synth 5: sin 0:$rate1n gain -1 + +for q in `seq $q1 $q2`; do + echo $rate1 '-->' $rate2 c=$c q=$q + time $tool $rate1 $rate2 $c $e $e $q < 0.$ext > /dev/null; +done +echo $rate1 '-->' $rate2 c=$c q=v +time $tool $rate1 $rate2 $c $e $e 4 20 < 0.$ext > /dev/null +: + + + +# Convert sweep, for spectrogram: + +sox -r $rate1 -n -c $c 0.$ext synth 8 sin 0:$rate1n gain -1 + +for q in `seq $q1 $q2`; do + f=$rate1-$rate2-a-$q + $tool $rate1 $rate2 $c $e $e $q 0 < 0.$ext | sox -c$c -r$rate2 -t $ext - -n $spec $f.png +done +f=$rate1-$rate2-a-v +$tool $rate1 $rate2 $c $e $e 4 20 < 0.$ext | sox -c$c -r$rate2 -t $ext - -n $spec $f.png + + + +# Convert impulse, for spectrogram: + +#: << : +sox -r $rate1 -n 0.$ext synth 1s sq pad .03 .03 gain -1 + +for q in `seq $q1 $q2`; do + f=$rate1-$rate2-b-$q + $tool $rate1 $rate2 1 $e $e $q 0 < 0.$ext | sox -c1 -r$rate2 -t $ext - $f.wav $spec $f.png -X 2000 +done +f=$rate1-$rate2-b-v +$tool $rate1 $rate2 1 $e $e 4 20 < 0.$ext | sox -c1 -r$rate2 -t $ext - $f.wav $spec $f.png -X 2000 + +# Combine impuse responses into multi-channel file (for inspection in Audacity): +sox -M $rate1-$rate2-b-?.wav $rate1-$rate2.wav + +rm $rate1-$rate2-b-?.wav +: + +rate1=44100 +rate2=$rate0 + +done +done + +rm 0.$ext