1#!/usr/bin/env bash 2set -e 3 4# SoX Resampler Library Copyright (c) 2007-16 robs@users.sourceforge.net 5# Licence for this file: LGPL v2.1 See LICENCE for details. 6 7# Tests IO 8 9 10 11ir=65537 12or=44100 13len=16 14f=1/32768 15g=32768:0 16tool=./3-options-input-fn 17w=$(echo -e "`sox --ver |sed 's/.*SoX v//'` d\n14.4.1 k"|sort -Vr|head -1|sed 's/.* //') 18 19types=(f32 f64 s32 s16) 20 21zs=(180 180 180 180 180 120 120 120 120) 22 23do_one() { 24 it=${types[$1]}; ot=${types[`expr $2 % 4 || true`]} 25 $tool $ir $or $c $1 $2 $3 < $c.$it > a.$ot 26 sox -r $or -c $c a.$ot -n spectrogram -X50 -hw$w -z${zs[$n]} -o io$c$n-$w.png -c "io-test i:$it o:$ot ($2) q:$3" 27 ./4-split-channels $ir $or $c $1 $2 $3 < $c.$it > b.$ot 28 [ $2 != 3 ] && cmp a.$ot b.$ot || 29 test $(sox -mv-1 -r$or -c$c a.$ot -r$or -c$c b.$ot -n stats 2>&1 |grep Pk\ l|tr ' ' '\n'|grep '[0-9]'|uniq) = -84.29 30 rm [ab].$ot 31 n=`expr $n + 1` 32} 33 34test z$1 != z && j=$1 || j=1 35 36for c in `seq 1 $j`; do 37 for n in `seq 0 3`; do 38 sox -R -r $ir -n $c.${types[$n]} synth $len sin $f gain -.1 39 done 40 41 n=0 42 do_one 1 2 5 43 do_one 2 0 5 44 for m in `seq 0 3`; do do_one $m $m 5; done 45 do_one 3 2 3 46 do_one 0 3 3 47 do_one 0 11 3 48 49 f="$f sin $g" 50 g=0+32768 51done 52 53rm ?.[sf][0-9][0-9] 54 55 56 57# Check conversion between differing I/O types, but no rate-change: 58 59for i in 1 2 3; do 60 prev="" 61 sox -n -c $i 0.f32 synth $len gain -.1 62 $tool 1 1 $i 0 2 < 0.f32 | $tool 1 1 $i 2 0 > 1.f32 63 cmp [01].f32 64done 65rm *.f32 66