Oona Räisänen 2016-01-11 10:53:22 +02:00
rodzic eef0e19a5d
commit e46cd31e7a
1 zmienionych plików z 12 dodań i 10 usunięć

Wyświetl plik

@ -1,6 +1,9 @@
#include "common.h"
#include "dsp.h"
#include <map>
#include <cmath>
void printWave (Wave wave, double dt) {
for (int i=0;i<(int)wave.size();i++)
printf("%lf,%lf\n",i*dt,wave[i]);
@ -21,27 +24,27 @@ double sdev (std::vector<double> nums) {
double result = 0;
double _mean = mean(nums);
for (double d : nums)
result += pow(d - _mean, 2);
result = sqrt(result / nums.size());
result += std::pow(d - _mean, 2);
result = std::sqrt(result / nums.size());
return result;
}
void runTest(const char *sweepsound) {
DSPworker dsp;
DSP dsp;
double tone_len = 0.3;
dsp.openAudioFile(sweepsound);
dsp.getInput()->openAudioFile(sweepsound);
std::map<double, std::vector<double> > errors;
while(dsp.is_open()) {
double f = dsp.peakFreq(1200,2500,WINDOW_HANN63);
double lum_should_be = int(dsp.get_t()/tone_len) % 256;
while(dsp.getInput()->isOpen()) {
double f = dsp.calcPeakFreq(1200,2500,WINDOW_HANN63);
double lum_should_be = int(dsp.getInput()->get_t()/tone_len) % 256;
double f_should_be = 1500 + lum_should_be / 255.0 * (2300-1500);
//printf("f should be %.0f, is %.0f (error %.1f)\n",f_should_be,f,f - f_should_be);
printf("at t=%f, f should be %.0f, is %.0f (error %.1f)\n",dsp.getInput()->get_t(),f_should_be,f,f - f_should_be);
errors[f_should_be].push_back((f - f_should_be) );
dsp.forward();
dsp.getInput()->forward();
}
typedef std::map<double, std::vector<double> >::iterator it_type;
@ -51,4 +54,3 @@ void runTest(const char *sweepsound) {
printf("%f,%f\n",k,sdev(errs));
}
}