aboutsummaryrefslogtreecommitdiffstats
path: root/core/filters
diff options
context:
space:
mode:
authorSven Göthel <[email protected]>2024-01-05 13:52:12 +0100
committerSven Göthel <[email protected]>2024-01-05 13:52:12 +0100
commitec98cdacc85ff0202852472c7756586437912f22 (patch)
tree42414746a27ab35cb8cdbc95af521d74821e57f4 /core/filters
parentfd5269bec9a5fe4815974b1786a037e6a247bfd2 (diff)
parentb82cd2e60edb8fbe5fdd3567105ae76a016a554c (diff)
Merge remote-tracking branch 'upstream/master'HEADmaster
Diffstat (limited to 'core/filters')
-rw-r--r--core/filters/biquad.cpp4
-rw-r--r--core/filters/biquad.h4
-rw-r--r--core/filters/nfc.cpp12
-rw-r--r--core/filters/nfc.h25
4 files changed, 23 insertions, 22 deletions
diff --git a/core/filters/biquad.cpp b/core/filters/biquad.cpp
index a0a62eb8..6671f60f 100644
--- a/core/filters/biquad.cpp
+++ b/core/filters/biquad.cpp
@@ -27,8 +27,8 @@ void BiquadFilterR<Real>::setParams(BiquadType type, Real f0norm, Real gain, Rea
const Real alpha{sin_w0/2.0f * rcpQ};
Real sqrtgain_alpha_2;
- Real a[3]{ 1.0f, 0.0f, 0.0f };
- Real b[3]{ 1.0f, 0.0f, 0.0f };
+ std::array<Real,3> a{{1.0f, 0.0f, 0.0f}};
+ std::array<Real,3> b{{1.0f, 0.0f, 0.0f}};
/* Calculate filter coefficients depending on filter type */
switch(type)
diff --git a/core/filters/biquad.h b/core/filters/biquad.h
index 75a4009b..e176caae 100644
--- a/core/filters/biquad.h
+++ b/core/filters/biquad.h
@@ -119,9 +119,9 @@ public:
void dualProcess(BiquadFilterR &other, const al::span<const Real> src, Real *dst);
/* Rather hacky. It's just here to support "manual" processing. */
- std::pair<Real,Real> getComponents() const noexcept { return {mZ1, mZ2}; }
+ [[nodiscard]] auto getComponents() const noexcept -> std::pair<Real,Real> { return {mZ1, mZ2}; }
void setComponents(Real z1, Real z2) noexcept { mZ1 = z1; mZ2 = z2; }
- Real processOne(const Real in, Real &z1, Real &z2) const noexcept
+ [[nodiscard]] auto processOne(const Real in, Real &z1, Real &z2) const noexcept -> Real
{
const Real out{in*mB0 + z1};
z1 = in*mB1 - out*mA1 + z2;
diff --git a/core/filters/nfc.cpp b/core/filters/nfc.cpp
index aa64c613..95b84e2c 100644
--- a/core/filters/nfc.cpp
+++ b/core/filters/nfc.cpp
@@ -48,12 +48,12 @@
namespace {
-constexpr float B[5][4] = {
- { 0.0f },
- { 1.0f },
- { 3.0f, 3.0f },
- { 3.6778f, 6.4595f, 2.3222f },
- { 4.2076f, 11.4877f, 5.7924f, 9.1401f }
+constexpr std::array B{
+ std::array{ 0.0f, 0.0f, 0.0f, 0.0f},
+ std::array{ 1.0f, 0.0f, 0.0f, 0.0f},
+ std::array{ 3.0f, 3.0f, 0.0f, 0.0f},
+ std::array{3.6778f, 6.4595f, 2.3222f, 0.0f},
+ std::array{4.2076f, 11.4877f, 5.7924f, 9.1401f}
};
NfcFilter1 NfcFilterCreate1(const float w0, const float w1) noexcept
diff --git a/core/filters/nfc.h b/core/filters/nfc.h
index 4b8e68b5..9c58f863 100644
--- a/core/filters/nfc.h
+++ b/core/filters/nfc.h
@@ -1,30 +1,31 @@
#ifndef CORE_FILTERS_NFC_H
#define CORE_FILTERS_NFC_H
+#include <array>
#include <cstddef>
#include "alspan.h"
struct NfcFilter1 {
- float base_gain, gain;
- float b1, a1;
- float z[1];
+ float base_gain{1.0f}, gain{1.0f};
+ float b1{}, a1{};
+ std::array<float,1> z{};
};
struct NfcFilter2 {
- float base_gain, gain;
- float b1, b2, a1, a2;
- float z[2];
+ float base_gain{1.0f}, gain{1.0f};
+ float b1{}, b2{}, a1{}, a2{};
+ std::array<float,2> z{};
};
struct NfcFilter3 {
- float base_gain, gain;
- float b1, b2, b3, a1, a2, a3;
- float z[3];
+ float base_gain{1.0f}, gain{1.0f};
+ float b1{}, b2{}, b3{}, a1{}, a2{}, a3{};
+ std::array<float,3> z{};
};
struct NfcFilter4 {
- float base_gain, gain;
- float b1, b2, b3, b4, a1, a2, a3, a4;
- float z[4];
+ float base_gain{1.0f}, gain{1.0f};
+ float b1{}, b2{}, b3{}, b4{}, a1{}, a2{}, a3{}, a4{};
+ std::array<float,4> z{};
};
class NfcFilter {