Audacity  2.2.0
EffectScienFilter Class Referencefinal

An Effect that applies 'classical' IIR filters. More...

#include <ScienFilter.h>

Inheritance diagram for EffectScienFilter:
Effect

Public Member Functions

 EffectScienFilter ()
 
virtual ~EffectScienFilter ()
 
wxString GetSymbol () override
 
wxString GetDescription () override
 
wxString ManualPage () override
 
EffectType GetType () override
 
unsigned GetAudioInCount () override
 
unsigned GetAudioOutCount () override
 
bool ProcessInitialize (sampleCount totalLen, ChannelNames chanMap=NULL) override
 
size_t ProcessBlock (float **inBlock, float **outBlock, size_t blockLen) override
 
bool GetAutomationParameters (EffectAutomationParameters &parms) override
 
bool SetAutomationParameters (EffectAutomationParameters &parms) override
 
bool Startup () override
 
bool Init () override
 
void PopulateOrExchange (ShuttleGui &S) override
 
bool TransferDataToWindow () override
 
bool TransferDataFromWindow () override
 
- Public Member Functions inherited from Effect
 Effect ()
 
virtual ~Effect ()
 
wxString GetPath () override
 
wxString GetSymbol () override
 
wxString GetName () override
 
wxString GetVendor () override
 
wxString GetVersion () override
 
wxString GetDescription () override
 
EffectType GetType () override
 
wxString GetFamily () override
 
bool IsInteractive () override
 
bool IsDefault () override
 
bool IsLegacy () override
 
bool SupportsRealtime () override
 
bool SupportsAutomation () override
 
bool SetHost (EffectHostInterface *host) override
 
unsigned GetAudioInCount () override
 
unsigned GetAudioOutCount () override
 
int GetMidiInCount () override
 
int GetMidiOutCount () override
 
sampleCount GetLatency () override
 
size_t GetTailSize () override
 
void SetSampleRate (double rate) override
 
size_t SetBlockSize (size_t maxBlockSize) override
 
bool IsReady () override
 
bool ProcessInitialize (sampleCount totalLen, ChannelNames chanMap=NULL) override
 
bool ProcessFinalize () override
 
size_t ProcessBlock (float **inBlock, float **outBlock, size_t blockLen) override
 
bool RealtimeInitialize () override
 
bool RealtimeAddProcessor (unsigned numChannels, float sampleRate) override
 
bool RealtimeFinalize () override
 
bool RealtimeSuspend () override
 
bool RealtimeResume () override
 
bool RealtimeProcessStart () override
 
size_t RealtimeProcess (int group, float **inbuf, float **outbuf, size_t numSamples) override
 
bool RealtimeProcessEnd () override
 
bool ShowInterface (wxWindow *parent, bool forceModal=false) override
 
bool GetAutomationParameters (EffectAutomationParameters &parms) override
 
bool SetAutomationParameters (EffectAutomationParameters &parms) override
 
bool LoadUserPreset (const wxString &name) override
 
bool SaveUserPreset (const wxString &name) override
 
wxArrayString GetFactoryPresets () override
 
bool LoadFactoryPreset (int id) override
 
bool LoadFactoryDefaults () override
 
void SetHostUI (EffectUIHostInterface *host) override
 
bool PopulateUI (wxWindow *parent) override
 
bool IsGraphicalUI () override
 
bool ValidateUI () override
 
bool HideUI () override
 
bool CloseUI () override
 
bool CanExportPresets () override
 
void ExportPresets () override
 
void ImportPresets () override
 
bool HasOptions () override
 
void ShowOptions () override
 
double GetDefaultDuration () override
 
double GetDuration () override
 
wxString GetDurationFormat () override
 
virtual wxString GetSelectionFormat ()
 
void SetDuration (double duration) override
 
bool Apply () override
 
void Preview () override
 
wxDialog * CreateUI (wxWindow *parent, EffectUIClientInterface *client) override
 
wxString GetUserPresetsGroup (const wxString &name) override
 
wxString GetCurrentSettingsGroup () override
 
wxString GetFactoryDefaultsGroup () override
 
virtual wxString GetSavedStateGroup ()
 
bool HasSharedConfigGroup (const wxString &group) override
 
bool GetSharedConfigSubgroups (const wxString &group, wxArrayString &subgroups) override
 
bool GetSharedConfig (const wxString &group, const wxString &key, wxString &value, const wxString &defval=wxEmptyString) override
 
