summaryrefslogtreecommitdiff
path: root/libs/ardour/kmeterdsp.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-02-28 20:56:23 +0100
committerRobin Gareus <robin@gareus.org>2019-02-28 20:56:23 +0100
commit959947e7f84aa2af5821d31044e527554165d659 (patch)
treed6b9b5d8356b5ddd0c6c30fb7e20e42bbed0fdda /libs/ardour/kmeterdsp.cc
parent9131cd17a02eb8721b75cbf57305f3d25f589982 (diff)
NO-OP: whitespace (remove vi modelines)
Diffstat (limited to 'libs/ardour/kmeterdsp.cc')
-rw-r--r--libs/ardour/kmeterdsp.cc137
1 files changed, 63 insertions, 74 deletions
diff --git a/libs/ardour/kmeterdsp.cc b/libs/ardour/kmeterdsp.cc
index add026797d..5b5331660e 100644
--- a/libs/ardour/kmeterdsp.cc
+++ b/libs/ardour/kmeterdsp.cc
@@ -20,93 +20,82 @@
#include <math.h>
#include "ardour/kmeterdsp.h"
-
float Kmeterdsp::_omega;
+Kmeterdsp::Kmeterdsp (void)
+ : _z1 (0)
+ , _z2 (0)
+ , _rms (0)
+ , _flag (false)
+{}
-Kmeterdsp::Kmeterdsp (void) :
- _z1 (0),
- _z2 (0),
- _rms (0),
- _flag (false)
-{
-}
-
-
-Kmeterdsp::~Kmeterdsp (void)
-{
-}
+Kmeterdsp::~Kmeterdsp (void) {}
-void Kmeterdsp::init (int fsamp)
+void
+Kmeterdsp::init (int fsamp)
{
- _omega = 9.72f / fsamp; // ballistic filter coefficient
+ _omega = 9.72f / fsamp; // ballistic filter coefficient
}
-void Kmeterdsp::process (float const *p, int n)
+void
+Kmeterdsp::process (float const* p, int n)
{
- // Called by JACK's process callback.
- //
- // p : pointer to sample buffer
- // n : number of samples to process
-
- float s, z1, z2;
-
- // Get filter state.
- z1 = _z1 > 50 ? 50 : (_z1 < 0 ? 0 : _z1);
- z2 = _z2 > 50 ? 50 : (_z2 < 0 ? 0 : _z2);
-
- // Perform filtering. The second filter is evaluated
- // only every 4th sample - this is just an optimisation.
- n /= 4; // Loop is unrolled by 4.
- while (n--)
- {
- s = *p++;
- s *= s;
- z1 += _omega * (s - z1); // Update first filter.
- s = *p++;
- s *= s;
- z1 += _omega * (s - z1); // Update first filter.
- s = *p++;
- s *= s;
- z1 += _omega * (s - z1); // Update first filter.
- s = *p++;
- s *= s;
- z1 += _omega * (s - z1); // Update first filter.
- z2 += 4 * _omega * (z1 - z2); // Update second filter.
- }
-
- if (isnan(z1)) z1 = 0;
- if (isnan(z2)) z2 = 0;
- // Save filter state. The added constants avoid denormals.
- _z1 = z1 + 1e-20f;
- _z2 = z2 + 1e-20f;
-
- s = sqrtf (2.0f * z2);
-
- if (_flag) // Display thread has read the rms value.
- {
- _rms = s;
- _flag = false;
- }
- else
- {
- // Adjust RMS value and update maximum since last read().
- if (s > _rms) _rms = s;
- }
+ float s, z1, z2;
+
+ // Get filter state.
+ z1 = _z1 > 50 ? 50 : (_z1 < 0 ? 0 : _z1);
+ z2 = _z2 > 50 ? 50 : (_z2 < 0 ? 0 : _z2);
+
+ // Perform filtering. The second filter is evaluated
+ // only every 4th sample - this is just an optimisation.
+ n /= 4; // Loop is unrolled by 4.
+ while (n--) {
+ s = *p++;
+ s *= s;
+ z1 += _omega * (s - z1); // Update first filter.
+ s = *p++;
+ s *= s;
+ z1 += _omega * (s - z1); // Update first filter.
+ s = *p++;
+ s *= s;
+ z1 += _omega * (s - z1); // Update first filter.
+ s = *p++;
+ s *= s;
+ z1 += _omega * (s - z1); // Update first filter.
+ z2 += 4 * _omega * (z1 - z2); // Update second filter.
+ }
+
+ if (isnan(z1)) z1 = 0;
+ if (isnan(z2)) z2 = 0;
+
+ // Save filter state. The added constants avoid denormals.
+ _z1 = z1 + 1e-20f;
+ _z2 = z2 + 1e-20f;
+
+ s = sqrtf (2.0f * z2);
+
+ if (_flag) {
+ // Display thread has read the rms value.
+ _rms = s;
+ _flag = false;
+ } else {
+ // Adjust RMS value and update maximum since last read().
+ if (s > _rms) _rms = s;
+ }
}
/* Returns highest _rms value since last call */
-float Kmeterdsp::read ()
+float
+Kmeterdsp::read ()
{
- float rv= _rms;
- _flag = true; // Resets _rms in next process().
- return rv;
+ float rv= _rms;
+ _flag = true; // Resets _rms in next process().
+ return rv;
}
-void Kmeterdsp::reset ()
+void
+Kmeterdsp::reset ()
{
- _z1 = _z2 = _rms = .0f;
- _flag = false;
+ _z1 = _z2 = _rms = .0f;
+ _flag = false;
}
-
-/* vi:set ts=8 sts=8 sw=4: */