summaryrefslogtreecommitdiff
path: root/tests/test5/compute.c
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2012-06-08 22:49:38 +0000
committerLudovic Pouzenc <ludovic@pouzenc.fr>2012-06-08 22:49:38 +0000
commit22079050f23cd4e019fc7dc98c25d5e06b1f8ead (patch)
tree6352c24dcf0ed4e87172f880ee06e61fb4ef93d6 /tests/test5/compute.c
parent438cfc61ee3fae8875dbbf24a44fa7d75969f2b3 (diff)
download2012-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.c26
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);