shithub: aubio

Download patch

ref: 04ebe31d4ec7fbc950c7fc57f0f8da559d0a616c
parent: 63520340a33fc38f966e6a3f39beb55ee4d3f0b7
author: Paul Brossier <piem@piem.org>
date: Fri Mar 10 19:20:39 EST 2017

src/spectral/awhitening.c: use 1.e-4 for floor, make sure we peak values stay above it

--- a/src/spectral/awhitening.c
+++ b/src/spectral/awhitening.c
@@ -24,8 +24,9 @@
 #include "mathutils.h"
 #include "spectral/awhitening.h"
 
-#define aubio_spectral_whitening_default_relax_time   30    // in seconds
+#define aubio_spectral_whitening_default_relax_time   250   // in seconds, between 22 and 446
 #define aubio_spectral_whitening_default_decay        0.001 // -60dB attenuation
+#define aubio_spectral_whitening_default_floor        1.e-4 // from 1.e-6 to .2
 
 /** structure to store object state */
 struct _aubio_spectral_whitening_t {
@@ -43,8 +44,8 @@
 {
   uint_t i = 0;
   for (i = 0; i < o->peak_values->length; i++) {
-    o->peak_values->data[i] =
-      MAX(fftgrain->norm[i], o->r_decay * o->peak_values->data[i]);
+    smpl_t tmp = MAX(o->r_decay * o->peak_values->data[i], o->floor);
+    o->peak_values->data[i] = MAX(fftgrain->norm[i], tmp);
     fftgrain->norm[i] /= o->peak_values->data[i];
   }
 }
@@ -67,7 +68,7 @@
   o->buf_size = buf_size;
   o->hop_size = hop_size;
   o->samplerate = samplerate;
-  o->floor = 1.e-6; // from 1.e-6 to 0.2
+  o->floor = aubio_spectral_whitening_default_floor;
   aubio_spectral_whitening_set_relax_time (o, aubio_spectral_whitening_default_relax_time);
   aubio_spectral_whitening_reset (o);
   return o;
--