bool GetSharedConfig (const wxString &group, const wxString &key, int &value, int defval=0) override
 
bool GetSharedConfig (const wxString &group, const wxString &key, bool &value, bool defval=false) override
 
bool GetSharedConfig (const wxString &group, const wxString &key, float &value, float defval=0.0) override
 
bool GetSharedConfig (const wxString &group, const wxString &key, double &value, double defval=0.0) override
 
bool SetSharedConfig (const wxString &group, const wxString &key, const wxString &value) override
 
bool SetSharedConfig (const wxString &group, const wxString &key, const int &value) override
 
bool SetSharedConfig (const wxString &group, const wxString &key, const bool &value) override
 
bool SetSharedConfig (const wxString &group, const wxString &key, const float &value) override
 
bool SetSharedConfig (const wxString &group, const wxString &key, const double &value) override
 
bool RemoveSharedConfigSubgroup (const wxString &group) override
 
bool RemoveSharedConfig (const wxString &group, const wxString &key) override
 
bool HasPrivateConfigGroup (const wxString &group) override
 
bool GetPrivateConfigSubgroups (const wxString &group, wxArrayString &subgroups) override
 
bool GetPrivateConfig (const wxString &group, const wxString &key, wxString &value, const wxString &defval=wxEmptyString) override
 
bool GetPrivateConfig (const wxString &group, const wxString &key, int &value, int defval=0) override
 
bool GetPrivateConfig (const wxString &group, const wxString &key, bool &value, bool defval=false) override
 
bool GetPrivateConfig (const wxString &group, const wxString &key, float &value, float defval=0.0) override
 
bool GetPrivateConfig (const wxString &group, const wxString &key, double &value, double defval=0.0) override
 
bool SetPrivateConfig (const wxString &group, const wxString &key, const wxString &value) override
 
bool SetPrivateConfig (const wxString &group, const wxString &key, const int &value) override
 
bool SetPrivateConfig (const wxString &group, const wxString &key, const bool &value) override
 
bool SetPrivateConfig (const wxString &group, const wxString &key, const float &value) override
 
bool SetPrivateConfig (const wxString &group, const wxString &key, const double &value) override
 
bool RemovePrivateConfigSubgroup (const wxString &group) override
 
bool RemovePrivateConfig (const wxString &group, const wxString &key) override
 
virtual PluginID GetID ()
 
virtual bool Startup (EffectClientInterface *client)
 
virtual bool GetAutomationParameters (wxString &parms)
 
virtual bool SetAutomationParameters (const wxString &parms)
 
virtual wxArrayString GetUserPresets ()
 
virtual bool HasCurrentSettings ()
 
virtual bool HasFactoryDefaults ()
 
virtual wxString GetPreset (wxWindow *parent, const wxString &parms)
 
virtual wxString HelpPage ()
 
virtual bool IsBatchProcessing ()
 
virtual void SetBatchProcessing (bool start)
 
void SetPresetParameters (const wxArrayString *Names, const wxArrayString *Values)
 
bool DoEffect (wxWindow *parent, double projectRate, TrackList *list, TrackFactory *factory, SelectedRegion *selectedRegion, bool shouldPrompt=true)
 
bool Delegate (Effect &delegate, wxWindow *parent, SelectedRegion *selectedRegion, bool shouldPrompt)
 
bool RealtimeAddProcessor (int group, unsigned chans, float rate)
 
size_t RealtimeProcess (int group, unsigned chans, float **inbuf, float **outbuf, size_t numSamples)
 
bool IsRealtimeActive ()
 
virtual bool IsHidden ()
 
int MessageBox (const wxString &message, long style=DefaultMessageBoxStyle, const wxString &titleStr=wxString{})
 

Private Member Functions

bool TransferGraphLimitsFromWindow ()
 
bool CalcFilter ()
 
double ChebyPoly (int Order, double NormFreq)
 
float FilterMagnAtFreq (float Freq)
 
bool CalcFilterCoeffs (void)
 
void EnableDisableRippleCtl (int FilterType)
 
void OnSize (wxSizeEvent &evt)
 
void OnSlider (wxCommandEvent &evt)
 
void OnOrder (wxCommandEvent &evt)
 
void OnCutoff (wxCommandEvent &evt)
 
void OnRipple (wxCommandEvent &evt)
 
void OnStopbandRipple (wxCommandEvent &evt)
 
void OnFilterType (wxCommandEvent &evt)
 
