8#ifndef __wooferTweeterFilter_hpp__
9#define __wooferTweeterFilter_hpp__
20template <
typename wooferFilterT,
typename tweeterFilterT>
21class wooferTweeterFilter
25 typedef typename wooferFilterT::floatT floatT;
27 typedef std::complex<floatT> complexT;
30 typedef wavefront<floatT> wavefrontT;
33 typedef wooferTweeterCommand<floatT> commandT;
35 wooferTweeterFilter();
38 tweeterFilterT tweeter;
44 template <
typename dmT>
45 void initialize( dmT &dm );
47 void filterCommands( commandT &filtAmps, commandT &rawAmps );
51 void initMeasurements( commandT &filtAmps, commandT &rawAmps )
53 filtAmps.wooferVect.resize( 1, wooferNModes );
54 filtAmps.wooferVect.setZero();
55 filtAmps.tweeterVect.resize( 1, tweeterNModes );
56 filtAmps.tweeterVect.setZero();
58 rawAmps.wooferVect.resize( 1, wooferNModes );
59 rawAmps.wooferVect.setZero();
60 rawAmps.tweeterVect.resize( 1, tweeterNModes );
61 rawAmps.tweeterVect.setZero();
65template <
typename wooferFilterT,
typename tweeterFilterT>
66wooferTweeterFilter<wooferFilterT, tweeterFilterT>::wooferTweeterFilter()
70template <
typename wooferFilterT,
typename tweeterFilterT>
71template <
typename dmT>
72void wooferTweeterFilter<wooferFilterT, tweeterFilterT>::initialize( dmT &dm )
74 woofer.initialize( dm.woofer );
75 wooferNModes = dm.woofer.nModes();
77 tweeter.initialize( dm.tweeter );
78 tweeterNModes = dm.tweeter.nModes();
81template <
typename wooferFilterT,
typename tweeterFilterT>
82void wooferTweeterFilter<wooferFilterT, tweeterFilterT>::filterCommands( commandT &filtAmps, commandT &rawAmps )
84 static int called = 0;
88 woofer.setGains( 0.1 );
93 for(
int i = 78; i < 1680; ++i )
94 tweeter.setLeak( i, 0.01 );
97 woofer.filterCommands( filtAmps.wooferVect, rawAmps.wooferVect );
98 tweeter.filterCommands( filtAmps.tweeterVect, rawAmps.tweeterVect );