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