void OnFilterSubtype (wxCommandEvent &evt)
 
void OnSliderDBMAX (wxCommandEvent &evt)
 
void OnSliderDBMIN (wxCommandEvent &evt)
 

Private Attributes

float mCutoff
 
float mRipple
 
float mStopbandRipple
 
int mFilterType
 
int mFilterSubtype
 
int mOrder
 
int mOrderIndex
 
ArrayOf< BiquadStructmpBiquad
 
double mdBMax
 
double mdBMin
 
bool mEditingBatchParams
 
double mLoFreq
 
double mNyquist
 
EffectScienFilterPanelmPanel
 
wxSlider * mdBMinSlider
 
wxSlider * mdBMaxSlider
 
wxStaticText * mRippleCtlP
 
wxTextCtrl * mRippleCtl
 
wxStaticText * mRippleCtlU
 
wxTextCtrl * mCutoffCtl
 
wxStaticText * mStopbandRippleCtlP
 
wxTextCtrl * mStopbandRippleCtl
 
wxStaticText * mStopbandRippleCtlU
 
wxChoice * mFilterTypeCtl
 
wxChoice * mFilterSubTypeCtl
 
wxChoice * mFilterOrderCtl
 
RulerPanelmdBRuler
 
RulerPanelmfreqRuler
 

Friends

class EffectScienFilterPanel
 

Additional Inherited Members

- Public Types inherited from Effect
enum  : long { DefaultMessageBoxStyle = wxOK | wxCENTRE }
 
- Protected Member Functions inherited from Effect
virtual bool PromptUser (wxWindow *parent)
 
virtual bool CheckWhetherSkipEffect ()
 
virtual bool Process ()
 
virtual bool ProcessPass ()
 
virtual bool InitPass1 ()
 
virtual bool InitPass2 ()
 
virtual int GetPass ()
 
virtual void End ()
 
virtual double CalcPreviewInputLength (double previewLength)
 
virtual void Preview (bool dryOnly)
 
virtual bool EnableApply (bool enable=true)
 
virtual bool EnablePreview (bool enable=true)
 
virtual void EnableDebug (bool enable=true)
 
bool TotalProgress (double frac)
 
bool TrackProgress (int whichTrack, double frac, const wxString &=wxEmptyString)
 
bool TrackGroupProgress (int whichGroup, double frac, const wxString &=wxEmptyString)
 
int GetNumWaveTracks ()
 
int GetNumWaveGroups ()
 
void GetSamples (const WaveTrack *track, sampleCount *start, sampleCount *len)
 
void SetLinearEffectFlag (bool linearEffectFlag)
 
void SetPreviewFullSelectionFlag (bool previewDurationFlag)
 
bool IsPreviewing ()
 
void IncludeNotSelectedPreviewTracks (bool includeNotSelected)
 
void CopyInputTracks ()
 
void CopyInputTracks (int trackType)
 
std::shared_ptr
< AddedAnalysisTrack
AddAnalysisTrack (const wxString &name=wxString())
 
ModifiedAnalysisTrack ModifyAnalysisTrack (const LabelTrack *pOrigTrack, const wxString &name=wxString())
 
void ReplaceProcessedTracks (const bool bGoodResult)
 
TrackAddToOutputTracks (std::unique_ptr< Track > &&t)
 
TrackListinputTracks () const
 
- Protected Attributes inherited from Effect
ProgressDialogmProgress
 
double mProjectRate
 
double mSampleRate
 
TrackFactorymFactory
 
std::shared_ptr< TrackListmOutputTracks
 
double mT0
 
double mT1
 
double mF0
 
double mF1
 
wxArrayString mPresetNames
 
wxArrayString mPresetValues
 
int mPass
 
wxDialog * mUIDialog
 
wxWindow * mUIParent
 
int mUIResultID
 
sampleCount mSampleCnt
 
int mOutputTracksType
 

Detailed Description

An Effect that applies 'classical' IIR filters.

Performs IIR filtering that emulates analog filters, specifically Butterworth, Chebyshev Type I and Type II. Highpass and lowpass filters are supported, as are filter orders from 1 to 10.

The filter is applied using biquads

Constructor & Destructor Documentation

EffectScienFilter::EffectScienFilter ( )
EffectScienFilter::~EffectScienFilter ( )
virtual

Member Function Documentation

bool EffectScienFilter::CalcFilterCoeffs ( void  )
private
double EffectScienFilter::ChebyPoly ( int  Order,
double  NormFreq 
)
private

