view tests/test-transforms-basic/test-transforms-basic.sh @ 269:39fb206b1153 piper-nopiper

Filter out Xing/LAME info frames, rather than letting them go to the mp3 decoder as if they were audio frames. Fixes the 1152-sample zero pad at start of some decoded mp3 files (distinct from decoder delay). The logic here is based on the madplay code.
author Chris Cannam
date Thu, 24 Nov 2016 13:32:04 +0000
parents 5200446bbc6b
children
line wrap: on
line source
#!/bin/bash

. ../include.sh

infile=$audiopath/3clicks8.wav
tmpfile1=$mypath/tmp_1_$$
tmpfile2=$mypath/tmp_2_$$

trap "rm -f $tmpfile1 $tmpfile2" 0

$r --skeleton $percplug > $tmpfile1 2>/dev/null || \
    fail "Fails to run with --skeleton $percplug"

$r -t $tmpfile1 -w csv --csv-stdout $infile > $tmpfile2 2>/dev/null || \
    fail "Fails to run with -t $tmpfile1 -w csv --csv-stdout $infile"

csvcompare $tmpfile2 $mypath/expected/skeleton-1.csv || \
    faildiff "Output mismatch for skeleton-1.csv" $tmpfile2 $mypath/expected/skeleton-1.csv

for suffix in \
    -no-parameters-default-output \
    -no-parameters \
    "" \
    -start-and-duration \
    -set-parameters \
    -set-step-and-block-size \
    -set-sample-rate \
    -df-windowtype-default \
    -df-windowtype-hanning \
    -df-windowtype-hamming \
    -df-start-and-duration \
    -multiple-outputs \
    -multiple-outputs-start-and-duration \
    ; do

    for type in xml n3 ; do 

	transform=$mypath/transforms/percussiononsets$suffix.$type
	expected=$mypath/expected/percussiononsets$suffix.csv

	if [ ! -f $transform ]; then
	    if [ $type = "xml" ]; then
		continue # not everything can be expressed in the XML
			 # format, e.g. the multiple output test can't
	    fi
	fi

	test -f $transform || \
	    fail "Internal error: no transforms file for suffix $suffix (looking for $transform)"

	test -f $expected || \
	    fail "Internal error: no expected output file for suffix $suffix (looking for $expected)"

	$r -t $transform -w csv --csv-stdout $infile > $tmpfile2 2>/dev/null || \
	    fail "Fails to run transform $transform"

	csvcompare $tmpfile2 $expected || \
	    faildiff "Output mismatch for transform $transform" $tmpfile2 $expected
    done
done

# Check we can't run with multiple transforms if one or more is missing!

$r -t $mypath/transforms/percussiononsets-set-step-and-block-size.n3 \
   -t $mypath/transforms/squiggly.n3 \
   -t $mypath/transforms/percussiononsets-start-and-duration.n3 \
    -w csv --csv-stdout $infile > $tmpfile2 2>/dev/null && \
    fail "Incorrectly seems to succeed in running with a missing transform file"


# Check we can run with multiple transforms if they're all present

$r -t $mypath/transforms/percussiononsets-set-step-and-block-size.n3 \
   -t $mypath/transforms/percussiononsets-set-parameters.xml \
   -t $mypath/transforms/percussiononsets-start-and-duration.n3 \
    -w csv --csv-stdout $infile > $tmpfile2 2>/dev/null || \
    fail "Fails to run with multiple transforms"

csvcompare $tmpfile2 $mypath/expected/multiple.csv || \
    faildiff "Output mismatch for multiple transforms" $tmpfile2 $mypath/expected/multiple.csv

exit 0