3 #ifndef VISR_RBBL_BIQUAD_COEFFICIENT_HPP_INCLUDED 4 #define VISR_RBBL_BIQUAD_COEFFICIENT_HPP_INCLUDED 6 #include <boost/property_tree/ptree_fwd.hpp> 12 #include <initializer_list> 29 template<
typename CoeffType >
36 static const std::size_t cNumberOfCoeffs = 5;
43 mCoeffs.fill( static_cast<CoeffType>(0.0) );
44 mCoeffs[0] =
static_cast<CoeffType
>(1.0);
63 CoeffType a1, CoeffType a2 )
74 if( coeffs.size() != mCoeffs.size() )
76 throw std::invalid_argument(
"BiquadCoefficient: Initialisation vector has wrong number of elements." );
78 std::copy( coeffs.begin(), coeffs.end(), mCoeffs.begin() );
85 mCoeffs = rhs.mCoeffs;
89 CoeffType
const *
data()
const {
return &mCoeffs[0]; }
91 CoeffType *
data() {
return &mCoeffs[0]; }
95 return mCoeffs[ idx ];
100 return mCoeffs[ idx ];
103 CoeffType
const &
at( std::size_t idx )
const 105 return mCoeffs.at( idx );
108 CoeffType &
at( std::size_t idx )
110 return mCoeffs.at( idx );
114 CoeffType
const &
b0()
const {
return mCoeffs[0]; }
116 CoeffType
const &
b1()
const {
return mCoeffs[1]; }
118 CoeffType
const &
b2()
const {
return mCoeffs[2]; }
120 CoeffType
const &
a1()
const {
return mCoeffs[3]; }
122 CoeffType
const &
a2()
const {
return mCoeffs[4]; }
125 CoeffType&
b0() {
return mCoeffs[0]; }
127 CoeffType&
b1() {
return mCoeffs[1]; }
129 CoeffType&
b2() {
return mCoeffs[2]; }
131 CoeffType&
a1() {
return mCoeffs[3]; }
133 CoeffType&
a2() {
return mCoeffs[4]; }
135 void loadJson( boost::property_tree::ptree
const & tree );
137 void loadJson( std::basic_istream<char> & );
139 void loadXml( boost::property_tree::ptree
const & tree );
141 void loadXml( std::basic_istream<char> & );
147 void writeJson( boost::property_tree::ptree & tree )
const;
149 void writeJson( std::basic_ostream<char> & stream )
const;
151 void writeJson( std::string & str )
const;
153 void writeXml( boost::property_tree::ptree & tree )
const;
155 void writeXml ( std::basic_ostream<char> & stream )
const;
157 void writeXml ( std::string & str )
const;
164 std::array<CoeffType,5> mCoeffs;
167 template<
class CoeffType >
171 using Container =
typename std::vector< BiquadCoefficient< CoeffType > >;
181 : mBiquads( initialSize )
191 : mBiquads( initList )
213 if( rhs.
size() != size() )
215 std::invalid_argument(
"BiquadCoefficientList: Size of argument to be assigned does not match." );
217 mBiquads = rhs.mBiquads;
221 std::size_t
size()
const {
return mBiquads.size(); }
247 void loadJson( boost::property_tree::ptree
const & tree );
252 void loadJson( std::basic_istream<char> & stream );
257 void loadJson( std::string
const & str );
262 void loadXml( boost::property_tree::ptree
const & tree );
267 void loadXml( std::basic_istream<char> & stream );
272 void loadXml( std::string
const & str );
283 void writeJson( boost::property_tree::ptree & tree )
const;
288 void writeJson( std::basic_ostream<char> & stream )
const;
293 void writeJson( std::string & str )
const;
299 void writeXml( boost::property_tree::ptree & tree )
const;
304 void writeXml( std::basic_ostream<char> & stream )
const;
309 void writeXml( std::string & str )
const;
317 template<
typename CoeffType >
318 class VISR_RBBL_LIBRARY_SYMBOL BiquadCoefficientMatrix
321 explicit BiquadCoefficientMatrix( std::size_t numberOfFilters, std::size_t numberOfBiquads );
323 ~BiquadCoefficientMatrix();
325 static BiquadCoefficientMatrix fromJson( boost::property_tree::ptree
const & tree );
327 static BiquadCoefficientMatrix fromJson( std::basic_istream<char> & stream );
329 static BiquadCoefficientMatrix fromJson( std::string
const & str );
331 static BiquadCoefficientMatrix fromXml( boost::property_tree::ptree
const & tree );
333 static BiquadCoefficientMatrix fromXml( std::basic_istream<char> & stream );
335 static BiquadCoefficientMatrix fromXml( std::string
const & str );
340 void resize( std::size_t numberOfFilters, std::size_t numberOfBiquads );
362 void loadJson( boost::property_tree::ptree
const & tree );
367 void loadJson( std::basic_istream<char> & stream );
372 void loadJson( std::string
const & str );
377 void loadXml( boost::property_tree::ptree
const & tree );
382 void loadXml( std::basic_istream<char> & stream );
387 void loadXml( std::string
const & str );
398 void writeJson( boost::property_tree::ptree & tree )
const;
403 void writeJson( std::basic_ostream<char> & stream )
const;
408 void writeJson( std::string & str )
const;
414 void writeXml( boost::property_tree::ptree & tree )
const;
419 void writeXml( std::basic_ostream<char> & stream )
const;
424 void writeXml( std::string & str )
const;
428 using ContainerType = std::vector< BiquadCoefficientList<CoeffType> >;
436 #endif // VISR_RBBL_BIQUAD_COEFFICIENT_HPP_INCLUDED CoeffType const * data() const
Definition: biquad_coefficient.hpp:89
CoeffType const & at(std::size_t idx) const
Definition: biquad_coefficient.hpp:103
CoeffType const & b1() const
Definition: biquad_coefficient.hpp:116
CoeffType const & a1() const
Definition: biquad_coefficient.hpp:120
typename std::vector< BiquadCoefficient< SampleType > > Container
Definition: biquad_coefficient.hpp:171
CoeffType & b2()
Definition: biquad_coefficient.hpp:129
const_iterator end() const
Definition: biquad_coefficient.hpp:238
BiquadCoefficientList(const std::size_t initialSize)
Definition: biquad_coefficient.hpp:180
typename Container::iterator iterator
Definition: biquad_coefficient.hpp:172
CoeffType const & a2() const
Definition: biquad_coefficient.hpp:122
iterator begin()
Definition: biquad_coefficient.hpp:234
CoeffType & a1()
Definition: biquad_coefficient.hpp:131
BiquadCoefficient< CoeffType > const & operator[](std::size_t idx) const
Definition: biquad_coefficient.hpp:228
BiquadCoefficientList(std::initializer_list< BiquadCoefficient< CoeffType > > const &initList)
Definition: biquad_coefficient.hpp:190
BiquadCoefficient()
Definition: biquad_coefficient.hpp:41
CoeffType * data()
Definition: biquad_coefficient.hpp:91
Definition: biquad_coefficient.hpp:30
CoeffType & a2()
Definition: biquad_coefficient.hpp:133
BiquadCoefficient(CoeffType b0, CoeffType b1, CoeffType b2, CoeffType a1, CoeffType a2)
Definition: biquad_coefficient.hpp:62
CoeffType const & b2() const
Definition: biquad_coefficient.hpp:118
std::size_t numberOfFilters() const
Definition: biquad_coefficient.hpp:337
BiquadCoefficient< CoeffType > const & at(std::size_t idx) const
Definition: biquad_coefficient.hpp:231
CoeffType & at(std::size_t idx)
Definition: biquad_coefficient.hpp:108
BiquadCoefficient(std::initializer_list< CoeffType > const &coeffs)
Definition: biquad_coefficient.hpp:72
Definition: options.cpp:10
CoeffType const & operator[](std::size_t idx) const
Definition: biquad_coefficient.hpp:93
typename Container::const_iterator const_iterator
Definition: biquad_coefficient.hpp:173
BiquadCoefficient< CoeffType > & operator()(std::size_t rowIdx, std::size_t colIdx)
Definition: biquad_coefficient.hpp:345
CoeffType & operator[](std::size_t idx)
Definition: biquad_coefficient.hpp:98
void resize(std::size_t newSize)
Definition: biquad_coefficient.hpp:223
std::size_t size() const
Definition: biquad_coefficient.hpp:221
std::size_t numberOfSections() const
Definition: biquad_coefficient.hpp:338
CoeffType & b1()
Definition: biquad_coefficient.hpp:127
Definition: biquad_coefficient.hpp:168
BiquadCoefficient< CoeffType > & operator[](std::size_t idx)
Definition: biquad_coefficient.hpp:229
BiquadCoefficientList & operator=(BiquadCoefficientList const &rhs)
Definition: biquad_coefficient.hpp:211
BiquadCoefficient< CoeffType > & at(std::size_t idx)
Definition: biquad_coefficient.hpp:232
BiquadCoefficientList< CoeffType > const & operator[](std::size_t rowIdx) const
Definition: biquad_coefficient.hpp:341
CoeffType const & b0() const
Definition: biquad_coefficient.hpp:114
BiquadCoefficient & operator=(BiquadCoefficient const &rhs)
Definition: biquad_coefficient.hpp:83
iterator end()
Definition: biquad_coefficient.hpp:235
CoeffType & b0()
Definition: biquad_coefficient.hpp:125
BiquadCoefficient< CoeffType > const & operator()(std::size_t rowIdx, std::size_t colIdx) const
Definition: biquad_coefficient.hpp:344
BiquadCoefficientList< CoeffType > & operator[](std::size_t rowIdx)
Definition: biquad_coefficient.hpp:342
const_iterator begin() const
Definition: biquad_coefficient.hpp:237