[SCM] calf/master: smoothing finally working! yaymake -j8 && sudo make install && calfjackhost analyzer

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:41:08 UTC 2013


The following commit has been merged in the master branch:
commit 0361cfc76445717ab378ff8f66077df8852b83b8
Author: Markus Schmidt <schmidt at boomshop.net>
Date:   Tue Sep 4 05:29:13 2012 +0200

    smoothing finally working! yaymake -j8 && sudo make install && calfjackhost analyzer

diff --git a/src/custom_ctl.cpp b/src/custom_ctl.cpp
index 02e6471..94ca43f 100644
--- a/src/custom_ctl.cpp
+++ b/src/custom_ctl.cpp
@@ -84,7 +84,6 @@ calf_line_graph_draw_graph( cairo_t *c, float *data, int sx, int sy, int mode =
     int y;
     for (int i = 0; i < sx; i++)
     {
-        printf("%.5f\n", data[i]);
         y = (int)(oy + sy / 2 - (sy / 2 - 1) * data[i]);
         switch(mode) {
             case 0:
diff --git a/src/modules.cpp b/src/modules.cpp
index 53837b8..f9bc3b6 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -1283,63 +1283,46 @@ bool analyzer_audio_module::get_graph(int index, int subindex, float *data, int
             // smooting and fill delta buffers if fft
             // was done above
             // #######################################
+            // the shit that follows is calculated by chrischi and seems kind of
+            // rocket science if I take a closer look on his sheets. so if any
+            // questions: chrisch.holli at gmx.de ,)
             if(subindex == 0) {
-                switch(_param_smooth) {
-                    default:
-                    case 0:
-                        // off
-                        break;
-                    case 1:
-                        // falling
-                        if(fftdone) {
-                            // rebuild delta values after fft was done
-                            if(fft_smoothL[iter] > fft_outL[iter]) {
-                                // we have to rise with smoothing
-                                
-                            } else {
-                                // we have to fall with log rate
-                                fft_deltaL[iter] = fft_smoothL[iter] / sqrt(_param_speed) / -8.f;
-                            }
-                            if(fft_smoothR[iter] > fft_outR[iter]) {
-                                // we have to rise with smoothing
-                                
-                            } else {
-                                // we have to fall with log rate
-                                fft_deltaR[iter] = fft_smoothR[iter] / sqrt(_param_speed) / -8.f;
-                            }
-                        }
-                        
-                        if(fft_smoothL[iter] > fft_outL[iter]) {
-                            // we are rising with smoothing
-                            fft_smoothL[iter] -= fabs(fft_deltaL[iter]);
-                            fft_deltaL[iter] /= 1.01f;
+                float _frate = 0.1;
+                // ############################################################################################################################################
+                if(_param_smooth == 1 and fabs(fft_smoothL[iter]) - fabs(fft_outL[iter]) > _frate * _param_speed) {
+                    // falling
+                    if(fftdone) {
+                        // rebuild delta values after fft was done
+                        fft_deltaL[iter] = pow(fabs(fft_outL[iter]) / (fabs(fft_outL[iter]) - _frate * _param_speed), 1.f / _param_speed);
+                        fft_deltaR[iter] = pow(fabs(fft_outR[iter]) / (fabs(fft_outL[iter]) - _frate * _param_speed), 1.f / _param_speed);
+                    } else {
+                        // change fft_smooth according to delta
+                        fft_smoothL[iter] *= fft_deltaL[iter];
+                        fft_smoothR[iter] *= fft_deltaR[iter];
+                    }
+                } else if(_param_smooth >= 1) {
+                    // smoothing
+                    if(fftdone) {
+                        // rebuild delta values after fft was done
+                        if(_param_mode < 5) {
+                            fft_deltaL[iter] = pow(fabs(fft_outL[iter]) / fabs(fft_smoothL[iter]), 1.f / _param_speed);
+                            fft_deltaR[iter] = pow(fabs(fft_outR[iter]) / fabs(fft_smoothR[iter]), 1.f / _param_speed);
                         } else {
-                            // we are falling at log rate
-                            fft_smoothL[iter] += fft_deltaL[iter];
+                            fft_deltaL[iter] = (posneg * fabs(fft_outL[iter]) - fft_smoothL[iter]) / _param_speed;
+                            fft_deltaR[iter] = (posneg * fabs(fft_outR[iter]) - fft_smoothR[iter]) / _param_speed;
                         }
-                        if(fft_smoothR[iter] > fft_outR[iter]) {
-                            // we are rising with smoothing
-                            fft_smoothR[iter] -= fabs(fft_deltaR[iter]);
-                            fft_deltaR[iter] /= 1.01f;
+                    } else {
+                        // change fft_smooth according to delta
+                        if(_param_mode < 5) {
+                            fft_smoothL[iter] *= fft_deltaL[iter];
+                            fft_smoothR[iter] *= fft_deltaR[iter];
                         } else {
-                            // we are falling at log rate
+                            fft_smoothL[iter] += fft_deltaL[iter];
                             fft_smoothR[iter] += fft_deltaR[iter];
                         }
-                        break;
-                    case 2:
-                        // smoothing
-                        if(fftdone) {
-                            // rebuild delta values after fft was done
-                            fft_deltaL[iter] = (posneg * fabs(fft_outL[iter]) - fft_smoothL[iter]) / _param_speed;
-                            fft_deltaR[iter] = (posneg * fabs(fft_outR[iter]) - fft_smoothR[iter]) / _param_speed;
-                        }
-                        
-                        fft_smoothL[iter] += fft_deltaL[iter];
-                        fft_smoothR[iter] += fft_deltaR[iter];
-                        break;
+                    }
                 }
             }
-            
             // #######################################
             // Choose the L and R value from the right
             // buffer according to view settings

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list