Skip to content

Commit

Permalink
Increase precision of coefficients for weighting filters
Browse files Browse the repository at this point in the history
  • Loading branch information
kwarc93 committed Feb 9, 2024
1 parent e76d410 commit 3f10056
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 15 deletions.
4 changes: 2 additions & 2 deletions .settings/language.settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-363667797706439552" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT ARM Cross GCC Built-in Compiler Settings " parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="986737872013106042" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT ARM Cross GCC Built-in Compiler Settings " parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
Expand All @@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-342959308939863922" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT ARM Cross GCC Built-in Compiler Settings " parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="1007446360779681672" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT ARM Cross GCC Built-in Compiler Settings " parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
Expand Down
8 changes: 4 additions & 4 deletions app/model/weighting_filter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,29 +11,29 @@ using namespace spl;

a_weighting::a_weighting()
{
arm_biquad_cascade_df1_init_f32(&this->iir_filter, this->iir_stages, this->coeffs, this->iir_state);
arm_biquad_cascade_df2T_init_f32(&this->iir_filter, this->iir_stages, this->coeffs, this->iir_state);
}

bool a_weighting::process(std::vector<float32_t> &input, std::vector<float32_t> &output)
{
if (input.size() != output.size())
return false;

arm_biquad_cascade_df1_f32(&this->iir_filter, input.data(), output.data(), output.size());
arm_biquad_cascade_df2T_f32(&this->iir_filter, input.data(), output.data(), output.size());
return true;
}

c_weighting::c_weighting()
{
arm_biquad_cascade_df1_init_f32(&this->iir_filter, this->iir_stages, this->coeffs, this->iir_state);
arm_biquad_cascade_df2T_init_f32(&this->iir_filter, this->iir_stages, this->coeffs, this->iir_state);
}

bool c_weighting::process(std::vector<float32_t> &input, std::vector<float32_t> &output)
{
if (input.size() != output.size())
return false;

arm_biquad_cascade_df1_f32(&this->iir_filter, input.data(), output.data(), output.size());
arm_biquad_cascade_df2T_f32(&this->iir_filter, input.data(), output.data(), output.size());
return true;
}

Expand Down
24 changes: 15 additions & 9 deletions app/model/weighting_filter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,15 @@ class a_weighting : public weighting_filter
a_weighting();
bool process(std::vector<float32_t> &input, std::vector<float32_t> &output);
private:
arm_biquad_casd_df1_inst_f32 iir_filter;
arm_biquad_cascade_df2T_instance_f32 iir_filter;
static constexpr uint32_t iir_stages = 3;
static constexpr float32_t coeffs[5 * iir_stages] = {2.8148e-01, -5.6291e-01, 2.8144e-01, 4.3181e-02, -4.6615e-04,
1.0000e+00, -2.0001e+00, 1.0001e+00, 1.9935e+00, -9.9355e-01,
1.0000e+00, 2.0000e+00, 1.0000e+00, 1.8737e+00, -8.7551e-01};
float32_t iir_state[4 * iir_stages];
static constexpr float32_t coeffs[5 * iir_stages] =
{
0.28147504346, -0.56291022628, 0.28143518563, 0.04318103380, -0.00046615042,
1.00000000000, -2.00014161345, 1.00014162348, 1.99353908705, -0.99354952290,
1.00000000000, 2.00000000000, 1.00000000000, 1.87367745134, -0.87551448640
};
float32_t iir_state[2 * iir_stages];
};

class c_weighting : public weighting_filter
Expand All @@ -47,11 +50,14 @@ class c_weighting : public weighting_filter
c_weighting();
bool process(std::vector<float32_t> &input, std::vector<float32_t> &output);
private:
arm_biquad_casd_df1_inst_f32 iir_filter;
arm_biquad_cascade_df2T_instance_f32 iir_filter;
static constexpr uint32_t iir_stages = 2;
static constexpr float32_t coeffs[5 * iir_stages] = {2.4025e-01, 4.8051e-01, 2.4025e-01, 4.3181e-02, -4.6615e-04,
1.0000e+00, -2.0000e+00, 1.0000e+00, 1.9935e+00, -9.9355e-01};
float32_t iir_state[4 * iir_stages];
static constexpr float32_t coeffs[5 * iir_stages] =
{
0.24025487669, 0.48050975338, 0.24025487669, 0.04318103380, -0.00046615042,
1.00000000000, -2.00000000000, 1.00000000000, 1.99353908697, -0.99354952282
};
float32_t iir_state[2 * iir_stages];
};

class z_weighting : public weighting_filter
Expand Down

0 comments on commit 3f10056

Please sign in to comment.