view yeti/test.yeti @ 68:b75c0eaaa6dd

Allow wrong max in alternate columns where expected max would be in lower octave (which is not present)
author Chris Cannam <c.cannam@qmul.ac.uk>
date Mon, 03 Mar 2014 08:32:45 +0000
parents 3d165bf186f1
children 27007f8302f4
line wrap: on
line source

program test;

{ runTests } = load may.test;

// We want to test:
// 
// Kernel design -- check size (number of bins, number of atoms);
// check an example kernel against known data
//
// Time alignment -- feed a dirac train, check that peaks in all bins
// align
//
// Frequency discrimination -- feed a sinusoid, check peaks
//
// Latency compensation -- for dirac at 0, check peak can be found at
// 0 plus the declared latency
//
// Signal-noise ratio
//
// Specimen output for simple test case

tests = [
"kernel"    : load test_cqtkernel,
"frequency" : load test_frequency,
];

bad = sum (mapHash do name testHash: runTests name testHash done tests);

if (bad > 0) then
    println "\n** \(bad) test(s) failed!";
    threadExit 1
else
    ()
fi




/*
//testStream = manipulate.withDuration 96000 (syn.sinusoid 48000 500);
//testStream = manipulate.withDuration 96000 (syn.pulseTrain 48000 4);
testStream = af.open "sweep-48000.wav";
//testStream = af.open "sweep.wav";

// So the stream is [ 0, 1, 0, -1, 0, 1, 0, -1, ... ] :
//testStream = manipulate.withDuration 64 (syn.sinusoid 8 2);

testStream = manipulate.withDuration 32 (syn.pulseTrain 8 0.001);

eprintln "have test stream";

cq = cqt { maxFreq = testStream.sampleRate/2, minFreq = 50, binsPerOctave = 24 } testStream;

eprintln "bin frequencies: \(cq.kernel.binFrequencies)";

bigM = mat.concatHorizontal (map cm.magnitudes cq.output);

eprintln "overall output size = \(mat.size bigM)";

mat.print bigM;

//\() (plot.plot [Contour bigM]);
\() (plot.plot [Grid bigM]);
*/
//()