Referenced by FilterMagnAtFreq().

void EffectScienFilter::EnableDisableRippleCtl ( int  FilterType)
private
float EffectScienFilter::FilterMagnAtFreq ( float  Freq)
private
unsigned EffectScienFilter::GetAudioInCount ( )
override
unsigned EffectScienFilter::GetAudioOutCount ( )
override
bool EffectScienFilter::GetAutomationParameters ( EffectAutomationParameters &  parms)
override
wxString EffectScienFilter::GetDescription ( )
override

References XO.

wxString EffectScienFilter::GetSymbol ( )
override
EffectType EffectScienFilter::GetType ( )
override
wxString EffectScienFilter::ManualPage ( )
overridevirtual

Reimplemented from Effect.

void EffectScienFilter::OnCutoff ( wxCommandEvent &  evt)
private
void EffectScienFilter::OnFilterSubtype ( wxCommandEvent &  evt)
private
void EffectScienFilter::OnFilterType ( wxCommandEvent &  evt)
private
void EffectScienFilter::OnOrder ( wxCommandEvent &  evt)
private
void EffectScienFilter::OnRipple ( wxCommandEvent &  evt)
private
void EffectScienFilter::OnSize ( wxSizeEvent &  evt)
private

References Effect::mUIParent.

void EffectScienFilter::OnSlider ( wxCommandEvent &  evt)
private
void EffectScienFilter::OnSliderDBMAX ( wxCommandEvent &  evt)
private
void EffectScienFilter::OnSliderDBMIN ( wxCommandEvent &  evt)
private
void EffectScienFilter::OnStopbandRipple ( wxCommandEvent &  evt)
private
void EffectScienFilter::PopulateOrExchange ( ShuttleGui S)
overridevirtual
size_t EffectScienFilter::ProcessBlock ( float **  inBlock,
float **  outBlock,
size_t  blockLen 
)
override

References Biquad_Process(), mOrder, and mpBiquad.

bool EffectScienFilter::ProcessInitialize ( sampleCount  totalLen,
ChannelNames  chanMap = NULL 
)
override

References mOrder, and mpBiquad.

bool EffectScienFilter::SetAutomationParameters ( EffectAutomationParameters &  parms)
override
bool EffectScienFilter::Startup ( )
overridevirtual
bool EffectScienFilter::TransferDataFromWindow ( )
overridevirtual

Reimplemented from Effect.

References CalcFilter(), mOrder, mOrderIndex, and Effect::mUIParent.

bool EffectScienFilter::TransferDataToWindow ( )
overridevirtual

Friends And Related Function Documentation

friend class EffectScienFilterPanel
friend

Referenced by PopulateOrExchange().

Member Data Documentation

wxTextCtrl* EffectScienFilter::mCutoffCtl
private

Referenced by PopulateOrExchange().

double EffectScienFilter::mdBMax
private
wxSlider* EffectScienFilter::mdBMaxSlider
private
double EffectScienFilter::mdBMin
private
wxSlider* EffectScienFilter::mdBMinSlider
private
RulerPanel* EffectScienFilter::mdBRuler
private
bool EffectScienFilter::mEditingBatchParams
private
wxChoice* EffectScienFilter::mFilterOrderCtl
private

Referenced by OnOrder(), and PopulateOrExchange().

wxChoice* EffectScienFilter::mFilterSubTypeCtl
private
wxChoice* EffectScienFilter::mFilterTypeCtl
private

Referenced by OnFilterType(), and PopulateOrExchange().

RulerPanel* EffectScienFilter::mfreqRuler
private
double EffectScienFilter::mLoFreq
private

Referenced by PopulateOrExchange().

double EffectScienFilter::mNyquist
private
int EffectScienFilter::mOrderIndex
private
ArrayOf<BiquadStruct> EffectScienFilter::mpBiquad
private
wxTextCtrl* EffectScienFilter::mRippleCtl
private
wxStaticText* EffectScienFilter::mRippleCtlP
private
wxStaticText* EffectScienFilter::mRippleCtlU
private
float EffectScienFilter::mStopbandRipple
private
wxTextCtrl* EffectScienFilter::mStopbandRippleCtl
private
wxStaticText* EffectScienFilter::mStopbandRippleCtlP
private
wxStaticText* EffectScienFilter::mStopbandRippleCtlU
private

The documentation for this class was generated from the following files: