1#!/bin/sh
2
3# Sample rate conversion tests.  Create a 20s sweep at the input sampling rate,
4# then use each resampler to convert it to the output rate.  Display the results
5# in a PNG file for each conversion.
6
7# Set up the following two before running the script:
8SOX=./sox                        # The actual sox executable
9SSRC_PATH=/usr/local/bin         # Path to the two ssrc executables
10
11RANGE=180
12
13# Temporary files
14BASE=`basename $0`
15IN=/tmp/$BASE-in-$$.wav
16OUT=/tmp/$BASE-out-$$.wav
17TIME=/tmp/$BASE-time-$$.wav
18
19test_converters () {
20  # Create input file
21  max=`expr $1 / 2`
22  $SOX -r $1 -n -twavpcm $IN synth 20 sin 0:$max sin $max:0 gain -2
23  for src in \
24      "rate -h" \
25      "rate -v" \
26      "ssrc" \
27      "ssrc_hp" \
28      ; do
29    echo $src
30    case "$src" in
31      ssrc*) time -f %U -o $TIME $SSRC_PATH/$src --quiet --rate $2 $IN $OUT;;
32      *)     time -f %U -o $TIME $SOX $IN -r $2 $OUT $src;;
33    esac
34    t=`cat $TIME`
35    $SOX $OUT -n spectrogram \
36      -X 30 -z $RANGE -w kaiser \
37      -t "$1->$2: $src" -c "${t}s user time" \
38      -o "$1_$2_`echo $src | tr ' ' '_'`.png"
39  done
40
41  rm -f $IN $OUT $TIME # Clean up
42}
43
44test_converters 11025 48000
45test_converters 22000 96100
46test_converters 44100 96000
47test_converters 96000 44100
48test_converters 96000 8000 # rabbit 0.1.3 hangs, 0.1.4 is okay
49