diff options
author | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2012-06-08 22:49:38 +0000 |
---|---|---|
committer | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2012-06-08 22:49:38 +0000 |
commit | 22079050f23cd4e019fc7dc98c25d5e06b1f8ead (patch) | |
tree | 6352c24dcf0ed4e87172f880ee06e61fb4ef93d6 /tests/test5/compute.c | |
parent | 438cfc61ee3fae8875dbbf24a44fa7d75969f2b3 (diff) | |
download | 2012-violon-leds-22079050f23cd4e019fc7dc98c25d5e06b1f8ead.tar.gz 2012-violon-leds-22079050f23cd4e019fc7dc98c25d5e06b1f8ead.tar.bz2 2012-violon-leds-22079050f23cd4e019fc7dc98c25d5e06b1f8ead.zip |
Bon, la détection de volume commence à ressembler à qque chose mais les valeurs semblent pas forcément bonnes. Le filtre A n'est pas appliqué encore.
Dans le test6, quelques essais de maths...
git-svn-id: file:///var/svn/2012-violon-leds/trunk@14 6be1fa4d-33ac-4c33-becc-79fcb3794bb6
Diffstat (limited to 'tests/test5/compute.c')
-rw-r--r-- | tests/test5/compute.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/tests/test5/compute.c b/tests/test5/compute.c index 2658904..3a94efe 100644 --- a/tests/test5/compute.c +++ b/tests/test5/compute.c @@ -9,7 +9,7 @@ gfloat compute_level(const float *data, size_t nsamples, size_t nchan) { double rate=44100; //TODO dynamique size_t i; - float input[MAX_SAMPLES], output[MAX_SAMPLES]; + float input[MAX_SAMPLES], output[128]; float level; if (nsamples >= MAX_SAMPLES) { @@ -33,25 +33,23 @@ gfloat compute_level(const float *data, size_t nsamples, size_t nchan) { // printf("\n"); compute_spectrom(input, nsamples, rate, output); - - level=0; - for (i=0;i<nsamples;i++) { + level=0.f; + for (i=1;i<128;i++) { level+=output[i]; - //printf("\r%f ", output[i]); - //fflush(stdout); } - //printf("\n"); - - return level/nsamples; + level/=127.f; + //printf("%f\n", level); + return level; } // From Audacity void compute_spectrom(float * data, int width, double rate, float *output) { int i; - float processed[256]={ 0.0f }; - float in[256]; - float out[256]; + float processed[256]={0.0f}; +//TODO : remove init here + float in[256]={0.0f}; + float out[256]={0.0f}; int start = 0; int windows = 0; @@ -62,7 +60,6 @@ void compute_spectrom(float * data, int width, double rate, float *output) { // Hanning for (i=0; i<256; i++) in[i] *= 0.50 - 0.50 * cos(2 * M_PI * i / (256 - 1)); - break; PowerSpectrum(in, out); @@ -111,7 +108,8 @@ void PowerSpectrum(float *In, float *Out) for (i = 0; i < 128; i++) { tmpReal[i] = In[2 * i]; - tmpImag[i] = In[2 * i + 1]; + tmpImag[i] = In[2 * i + 1]; //FIXME : WTFFFF ? + tmpImag[i]=0; } FFT(128, 0, tmpReal, tmpImag, RealOut, ImagOut); |