shithub: aubio

Download patch

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]);
   }
 }