rework test scripts

master
Rob Sykes 2015-09-05 16:36:06 +01:00
parent a0ff383692
commit ba8d717a37
9 changed files with 126 additions and 89 deletions

View File

@ -22,14 +22,15 @@ rate1n=`expr $rate1 / 2`
#sox -r $rate1 -n 0.$ext synth 1s sq pad .03 .03 gain -1
sox -r $rate1 -n 0.$ext synth 8 sin 0:$rate1n gain -1
for q in `seq 79 5 99`; do
f=bw1-$rate2-p`printf %02u $q`
$tool $rate1 $rate2 1 $e $e 4 0 $q < 0.$ext | sox -c1 -r$rate2 -t $ext - -n $spec $f.png
for pass in `seq 79 5 99`; do
f=bw1-$rate2-p`printf %02u $pass`
$tool $rate1 $rate2 1 $e $e 4 0 $pass < 0.$ext | sox -c1 -r$rate2 -t $ext - -n $spec $f.png -c "bw-test pass:$pass stop:100"
done
for q in `seq 79 5 99`; do
f=bw2-$rate2-p`printf %02u $q`
$tool $rate1 $rate2 1 $e $e 4 0 $q `expr 200 - $q` < 0.$ext | sox -c1 -r$rate2 -t $ext - -n $spec $f.png
for pass in `seq 79 5 99`; do
f=bw2-$rate2-p`printf %02u $pass`
stop=`expr 200 - $pass`
$tool $rate1 $rate2 1 $e $e 4 0 $pass $stop < 0.$ext | sox -c1 -r$rate2 -t $ext - -n $spec $f.png -c "bw-test pass:$pass stop:$stop"
done
r=$rate1; rate1=$rate2; rate2=$r

View File

@ -37,7 +37,11 @@ rm *.f32
# Exercise VR making sure that varied internal stage reconfigurations occur:
variations=(slow-sweep fast-changing)
signals=(sine-wave saw-tooth-wave)
for n in 0 1 2 3; do
$vg ./5-variable-rate $n | sox -tf32 -r44100 -c1 - -n spectrogram -z130 -hwd -o v$n.png -X 50
signal=${signals[`expr $n % 2 || true`]}
variation=${variations[`expr $n / 2 || true`]}
$vg ./5-variable-rate $n | sox -tf32 -r44100 -c1 - -n spectrogram -z130 -hwd -o v$n.png -X 50 -c "variation:$variation signal:$signal"
vg=""
done

View File

@ -8,20 +8,20 @@ set -e
ir=96000
ir=65537
or=44100
len=16
f=0+48k
g=48k+0
ex=./3-options-input-fn
f=1/32768
g=32768:0
tool=./3-options-input-fn
types=(f32 f64 s32 s16)
zs=(160 160 160 120 180 180 120 120)
zs=(180 180 180 180 180 120 120 120 120)
do_one() {
$ex $ir $or $c $1 $2 $3 < $c.${types[$1]} |
sox -t ${types[$2]} -r $or -c $c - -n spectrogram -X50 -hwk -z${zs[$n]} -o io$c$n.png
$tool $ir $or $c $1 $2 $3 < $c.${types[$1]} |
sox -t ${types[`expr $2 % 4`]} -r $or -c $c - -n spectrogram -X50 -hwk -z${zs[$n]} -o io$c$n.png -c "io-test i:${types[$1]} o:${types[`expr $2 % 4`]} ($2) q:$3"
n=`expr $n + 1`
}
@ -33,14 +33,15 @@ for c in `seq 1 $j`; do
done
n=0
for m in `seq 0 3`; do do_one $m $m 4; done
do_one 1 2 5
do_one 2 0 5
do_one 3 2 4
do_one 0 3 4
for m in `seq 0 3`; do do_one $m $m 5; done
do_one 3 2 3
do_one 0 3 3
do_one 0 11 3
f="$f sin $g"
g=48k:0
g=0+32768
done
rm ?.[sf][0-9][0-9]
@ -52,7 +53,7 @@ rm ?.[sf][0-9][0-9]
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
$tool 1 1 $i 0 2 < 0.f32 | $tool 1 1 $i 2 0 > 1.f32
cmp [01].f32
done
rm *.f32

View File

@ -1,22 +0,0 @@
#!/bin/sh
# SoX Resampler Library Copyright (c) 2007-13 robs@users.sourceforge.net
# Licence for this file: LGPL v2.1 See LICENCE for details.
# Warning: the intermediate signal (piped) is 3.2 Gbytes so may slug the
# system somewhat.
ex=../examples/3-options-input-fn
q=6
r=1e5
rm lr.png
../tests/vector-gen 1000 0 8 500 .9375 1.s32
$ex 1 $r 1 2 1 $q < 1.s32 | $ex $r 1 1 1 2 $q > 2.s32
sox -M -r 1k 1.s32 -r 1k 2.s32 -n spectrogram -hwk -z180 -o lr.png
display lr.png &
rm [12].s32

View File

@ -0,0 +1,23 @@
#!/bin/bash
set -e
# SoX Resampler Library Copyright (c) 2007-15 robs@users.sourceforge.net
# Licence for this file: LGPL v2.1 See LICENCE for details.
# Tests interpolating then decimating be the same, large ratio.
tool=../examples/3-options-input-fn
q=6
ratio=2e4
srate=8000
nrate=`expr $srate / 2`
rm -f lr.png
../tests/vector-gen $srate 0 8 $nrate .9375 1.s32
$tool 1 $ratio 1 2 1 $q < 1.s32 | $tool $ratio 1 1 1 2 $q > 2.s32
sox -M -r $srate -c1 1.s32 -r $srate -c1 2.s32 -n spectrogram -hwd -Z-10 -z180 -o lr.png -c "large-ratio-test q:$q ratio:$ratio"
rm [12].s32

