#!/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 and generates spectrograms for # 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) zz() { echo "spectrogram -z${z[$1]} -Z-30 -wd -ho" } 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=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 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 # 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=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 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 # Combine impuse responses into multi-channel file (for inspection in Audacity): sox -M q$rate1-$rate2-b-?.wav q$rate1-$rate2.wav rm q$rate1-$rate2-b-?.wav : rate1=44100 rate2=$rate0 done done rm 0.$ext