Mercurial > hg > constant-q-cpp
view yeti/test.yeti @ 65:bb1799a6d690
Pull out tests
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Fri, 14 Feb 2014 11:55:03 +0000 |
parents | 5b6c000589a7 |
children | 3d165bf186f1 |
line wrap: on
line source
program test; /* af = load may.stream.audiofile; plot = load may.plot; cm = load may.matrix.complex; mat = load may.matrix; vec = load may.vector; win = load may.signal.window; mm = load may.mathmisc; manipulate = load may.stream.manipulate; syn = load may.stream.syntheticstream; */ { runTests } = load may.test; //{ makeKernel } = load cqtkernel; //{ cqt } = load cqt; // 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]); */ //()