View File

@ -6,31 +6,33 @@ set -e
# Tests varying phase-response.
tool=./3-options-input-fn
spec="spectrogram -z160 -Z-20 -wd -ho"
spec="spectrogram -z160 -Z-20 -X 2000 -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
sox -r $rate1 -n 0.$ext synth 1s sq pad .03 .03 gain -1
# Test the following combinations:
names=(linear-phase intermediate-phase maximum-phase minimum-phase)
filters=(standard-filter steep-filter)
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 7`; do
f=ph-$rate2-q$q
name=${names[`expr $q % 4 || true`]}
filter=${filters[`expr $q / 4 || true`]}
$tool $rate1 $rate2 1 $e $e $q'6' < 0.$ext | sox -c1 -r$rate2 -t $ext - -n $spec $f.png -c "ph-test $filter $name"
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
# Test specific phase-response percentages:
for q in `seq 0 20 100`; do
f=ph-$rate2-p`printf %03u $q`
$tool $rate1 $rate2 1 $e $e 46 0 0 0 $q < 0.$ext | sox -c1 -r$rate2 -t $ext - -n $spec $f.png -c "ph-test phase:${q}%"
done
r=$rate1; rate1=$rate2; rate2=$r
done
rm 0.$ext

View File

@ -4,24 +4,19 @@ set -e
# SoX Resampler Library Copyright (c) 2007-15 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.
# Tests conversion qualities 0..7 & variable-rate.
tool=./3-options-input-fn
ext=f64; e=1
c=1
q1=0; q2=7
rates=48000
rates="48000 77773 96000"
z=(50 87 87 87 111 135 159 180 95)
zs=(50 87 87 87 111 135 159 180 95)
zz() {
echo "spectrogram -z${z[$1]} -Z-30 -wd -ho"
echo "spectrogram -z${zs[$1]} -Z-30 -wd -ho"
}
for rate0 in $rates; do
@ -35,32 +30,17 @@ 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=q$rate1-$rate2-a-$q
$tool $rate1 $rate2 $c $e $e $q 0 < 0.$ext | sox -c$c -r$rate2 -t $ext - -n $(zz $q) $f.png
f=qa-$rate1-$rate2-$q
$tool $rate1 $rate2 $c $e $e $q 0 < 0.$ext | sox -c$c -r$rate2 -t $ext - -n $(zz $q) $f.png -c $f
done
q=8
f=q$rate1-$rate2-a-v
$tool $rate1 $rate2 $c $e $e 4 20 < 0.$ext | sox -c$c -r$rate2 -t $ext - -n $(zz $q) $f.png
f=qa-$rate1-$rate2-v
$tool $rate1 $rate2 $c $e $e 4 20 < 0.$ext | sox -c$c -r$rate2 -t $ext - -n $(zz $q) $f.png -c $f
@ -70,17 +50,17 @@ $tool $rate1 $rate2 $c $e $e 4 20 < 0.$ext | sox -c$c -r$rate2 -t $ext - -n $(zz
sox -r $rate1 -n 0.$ext synth 1s sq pad .03 .03 gain -1
for q in `seq $q1 $q2`; do
f=q$rate1-$rate2-b-$q
$tool $rate1 $rate2 1 $e $e $q 0 < 0.$ext | sox -c1 -r$rate2 -t $ext - $f.wav $(zz $q) $f.png -X 2000
f=qb-$rate1-$rate2-$q
$tool $rate1 $rate2 1 $e $e $q 0 < 0.$ext | sox -c1 -r$rate2 -t $ext - $f.wav
done
q=8
f=q$rate1-$rate2-b-v
$tool $rate1 $rate2 1 $e $e 4 20 < 0.$ext | sox -c1 -r$rate2 -t $ext - $f.wav $(zz $q) $f.png -X 2000
f=qb-$rate1-$rate2-v
$tool $rate1 $rate2 1 $e $e 4 20 < 0.$ext | sox -c1 -r$rate2 -t $ext - $f.wav
# Combine impuse responses into multi-channel file (for inspection in Audacity):
sox -M q$rate1-$rate2-b-?.wav q$rate1-$rate2.wav
sox -M qb-$rate1-$rate2-?.wav q$rate1-$rate2.wav
rm q$rate1-$rate2-b-?.wav
rm qb-$rate1-$rate2-?.wav
:
rate1=44100

13
tests/scripts 100755
View File

@ -0,0 +1,13 @@
#!/bin/bash
set -e
# SoX Resampler Library Copyright (c) 2007-15 robs@users.sourceforge.net
# Licence for this file: LGPL v2.1 See LICENCE for details.
../../tests/bandwidth-test
../../tests/eg-test
../../tests/io-test
../../tests/large-ratio-test
../../tests/phase-test
../../tests/q-test
../../tests/time-test

35
tests/time-test 100755
View File

@ -0,0 +1,35 @@
#!/bin/bash
set -e
# SoX Resampler Library Copyright (c) 2007-15 robs@users.sourceforge.net
# Licence for this file: LGPL v2.1 See LICENCE for details.
# Tests rate conversion time for qualities 0..7 & variable-rate.
tool=./3-options-input-fn
ext=f32; e=0
c=2
q1=0; q2=7
rates="48000 77773 96000"
for rate0 in $rates; do
rate1=$rate0
rate2=44100
for n in 1 2; do
rate1n=`expr $rate1 / 2`
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
rate1=44100
rate2=$rate0
done
done
rm 0.$ext