ref: d53a3b571cd8b545b3bba1d08868f8522894484d
parent: adcf4056210cbddb6978f7aaad37d82e4e1b151e
author: Paul Brossier <piem@piem.org>
date: Mon Sep 21 14:15:05 EDT 2009
src/spectral/fft.c: fix horrible bug where norm[0] and norm[n/2+1] could be negative
--- a/src/spectral/fft.c
+++ b/src/spectral/fft.c
@@ -169,12 +169,13 @@
void aubio_fft_get_norm(fvec_t * compspec, cvec_t * spectrum) {
uint_t i, j = 0;
for (i = 0; i < spectrum->channels; i++) {
- spectrum->norm[i][0] = compspec->data[i][0];
+ spectrum->norm[i][0] = ABS(compspec->data[i][0]);
for (j=1; j < spectrum->length - 1; j++) {
spectrum->norm[i][j] = SQRT(SQR(compspec->data[i][j])
+ SQR(compspec->data[i][compspec->length - j]) );
}
- spectrum->norm[i][spectrum->length-1] = compspec->data[i][compspec->length/2];
+ spectrum->norm[i][spectrum->length-1] =
+ ABS(compspec->data[i][compspec->length/2]);
}
}