#include <Nsound/FilterBandRejectFIR.h>

Classes | |
| struct | Kernel |
| A class to store calculated kernels. More... | |
Public Member Functions | |
| FilterBandRejectFIR (const float64 &sample_rate, uint32 kernel_size, const float64 &frequency_Hz_low, const float64 &frequency_Hz_high) | |
| virtual | ~FilterBandRejectFIR () |
| float64 | getFrequencyLow () const |
| float64 | getFrequencyHigh () const |
| AudioStream | filter (const AudioStream &x) |
| AudioStream | filter (const AudioStream &x, const float64 &f_low, const float64 &f_high) |
| AudioStream | filter (const AudioStream &x, const Buffer &low_frequencies, const Buffer &high_frequencies) |
| Buffer | filter (const Buffer &x) |
| Buffer | filter (const Buffer &x, const float64 &f_low, const float64 &f_high) |
| Buffer | filter (const Buffer &x, const Buffer &frequencies_Hz_low, const Buffer &frequencies_Hz_high) |
| virtual float64 | filter (const float64 &x) |
| virtual float64 | filter (const float64 &x, const float64 &frequency_Hz) |
| virtual float64 | filter (const float64 &x, const float64 &frequency_Hz_low, const float64 &frequency_Hz_high) |
| void | makeKernel (const float64 &frequency_Hz_low, const float64 &frequency_Hz_high) |
| void | plot (boolean show_fc=true, boolean show_phase=false) |
| void | reset () |
| AudioStream | filter (const AudioStream &x, const float64 &frequency) |
| AudioStream | filter (const AudioStream &x, const Buffer &frequencies) |
| Buffer | filter (const Buffer &x, const float64 &frequency) |
| Buffer | filter (const Buffer &x, const Buffer &frequencies) |
| float64 | getFrequency () const |
| Buffer | getImpulseResponse () |
| Buffer | getImpulseResponse (const uint32 n_samples=8192) |
| void | makeKernel (const float64 &frequency) |
| void | plot (boolean show_phase=false) |
| void | setCutoff (const float64 &fc) |
| Buffer | getFrequencyAxis (const uint32 n_fft=8192) |
| Buffer | getFrequencyResponse (const uint32 n_fft=8192) |
| virtual uint32 | getKernelSize () const |
| Buffer | getPhaseResponse () |
| float64 | getSampleRate () const |
Protected Types | |
| typedef std::set< Kernel > | KernelCache |
Protected Member Functions | |
| void | spectraReversal_ () |
Protected Attributes | |
| float64 | frequency_2_Hz_ |
| KernelCache | kernel_cache_ |
| FilterLowPassFIR::KernelCache | hp_cache_ |
| float64 * | b_ |
| float64 * | window_ |
| float64 * | x_history_ |
| float64 * | x_ptr_ |
| float64 * | x_end_ptr_ |
| float64 | frequency_1_Hz_ |
| KernelCache | lp_cache_ |
| float64 | sample_rate_ |
| float64 | two_pi_over_sample_rate_ |
| uint32 | kernel_size_ |
Private Member Functions | |
| FilterBandRejectFIR (const FilterBandRejectFIR ©) | |
| FilterBandRejectFIR & | operator= (const FilterBandRejectFIR &rhs) |
Definition at line 47 of file FilterBandRejectFIR.h.
typedef std::set<Kernel> Nsound::FilterBandRejectFIR::KernelCache [protected] |
Reimplemented from Nsound::FilterLowPassFIR.
Definition at line 165 of file FilterBandRejectFIR.h.
| FilterBandRejectFIR::FilterBandRejectFIR | ( | const float64 & | sample_rate, | |
| uint32 | kernel_size, | |||
| const float64 & | frequency_Hz_low, | |||
| const float64 & | frequency_Hz_high | |||
| ) |
Definition at line 48 of file FilterBandRejectFIR.cc.
References Nsound::FilterLowPassFIR::frequency_1_Hz_, and reset().
00054 : 00055 FilterHighPassFIR(sample_rate, kernel_size, frequency_Hz_high), 00056 frequency_2_Hz_(frequency_Hz_high), 00057 kernel_cache_() 00058 { 00059 frequency_1_Hz_ = frequency_Hz_low; 00060 00061 reset(); }
| FilterBandRejectFIR::~FilterBandRejectFIR | ( | ) | [virtual] |
Definition at line 65 of file FilterBandRejectFIR.cc.
References kernel_cache_.
00066 { 00067 FilterBandRejectFIR::KernelCache::iterator itor = 00068 FilterBandRejectFIR::kernel_cache_.begin(); 00069 00070 FilterBandRejectFIR::KernelCache::iterator end = 00071 FilterBandRejectFIR::kernel_cache_.end(); 00072 00073 while(itor != end) 00074 { 00075 delete [] itor->b_; 00076 ++itor; 00077 } 00078 }
| Nsound::FilterBandRejectFIR::FilterBandRejectFIR | ( | const FilterBandRejectFIR & | copy | ) | [inline, private] |
Definition at line 173 of file FilterBandRejectFIR.h.
00175 : 00176 FilterHighPassFIR(copy.sample_rate_, 3, copy.frequency_1_Hz_), 00177 frequency_2_Hz_(0.0), kernel_cache_(){};
| float64 FilterBandRejectFIR::getFrequencyLow | ( | ) | const |
Definition at line 83 of file FilterBandRejectFIR.cc.
References Nsound::FilterLowPassFIR::frequency_1_Hz_.
00084 { 00085 return frequency_1_Hz_; 00086 }
| float64 FilterBandRejectFIR::getFrequencyHigh | ( | ) | const |
Definition at line 91 of file FilterBandRejectFIR.cc.
References frequency_2_Hz_.
00092 { 00093 return frequency_2_Hz_; 00094 }
| AudioStream FilterBandRejectFIR::filter | ( | const AudioStream & | x | ) |
Reimplemented from Nsound::FilterHighPassFIR.
Definition at line 100 of file FilterBandRejectFIR.cc.
Referenced by filter(), FilterBandRejectFIR_UnitTest(), and main().
00101 { 00102 return Filter::filter(x); 00103 }
| AudioStream FilterBandRejectFIR::filter | ( | const AudioStream & | x, | |
| const float64 & | f_low, | |||
| const float64 & | f_high | |||
| ) |
Definition at line 116 of file FilterBandRejectFIR.cc.
References filter(), Nsound::AudioStream::getNChannels(), and Nsound::AudioStream::getSampleRate().
00120 { 00121 uint32 n_channels = x.getNChannels(); 00122 00123 AudioStream y(x.getSampleRate(), n_channels); 00124 00125 for(uint32 channel = 0; channel < n_channels; ++channel) 00126 { 00127 y[channel] = FilterBandRejectFIR::filter(x[channel], f_low, f_high); 00128 } 00129 00130 return y; 00131 }
| AudioStream FilterBandRejectFIR::filter | ( | const AudioStream & | x, | |
| const Buffer & | low_frequencies, | |||
| const Buffer & | high_frequencies | |||
| ) |
Definition at line 136 of file FilterBandRejectFIR.cc.
References filter(), Nsound::AudioStream::getNChannels(), and Nsound::AudioStream::getSampleRate().
00140 { 00141 uint32 n_channels = x.getNChannels(); 00142 00143 AudioStream y(x.getSampleRate(), n_channels); 00144 00145 for(uint32 channel = 0; channel < n_channels; ++channel) 00146 { 00147 y[channel] = FilterBandRejectFIR::filter( 00148 x[channel], 00149 frequencies_Hz_low, 00150 frequencies_Hz_high); 00151 } 00152 00153 return y; 00154 }
Reimplemented from Nsound::FilterHighPassFIR.
Definition at line 159 of file FilterBandRejectFIR.cc.
References filter().
00160 { 00161 return FilterLowPassFIR::filter(x); 00162 }
| Buffer FilterBandRejectFIR::filter | ( | const Buffer & | x, | |
| const float64 & | f_low, | |||
| const float64 & | f_high | |||
| ) |
Definition at line 175 of file FilterBandRejectFIR.cc.
References Nsound::Buffer::begin(), Nsound::Buffer::end(), filter(), Nsound::Buffer::getLength(), makeKernel(), and reset().
00179 { 00180 // Instead of calling filter(x,f_low, f_high), we implement this function 00181 // here to avoid calling makeKernel(f) for each sample. 00182 00183 FilterLowPassFIR::reset(); 00184 00185 FilterBandRejectFIR::makeKernel(f_low, f_high); 00186 00187 Buffer::const_iterator itor = x.begin(); 00188 Buffer::const_iterator end = x.end(); 00189 00190 Buffer y(x.getLength()); 00191 while(itor != end) 00192 { 00193 y << FilterLowPassFIR::filter(*itor); 00194 ++itor; 00195 } 00196 00197 return y; 00198 }
| Buffer FilterBandRejectFIR::filter | ( | const Buffer & | x, | |
| const Buffer & | frequencies_Hz_low, | |||
| const Buffer & | frequencies_Hz_high | |||
| ) |
Definition at line 203 of file FilterBandRejectFIR.cc.
References filter(), and Nsound::Buffer::getLength().
00207 { 00208 uint32 n_high_freqs = frequencies_Hz_high.getLength(); 00209 uint32 n_low_freqs = frequencies_Hz_low.getLength(); 00210 00211 Buffer y; 00212 00213 uint32 x_samples = x.getLength(); 00214 00215 for(uint32 i = 0; i < x_samples; ++i) 00216 { 00217 y << FilterBandRejectFIR::filter( 00218 x[i], 00219 frequencies_Hz_low [i % n_low_freqs], 00220 frequencies_Hz_high[i % n_high_freqs]); 00221 } 00222 00223 return y; 00224 }
Reimplemented from Nsound::FilterHighPassFIR.
Definition at line 229 of file FilterBandRejectFIR.cc.
References filter().
00230 { 00231 return FilterLowPassFIR::filter(x); 00232 }
Reimplemented from Nsound::FilterHighPassFIR.
Definition at line 237 of file FilterBandRejectFIR.cc.
References filter().
00238 { 00239 return FilterLowPassFIR::filter(x); 00240 }
| float64 FilterBandRejectFIR::filter | ( | const float64 & | x, | |
| const float64 & | frequency_Hz_low, | |||
| const float64 & | frequency_Hz_high | |||
| ) | [virtual] |
Definition at line 245 of file FilterBandRejectFIR.cc.
References filter(), and makeKernel().
00249 { 00250 makeKernel(frequencies_Hz_low, frequencies_Hz_high); 00251 return FilterLowPassFIR::filter(x); 00252 }
| void FilterBandRejectFIR::makeKernel | ( | const float64 & | frequency_Hz_low, | |
| const float64 & | frequency_Hz_high | |||
| ) |
Definition at line 257 of file FilterBandRejectFIR.cc.
References Nsound::FilterBandRejectFIR::Kernel::b_, Nsound::FilterLowPassFIR::b_, kernel_cache_, and Nsound::Filter::kernel_size_.
Referenced by filter(), and reset().
00258 { 00259 // Here we create a key into the kernel cache. I'm only storing kernels 00260 // with freqs chopped off to the 10th Hz. So filtering with a kernel 00261 // designed at 440.1567 Hz will get stored as 440.1. Any other frequency 00262 // that starts at 440.1 will not get a kernel calculated and just use the 00263 // one in the cache. So the max diff between what's passed in and what's 00264 // stored in the cache is 0.09999 Hz. 00265 00266 FilterBandRejectFIR::Kernel new_kernel( 00267 static_cast<uint32>(low_frequency), 00268 static_cast<uint32>(high_frequency)); 00269 00270 // See if the kernel is in the cache. 00271 00272 FilterBandRejectFIR::KernelCache::const_iterator itor = 00273 FilterBandRejectFIR::kernel_cache_.find(new_kernel); 00274 00275 if(itor != FilterBandRejectFIR::kernel_cache_.end()) 00276 { 00277 // The kernel was found in the cache. 00278 b_ = itor->b_; 00279 return; 00280 } 00281 00282 // The filter wasn't in the cache, need to make it. 00283 new_kernel.b_ = new float64[kernel_size_]; 00284 00285 if(low_frequency < 0.10 && high_frequency >= 0.10) 00286 { 00287 // Create simple high pass filter. 00288 FilterHighPassFIR::makeKernel(high_frequency); 00289 00290 //~ // b_ is now pointing at a high pass kernel held in the high pass cache 00291 //~ memcpy(new_kernel.b_, b_, kernel_size_ * sizeof(float64)); 00292 00293 return; 00294 00295 } 00296 else if(low_frequency >= 0.10 && high_frequency < 0.10) 00297 { 00298 // Create simple low pass filter. 00299 FilterLowPassFIR::makeKernel(low_frequency); 00300 00301 //~ // b_ is now pointing at a high pass kernel held in the low pass cache 00302 //~ memcpy(new_kernel.b_, b_, kernel_size_ * sizeof(float64)); 00303 00304 return; 00305 00306 } 00307 else if(low_frequency <= 0.10 && high_frequency < 0.10) 00308 { 00309 // Create simple All pass filter 00310 new_kernel.b_[0] = 1.0; 00311 00312 for(uint32 i = 1; i < kernel_size_; ++i) 00313 { 00314 new_kernel.b_[i] = 0.00000; 00315 } 00316 } 00317 else // non-zero frequencies 00318 { 00319 FilterLowPassFIR::makeKernel(low_frequency); 00320 00321 // Now b_ is pointing to a low pass kernel held in the low pass cache. 00322 memcpy(new_kernel.b_, b_, kernel_size_ * sizeof(float64)); 00323 00324 FilterHighPassFIR::makeKernel(high_frequency); 00325 00326 // b_ is now pointing at a high pass kernel held in the high pass cache 00327 00328 // To create the band reject, simply add the low pass and high pass 00329 // kernels. 00330 00331 for(uint32 i = 0; i < kernel_size_; ++i) 00332 { 00333 // low kernel += high kernel 00334 new_kernel.b_[i] += b_[i]; 00335 } 00336 } 00337 00338 // point at the new kernel 00339 b_ = new_kernel.b_; 00340 00341 // insert into cache 00342 FilterBandRejectFIR::kernel_cache_.insert(new_kernel); 00343 }
Reimplemented from Nsound::FilterHighPassFIR.
Definition at line 348 of file FilterBandRejectFIR.cc.
References Nsound::Plotter::axvline(), Nsound::FilterLowPassFIR::frequency_1_Hz_, frequency_2_Hz_, Nsound::Filter::kernel_size_, Nsound::Filter::sample_rate_, Nsound::Plotter::subplot(), and Nsound::Plotter::title().
Referenced by main().
00349 { 00350 char title[128]; 00351 sprintf(title, 00352 "Band Reject FIR Frequency Response\n" 00353 "order = %d, fl = %0.1f Hz, fl = %0.1f Hz, sr = %0.1f Hz", 00354 kernel_size_ - 1, 00355 frequency_1_Hz_, 00356 frequency_2_Hz_, 00357 sample_rate_); 00358 00359 Filter::plot(show_phase); 00360 00361 Plotter pylab; 00362 00363 int32 topplot = 111; 00364 00365 if(show_phase) 00366 { 00367 topplot = 211; 00368 } 00369 00370 if(show_fc) 00371 { 00372 pylab.subplot(topplot); 00373 00374 pylab.axvline(frequency_1_Hz_,"color='red'"); 00375 pylab.axvline(frequency_2_Hz_,"color='red'"); 00376 00377 pylab.title(title); 00378 } 00379 }
| void FilterBandRejectFIR::reset | ( | ) | [virtual] |
Resets interal history buffer and sets the cut off frequency to the one used at declaration.
Reimplemented from Nsound::FilterHighPassFIR.
Definition at line 384 of file FilterBandRejectFIR.cc.
References Nsound::FilterLowPassFIR::frequency_1_Hz_, frequency_2_Hz_, and makeKernel().
Referenced by filter(), and FilterBandRejectFIR().
00385 { 00386 FilterLowPassFIR::reset(); 00387 makeKernel(frequency_1_Hz_, frequency_2_Hz_); 00388 }
| FilterBandRejectFIR& Nsound::FilterBandRejectFIR::operator= | ( | const FilterBandRejectFIR & | rhs | ) | [inline, private] |
Definition at line 181 of file FilterBandRejectFIR.h.
| AudioStream FilterHighPassFIR::filter | ( | const AudioStream & | x, | |
| const float64 & | frequency | |||
| ) | [inherited] |
Reimplemented from Nsound::FilterLowPassFIR.
Definition at line 83 of file FilterHighPassFIR.cc.
References Nsound::FilterHighPassFIR::filter().
00084 { 00085 return Filter::filter(x, f); 00086 }
| AudioStream FilterHighPassFIR::filter | ( | const AudioStream & | x, | |
| const Buffer & | frequencies | |||
| ) | [inherited] |
Reimplemented from Nsound::FilterLowPassFIR.
Definition at line 91 of file FilterHighPassFIR.cc.
References Nsound::FilterHighPassFIR::filter().
00092 { 00093 return Filter::filter(x, frequencies); 00094 }
Reimplemented from Nsound::FilterLowPassFIR.
Definition at line 107 of file FilterHighPassFIR.cc.
References Nsound::Buffer::begin(), Nsound::Buffer::end(), Nsound::FilterHighPassFIR::filter(), Nsound::FilterHighPassFIR::makeKernel(), and Nsound::FilterHighPassFIR::reset().
00108 { 00109 // Instead of calling Filter::filter(x,f), we implement this function here 00110 // to avoid calling makeKernel(f) for each sample. 00111 00112 FilterHighPassFIR::reset(); 00113 FilterHighPassFIR::makeKernel(f); 00114 00115 Buffer::const_iterator itor = x.begin(); 00116 Buffer::const_iterator end = x.end(); 00117 00118 Buffer y; 00119 while(itor != end) 00120 { 00121 y << FilterLowPassFIR::filter(*itor); 00122 ++itor; 00123 } 00124 00125 return y; 00126 }
Reimplemented from Nsound::FilterLowPassFIR.
Definition at line 131 of file FilterHighPassFIR.cc.
References Nsound::FilterHighPassFIR::filter().
00132 { 00133 return Filter::filter(x, frequencies); 00134 }
| float64 Nsound::FilterHighPassFIR::getFrequency | ( | ) | const [inline, inherited] |
Reimplemented from Nsound::FilterLowPassFIR.
Definition at line 92 of file FilterHighPassFIR.h.
References Nsound::FilterLowPassFIR::frequency_1_Hz_.
Referenced by Nsound::FilterBandPassFIR::getFrequencyLow(), and Nsound::FilterBandPassFIR::plot().
00092 {return frequency_1_Hz_;};
| Buffer FilterHighPassFIR::getImpulseResponse | ( | ) | [inherited] |
Reimplemented from Nsound::FilterLowPassFIR.
Definition at line 156 of file FilterHighPassFIR.cc.
00157 { 00158 return Filter::getImpulseResponse(); 00159 }
Reimplemented in Nsound::FilterIIR.
Definition at line 218 of file Filter.cc.
References Nsound::Filter::filter(), and Nsound::Filter::reset().
Referenced by Nsound::Filter::getFrequencyResponse(), and Nsound::Filter::getPhaseResponse().
| void FilterHighPassFIR::makeKernel | ( | const float64 & | frequency | ) | [inherited] |
Reimplemented from Nsound::FilterLowPassFIR.
Definition at line 164 of file FilterHighPassFIR.cc.
References Nsound::FilterLowPassFIR::Kernel::b_, Nsound::FilterLowPassFIR::b_, Nsound::FilterHighPassFIR::hp_cache_, Nsound::Filter::kernel_size_, Nsound::Filter::sample_rate_, and Nsound::FilterHighPassFIR::spectraReversal_().
Referenced by Nsound::FilterHighPassFIR::filter(), and Nsound::FilterHighPassFIR::reset().
00165 { 00166 // Here we create a key into the kernel cache. I'm only storing kernels 00167 // with freqs chopped off to the 10th Hz. So filtering with a kernel 00168 // designed at 440.1567 Hz will get stored as 440.1. Any other frequency 00169 // that starts at 440.1 will not get a kernel calculated and just use the 00170 // one in the cache. 00171 00172 FilterLowPassFIR::Kernel new_kernel( 00173 static_cast<uint32>(cutoff_frequency_Hz)); 00174 00175 // See if the kernel is in the cache. 00176 00177 FilterLowPassFIR:: 00178 KernelCache:: 00179 const_iterator itor = hp_cache_.find(new_kernel); 00180 00181 if(itor != hp_cache_.end()) 00182 { 00183 // The kernel was found in the cache. 00184 b_ = itor->b_; 00185 return; 00186 } 00187 00188 // The filter wasn't in the cache, need to make it. 00189 new_kernel.b_ = new float64[kernel_size_]; 00190 00191 if(cutoff_frequency_Hz < 0.10) 00192 { 00193 // Create All pass filter. 00194 new_kernel.b_[0] = 1.0; 00195 00196 b_ = new_kernel.b_; 00197 } 00198 else 00199 { 00200 float64 fc = sample_rate_ / 2.0 - cutoff_frequency_Hz; 00201 00202 FilterLowPassFIR::makeKernel(fc); 00203 00204 // Now b_ is pointing to a low pass kernel, copy it into new_kernel. 00205 memcpy(new_kernel.b_, b_, sizeof(float64) * kernel_size_); 00206 00207 // Point to new kernel. 00208 b_ = new_kernel.b_; 00209 00210 // Perform the spectra inversion on the kernel to turn it into a high 00211 // pass filter. 00212 spectraReversal_(); 00213 } 00214 00215 // Add the new kernel to the cache. 00216 hp_cache_.insert(new_kernel); 00217 }
| void Filter::plot | ( | boolean | show_phase = false |
) | [inherited] |
Definition at line 257 of file Filter.cc.
References Nsound::Plotter::figure(), Nsound::Buffer::getdB(), Nsound::Filter::getFrequencyAxis(), Nsound::Filter::getFrequencyResponse(), Nsound::Buffer::getMax(), Nsound::Filter::getPhaseResponse(), Nsound::Plotter::plot(), Nsound::Plotter::subplot(), Nsound::Plotter::xlabel(), Nsound::Plotter::ylabel(), and Nsound::Plotter::ylim().
Referenced by main().
00258 { 00259 Buffer x = getFrequencyAxis(); 00260 Buffer fr = getFrequencyResponse().getdB(); 00261 00262 Plotter pylab; 00263 00264 pylab.figure(); 00265 00266 int subplot_int = 111; 00267 00268 if(show_phase) 00269 { 00270 subplot_int = 211; 00271 } 00272 00273 pylab.subplot(subplot_int); 00274 00275 // Frequency response 00276 pylab.plot(x,fr, "blue"); 00277 00278 pylab.xlabel("Frequency (Hz)"); 00279 pylab.ylabel("Frequency Response (dB)"); 00280 00281 // Phase response 00282 if(show_phase) 00283 { 00284 pylab.subplot(subplot_int + 1); 00285 00286 Buffer pr = getPhaseResponse().getdB(); 00287 00288 pylab.plot(x,pr); 00289 00290 pylab.xlabel("Frequency (Hz)"); 00291 pylab.ylabel("Phase Response (dB)"); 00292 } 00293 00294 float64 ymax = fr.getMax(); 00295 float64 height = ymax - -60.0; 00296 00297 pylab.ylim(-60.0, ymax + 0.05 * height); 00298 00299 }
| void FilterHighPassFIR::spectraReversal_ | ( | ) | [protected, inherited] |
Definition at line 271 of file FilterHighPassFIR.cc.
References Nsound::FilterLowPassFIR::b_, and Nsound::Filter::kernel_size_.
Referenced by Nsound::FilterHighPassFIR::makeKernel().
00272 { 00273 for(uint32 i = 0; i < kernel_size_; ++i) 00274 { 00275 if(i % 2) 00276 { 00277 b_[i] *= -1.00; 00278 } 00279 } 00280 }
| void FilterLowPassFIR::setCutoff | ( | const float64 & | fc | ) | [inherited] |
Sets the cut off frequency (Hz).
Definition at line 379 of file FilterLowPassFIR.cc.
References Nsound::FilterLowPassFIR::frequency_1_Hz_, and Nsound::FilterLowPassFIR::reset().
00380 { 00381 frequency_1_Hz_ = fc; 00382 reset(); 00383 }
Definition at line 176 of file Filter.cc.
References Nsound::FFTransform::roundUp2(), and Nsound::Filter::sample_rate_.
Referenced by main(), Nsound::Filter::plot(), and Nsound::FilterIIR::savePlot().
00177 { 00178 uint32 fft_chunk_size = FFTransform::roundUp2( 00179 static_cast<int32>(n_fft)); 00180 00181 uint32 n_samples = fft_chunk_size / 2 + 1; 00182 00183 float64 f_step = (1.0 / (static_cast<float64>(fft_chunk_size) / 2.0)) 00184 * (sample_rate_ / 2.0); 00185 00186 Buffer f_axis; 00187 00188 float64 f = 0.0; 00189 00190 for(uint32 i = 0; i < n_samples; ++i) 00191 { 00192 f_axis << f; 00193 f += f_step; 00194 } 00195 00196 return f_axis; 00197 };
Definition at line 202 of file Filter.cc.
References Nsound::FFTransform::fft(), Nsound::Filter::getImpulseResponse(), and Nsound::Filter::sample_rate_.
Referenced by Nsound::FilterBandPassIIR::FilterBandPassIIR(), FilterLeastSquaresFIR_UnitTest(), Nsound::FilterIIR::getRMS(), main(), Nsound::Filter::plot(), and Nsound::FilterIIR::savePlot().
00203 { 00204 FFTransform fft(sample_rate_); 00205 00206 //~ fft.setWindow(HANNING); 00207 00208 FFTChunkVector vec; 00209 00210 vec = fft.fft(getImpulseResponse(), n_fft); 00211 00212 return vec[0].getMagnitude(); 00213 }
| virtual uint32 Nsound::Filter::getKernelSize | ( | ) | const [inline, virtual, inherited] |
Reimplemented in Nsound::FilterIIR, and Nsound::FilterTone.
Definition at line 109 of file Filter.h.
References Nsound::Filter::kernel_size_.
Referenced by Nsound::FilterBandPassIIR::FilterBandPassIIR(), Nsound::FilterBandRejectIIR::plot(), Nsound::FilterBandPassIIR::plot(), and Nsound::FilterBandPassFIR::plot().
00109 {return kernel_size_;};
| Buffer Filter::getPhaseResponse | ( | ) | [inherited] |
Definition at line 239 of file Filter.cc.
References Nsound::FFTransform::fft(), Nsound::Filter::getImpulseResponse(), Nsound::Buffer::getLength(), Nsound::Filter::sample_rate_, and Nsound::Buffer::subbuffer().
Referenced by Nsound::Filter::plot().
00240 { 00241 uint32 n_samples = static_cast<uint32>(sample_rate_ * 2); 00242 00243 FFTransform fft(n_samples); 00244 00245 FFTChunkVector vec; 00246 00247 vec = fft.fft(getImpulseResponse(), n_samples); 00248 00249 Buffer phase = vec[0].getPhase(); 00250 00251 return phase.subbuffer(0, phase.getLength() / 2 + 1); 00252 }
| float64 Nsound::Filter::getSampleRate | ( | ) | const [inline, inherited] |
Definition at line 117 of file Filter.h.
References Nsound::Filter::sample_rate_.
00117 { return sample_rate_; };
float64 Nsound::FilterBandRejectFIR::frequency_2_Hz_ [protected] |
Definition at line 150 of file FilterBandRejectFIR.h.
Referenced by getFrequencyHigh(), plot(), and reset().
Definition at line 167 of file FilterBandRejectFIR.h.
Referenced by makeKernel(), and ~FilterBandRejectFIR().
FilterLowPassFIR::KernelCache Nsound::FilterHighPassFIR::hp_cache_ [protected, inherited] |
Definition at line 116 of file FilterHighPassFIR.h.
Referenced by Nsound::FilterHighPassFIR::makeKernel(), and Nsound::FilterHighPassFIR::~FilterHighPassFIR().
float64* Nsound::FilterLowPassFIR::b_ [protected, inherited] |
Definition at line 121 of file FilterLowPassFIR.h.
Referenced by Nsound::FilterLowPassFIR::filter(), Nsound::FilterLowPassFIR::makeKernel(), Nsound::FilterHighPassFIR::makeKernel(), makeKernel(), and Nsound::FilterHighPassFIR::spectraReversal_().
float64* Nsound::FilterLowPassFIR::window_ [protected, inherited] |
Definition at line 122 of file FilterLowPassFIR.h.
Referenced by Nsound::FilterLowPassFIR::FilterLowPassFIR(), Nsound::FilterLowPassFIR::makeKernel(), and Nsound::FilterLowPassFIR::~FilterLowPassFIR().
float64* Nsound::FilterLowPassFIR::x_history_ [protected, inherited] |
Definition at line 125 of file FilterLowPassFIR.h.
Referenced by Nsound::FilterLowPassFIR::filter(), Nsound::FilterLowPassFIR::FilterLowPassFIR(), Nsound::FilterLowPassFIR::reset(), Nsound::FilterHighPassFIR::reset(), and Nsound::FilterLowPassFIR::~FilterLowPassFIR().
float64* Nsound::FilterLowPassFIR::x_ptr_ [protected, inherited] |
Definition at line 126 of file FilterLowPassFIR.h.
Referenced by Nsound::FilterLowPassFIR::filter(), Nsound::FilterLowPassFIR::FilterLowPassFIR(), Nsound::FilterLowPassFIR::reset(), and Nsound::FilterHighPassFIR::reset().
float64* Nsound::FilterLowPassFIR::x_end_ptr_ [protected, inherited] |
Definition at line 127 of file FilterLowPassFIR.h.
Referenced by Nsound::FilterLowPassFIR::filter(), and Nsound::FilterLowPassFIR::FilterLowPassFIR().
float64 Nsound::FilterLowPassFIR::frequency_1_Hz_ [protected, inherited] |
Definition at line 129 of file FilterLowPassFIR.h.
Referenced by FilterBandRejectFIR(), Nsound::FilterHighPassFIR::FilterHighPassFIR(), Nsound::FilterLowPassFIR::getFrequency(), Nsound::FilterHighPassFIR::getFrequency(), getFrequencyLow(), Nsound::FilterLowPassFIR::plot(), Nsound::FilterHighPassFIR::plot(), plot(), Nsound::FilterLowPassFIR::reset(), Nsound::FilterHighPassFIR::reset(), reset(), and Nsound::FilterLowPassFIR::setCutoff().
KernelCache Nsound::FilterLowPassFIR::lp_cache_ [protected, inherited] |
Definition at line 145 of file FilterLowPassFIR.h.
Referenced by Nsound::FilterLowPassFIR::makeKernel(), and Nsound::FilterLowPassFIR::~FilterLowPassFIR().
float64 Nsound::Filter::sample_rate_ [protected, inherited] |
Definition at line 131 of file Filter.h.
Referenced by Nsound::FilterPhaser::filter(), Nsound::FilterDelay::filter(), Nsound::FilterCombLowPassFeedback::filter(), Nsound::FilterAllPass::FilterAllPass(), Nsound::FilterCombLowPassFeedback::FilterCombLowPassFeedback(), Nsound::FilterDelay::FilterDelay(), Nsound::FilterFlanger::FilterFlanger(), Nsound::FilterPhaser::FilterPhaser(), Nsound::FilterSlinky::FilterSlinky(), Nsound::Filter::getFrequencyAxis(), Nsound::Filter::getFrequencyResponse(), Nsound::Filter::getPhaseResponse(), Nsound::Filter::getSampleRate(), Nsound::FilterStageIIR::makeIIRKernelHelper(), Nsound::FilterStageIIR::makeKernel(), Nsound::FilterParametricEqualizer::makeKernel(), Nsound::FilterLeastSquaresFIR::makeKernel(), Nsound::FilterHighPassFIR::makeKernel(), Nsound::FilterBandPassVocoder::makeKernel(), Nsound::FilterPhaser::operator=(), Nsound::FilterLeastSquaresFIR::operator=(), Nsound::FilterIIR::operator=(), Nsound::FilterFlanger::operator=(), Nsound::FilterTone::plot(), Nsound::FilterPhaser::plot(), Nsound::FilterParametricEqualizer::plot(), Nsound::FilterLowPassIIR::plot(), Nsound::FilterLowPassFIR::plot(), Nsound::FilterLeastSquaresFIR::plot(), Nsound::FilterHighPassIIR::plot(), Nsound::FilterHighPassFIR::plot(), Nsound::FilterFlanger::plot(), Nsound::FilterCombLowPassFeedback::plot(), Nsound::FilterBandRejectIIR::plot(), plot(), Nsound::FilterBandPassIIR::plot(), Nsound::FilterBandPassFIR::plot(), Nsound::FilterAllPass::plot(), Nsound::FilterLowPassIIR::setCutoff(), and Nsound::FilterLeastSquaresFIR::setWindow().
float64 Nsound::Filter::two_pi_over_sample_rate_ [protected, inherited] |
Definition at line 132 of file Filter.h.
Referenced by Nsound::FilterTone::makeKernel(), Nsound::FilterParametricEqualizer::makeKernel(), and Nsound::FilterLowPassFIR::makeKernel().
uint32 Nsound::Filter::kernel_size_ [protected, inherited] |
Definition at line 133 of file Filter.h.
Referenced by Nsound::FilterLowPassFIR::filter(), Nsound::FilterLeastSquaresFIR::filter(), Nsound::FilterBandPassFIR::FilterBandPassFIR(), Nsound::FilterBandPassIIR::FilterBandPassIIR(), Nsound::FilterBandRejectIIR::FilterBandRejectIIR(), Nsound::FilterHighPassIIR::FilterHighPassIIR(), Nsound::FilterLeastSquaresFIR::FilterLeastSquaresFIR(), Nsound::FilterLowPassFIR::FilterLowPassFIR(), Nsound::FilterLowPassIIR::FilterLowPassIIR(), Nsound::FilterLeastSquaresFIR::getKernel(), Nsound::Filter::getKernelSize(), Nsound::FilterLowPassFIR::makeKernel(), Nsound::FilterLeastSquaresFIR::makeKernel(), Nsound::FilterHighPassFIR::makeKernel(), makeKernel(), Nsound::FilterLeastSquaresFIR::operator=(), Nsound::FilterLowPassFIR::plot(), Nsound::FilterLeastSquaresFIR::plot(), Nsound::FilterHighPassFIR::plot(), plot(), Nsound::FilterLowPassFIR::reset(), Nsound::FilterLeastSquaresFIR::reset(), Nsound::FilterHighPassFIR::reset(), Nsound::FilterLeastSquaresFIR::setKernel(), Nsound::FilterLeastSquaresFIR::setWindow(), and Nsound::FilterHighPassFIR::spectraReversal_().
1.6.3