Mercurial > hg > constant-q-cpp
view yeti/test.yeti @ 66:3d165bf186f1
Add little program to plot cq of an audio file
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Fri, 14 Feb 2014 14:24:37 +0000 |
parents | bb1799a6d690 |
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]); */ //()