From 25a645aed5bd20ecec78ad23842c7ea9a3e4aaaf Mon Sep 17 00:00:00 2001 From: "Dipl.-Ing. Jonas Stienen" <jst@akustik.rwth-aachen.de> Date: Mon, 27 Nov 2017 16:46:40 +0100 Subject: [PATCH] more testing --- src/ITAFilterbankIIR.cpp | 15 ++++++++------- tests/ITADSPFilterbankIIRTest.m | 10 ++++++++++ 2 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 tests/ITADSPFilterbankIIRTest.m diff --git a/src/ITAFilterbankIIR.cpp b/src/ITAFilterbankIIR.cpp index 11caadf..7aa163a 100644 --- a/src/ITAFilterbankIIR.cpp +++ b/src/ITAFilterbankIIR.cpp @@ -5,6 +5,8 @@ #include <DspFilters/Dsp.h> +const int iOrder = 16; + class CITAFilterbankIIRImpl : public CITAFilterbankIIR { public: @@ -12,7 +14,7 @@ public: ~CITAFilterbankIIRImpl(); void Process( const float* pfInputData, float* pfOutputData ); private: - Dsp::SimpleFilter< Dsp::ChebyshevI::BandStop< 8 >, 1 > m_oFilterInstance; + Dsp::Butterworth::BandShelf< iOrder > m_oFilterInstance; float* m_vpfIn[ 1 ]; int m_iBlockLength; }; @@ -24,11 +26,9 @@ CITAFilterbankIIR* CITAFilterbankIIR::Create( const int iBlockLength, const doub CITAFilterbankIIRImpl::CITAFilterbankIIRImpl( const int iBlockLength, const double dSampleRate ) { - m_oFilterInstance.setup( 8, // order - dSampleRate,// sample rate - 900, // center frequency - 200, // band width - 3 ); // ripple dB + float fCenterFrequency = 500.0f; + float fFrequencyWidth = 20.0f; + m_oFilterInstance.setup( iOrder, dSampleRate, fCenterFrequency, fFrequencyWidth, 3.0f ); m_iBlockLength = iBlockLength; } @@ -41,5 +41,6 @@ void CITAFilterbankIIRImpl::Process( const float* pfInputData, float* pfOutputDa { fm_copy( pfOutputData, pfInputData, m_iBlockLength ); m_vpfIn[ 0 ] = pfOutputData; - m_oFilterInstance.process( m_iBlockLength, m_vpfIn ); + Dsp::Butterworth::BandShelf::StateType oState; + m_oFilterInstance.process( m_iBlockLength, m_vpfIn, oState ); } diff --git a/tests/ITADSPFilterbankIIRTest.m b/tests/ITADSPFilterbankIIRTest.m new file mode 100644 index 0000000..eca1c80 --- /dev/null +++ b/tests/ITADSPFilterbankIIRTest.m @@ -0,0 +1,10 @@ +%% load +iir_io = ita_merge( ita_read( 'IIR_in.wav' ), ita_read( 'IIR_out.wav' ) ); + +%% prepare +iir_io_io_snipped = ita_time_crop( iir_io, [ 1 512 ], 'samples' ); +iir_io_io_snipped.comment = 'IIR Bessel bandpass 8th order'; +iir_io_io_snipped.channelNames = { 'Dirac signal in', 'System response signal after IIR filtering' }; + +%% plot +iir_io_io_snipped.pf \ No newline at end of file -- GitLab