Nsound::FilterBandRejectFIR Class Reference

#include <Nsound/FilterBandRejectFIR.h>

Inheritance diagram for Nsound::FilterBandRejectFIR:
Inheritance graph
[legend]

List of all members.

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< KernelKernelCache

Protected Member Functions

void spectraReversal_ ()

Protected Attributes

float64 frequency_2_Hz_
KernelCache kernel_cache_
FilterLowPassFIR::KernelCache hp_cache_
float64b_
float64window_
float64x_history_
float64x_ptr_
float64x_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 &copy)
FilterBandRejectFIRoperator= (const FilterBandRejectFIR &rhs)

Detailed Description

Definition at line 47 of file FilterBandRejectFIR.h.


Member Typedef Documentation

typedef std::set<Kernel> Nsound::FilterBandRejectFIR::KernelCache [protected]

Reimplemented from Nsound::FilterLowPassFIR.

Definition at line 165 of file FilterBandRejectFIR.h.


Constructor & Destructor Documentation

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_(){};


Member Function Documentation

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 }

Buffer FilterBandRejectFIR::filter ( const Buffer x  ) 

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 }

float64 FilterBandRejectFIR::filter ( const float64 x  )  [virtual]

Reimplemented from Nsound::FilterHighPassFIR.

Definition at line 229 of file FilterBandRejectFIR.cc.

References filter().

00230 {
00231     return FilterLowPassFIR::filter(x);
00232 }

float64 FilterBandRejectFIR::filter ( const float64 x,
const float64 frequency_Hz 
) [virtual]

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 }

void FilterBandRejectFIR::plot ( boolean  show_fc = true,
boolean  show_phase = false 
)

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().

FilterBandRejectFIR& Nsound::FilterBandRejectFIR::operator= ( const FilterBandRejectFIR rhs  )  [inline, private]

Definition at line 181 of file FilterBandRejectFIR.h.

00181 {return *this;};

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 }

Buffer FilterHighPassFIR::filter ( const Buffer x,
const float64 frequency 
) [inherited]

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 }

Buffer FilterHighPassFIR::filter ( const Buffer x,
const Buffer frequencies 
) [inherited]

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]
Buffer FilterHighPassFIR::getImpulseResponse (  )  [inherited]

Reimplemented from Nsound::FilterLowPassFIR.

Definition at line 156 of file FilterHighPassFIR.cc.

00157 {
00158     return Filter::getImpulseResponse();
00159 }

Buffer Filter::getImpulseResponse ( const uint32  n_samples = 8192  )  [inherited]

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().

00219 {
00220     reset();
00221 
00222     Buffer response(n_samples);
00223 
00224     response << filter(1.0);
00225 
00226     for(uint32 i = 1; i < n_samples; ++i)
00227     {
00228         response << filter(0.0);
00229     }
00230 
00231     reset();
00232 
00233     return response;
00234 }

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 }

Buffer Filter::getFrequencyAxis ( const uint32  n_fft = 8192  )  [inherited]

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 };

Buffer Filter::getFrequencyResponse ( const uint32  n_fft = 8192  )  [inherited]

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]
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_; };


Member Data Documentation

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().

float64* Nsound::FilterLowPassFIR::b_ [protected, inherited]
float64* Nsound::FilterLowPassFIR::window_ [protected, inherited]
float64* Nsound::FilterLowPassFIR::x_ptr_ [protected, inherited]
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().

uint32 Nsound::Filter::kernel_size_ [protected, inherited]

The documentation for this class was generated from the following files:
Generated on Sun Apr 15 20:10:50 2012 for nsound by  doxygen 1.6.3