[SCM] calf/master: smoothing fixed in stereo

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:40:59 UTC 2013


The following commit has been merged in the master branch:
commit 8c9b3393c09dce259a96dddc19be0d465568f70e
Author: Christian Holschuh <chrisch.holli at gmx.de>
Date:   Tue Mar 6 07:22:37 2012 +0100

    smoothing fixed in stereo

diff --git a/src/modules.cpp b/src/modules.cpp
index 5ae81ac..a2e13aa 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -1001,6 +1001,7 @@ bool analyzer_audio_module::get_graph(int index, int subindex, float *data, int
     double freq;
     int iter = 0;
     int _iter = 1;
+    float posneg = 1;
     int _param_speed = 16 - (int)*params[param_analyzer_speed];
     if(subindex == 0) {
         if(!((int)____analyzer_phase_was_drawn_here % _param_speed)) {
@@ -1049,7 +1050,7 @@ bool analyzer_audio_module::get_graph(int index, int subindex, float *data, int
                 
                 // fill smoothing & falling buffer
                 if(*params[param_analyzer_smoothing] == 1.f)
-                    fft_smooth[i] = fabs(fft_out[i]);
+                    fft_smooth[i] = fft_out[i];
                 if(*params[param_analyzer_smoothing] == 0.f and fft_smooth[i] < fabs(fft_out[i])) {
                     fft_smooth[i] = fabs(fft_out[i]);
                 }
@@ -1063,7 +1064,7 @@ bool analyzer_audio_module::get_graph(int index, int subindex, float *data, int
                 if(____analyzer_hold_dirty) {
                     fft_hold[i] = 0.f;
                 } else if(fabs(fft_out[i]) > fft_hold[i]) {
-                    fft_hold[i] = fabs(fft_out[i]);
+                    fft_hold[i] = fft_out[i];
                 }
             }
             // run fft
@@ -1144,8 +1145,8 @@ bool analyzer_audio_module::get_graph(int index, int subindex, float *data, int
                         }
                         float diff_fft;
                         diff_fft = fabs(fft_outL[_iter]) - fabs(fft_outR[_iter]);
+                        posneg = fabs(diff_fft) / diff_fft;
                         fft_out[_iter] = diff_fft / _accuracy;
-                        //printf("fft_out[_iter]: %.4f\n",fft_out[_iter]);
                     break;
                  }
             }
@@ -1162,7 +1163,7 @@ bool analyzer_audio_module::get_graph(int index, int subindex, float *data, int
                 switch((int)*params[param_analyzer_smoothing]) {
                     case 0:
                         // falling
-                        fft_smooth[iter] += fft_delta[iter];
+                        fft_smooth[iter] -= fabs(fft_delta[iter]);
                         fft_delta[iter] /= 1.01f;
                         val = fft_smooth[iter];
                         break;
@@ -1170,7 +1171,7 @@ bool analyzer_audio_module::get_graph(int index, int subindex, float *data, int
                         // smoothing
                         if(____analyzer_smooth_dirty) {
                             // rebuild delta values
-                            fft_delta[iter] = (fabs(fft_out[iter]) - fft_smooth[iter]) / _param_speed;
+                            fft_delta[iter] = (posneg * fabs(fft_out[iter]) - fft_smooth[iter]) / _param_speed;
                         }
                         fft_smooth[iter] += fft_delta[iter];
                         val = fft_smooth[iter];
@@ -1186,7 +1187,7 @@ bool analyzer_audio_module::get_graph(int index, int subindex, float *data, int
             data[i] = dB_grid(fabs(val) / _accuracy * 2.f + 1e-20);
             if(*params[param_analyzer_mode] == 3) {
                 if(i) {
-                    data[i] = fft_out[iter];
+                    data[i] = val;
                 }
                 else data[i] = 0.f;
             } 

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list