[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