![]() |
Audacity 3.2.0
|
An Effect that applies 'classical' IIR filters. More...
#include <ScienFilterBase.h>
Public Member Functions | |
| ScienFilterBase () | |
| virtual | ~ScienFilterBase () |
| ComponentInterfaceSymbol | GetSymbol () const override |
| TranslatableString | GetDescription () const override |
| ManualPageID | ManualPage () const override |
| Name of a page in the Audacity alpha manual, default is empty. More... | |
| EffectType | GetType () const override |
| Type determines how it behaves. More... | |
| unsigned | GetAudioInCount () const override |
| How many input buffers to allocate at once. More... | |
| unsigned | GetAudioOutCount () const override |
| How many output buffers to allocate at once. More... | |
| bool | ProcessInitialize (EffectSettings &settings, double sampleRate, ChannelNames chanMap) override |
| size_t | ProcessBlock (EffectSettings &settings, const float *const *inBlock, float *const *outBlock, size_t blockLen) override |
| Called for destructive effect computation. More... | |
| bool | Init () override |
Public Member Functions inherited from StatefulPerTrackEffect | |
| ~StatefulPerTrackEffect () override | |
| std::shared_ptr< EffectInstance > | MakeInstance () const override |
| Make an object maintaining short-term state of an Effect. More... | |
| size_t | SetBlockSize (size_t maxBlockSize) override |
| size_t | GetBlockSize () const override |
| bool | ProcessInitialize (EffectSettings &settings, double sampleRate, ChannelNames chanMap=nullptr) override |
| bool | ProcessFinalize () noexcept override |
| virtual size_t | ProcessBlock (EffectSettings &settings, const float *const *inBlock, float *const *outBlock, size_t blockLen)=0 |
| Called for destructive effect computation. More... | |
Public Member Functions inherited from StatefulEffectBase | |
| virtual bool | Init () |
| virtual bool | Process (EffectInstance &instance, EffectSettings &settings)=0 |
| virtual bool | RealtimeInitialize (EffectSettings &settings, double sampleRate) |
| virtual bool | RealtimeAddProcessor (EffectSettings &settings, EffectOutputs *pOutputs, unsigned numChannels, float sampleRate) |
| virtual bool | RealtimeSuspend () |
| virtual bool | RealtimeResume () |
| virtual bool | RealtimeProcessStart (MessagePackage &package) |
| settings are possibly changed, since last call, by an asynchronous dialog More... | |
| virtual size_t | RealtimeProcess (size_t group, EffectSettings &settings, const float *const *inBuf, float *const *outBuf, size_t numSamples) |
| virtual bool | RealtimeProcessEnd (EffectSettings &settings) noexcept |
| settings can be updated to let a dialog change appearance at idle More... | |
| virtual bool | RealtimeFinalize (EffectSettings &settings) noexcept |
| virtual size_t | SetBlockSize (size_t maxBlockSize) |
| virtual size_t | GetBlockSize () const |
| virtual unsigned | GetAudioInCount () const |
| How many input buffers to allocate at once. More... | |
| virtual unsigned | GetAudioOutCount () const |
| How many output buffers to allocate at once. More... | |
| virtual sampleCount | GetLatency () const |
| virtual bool | NeedsDither () const |
| virtual bool | ProcessInitialize (EffectSettings &settings, double sampleRate, ChannelNames chanMap=nullptr) |
| virtual bool | ProcessFinalize () noexcept |
Public Member Functions inherited from PerTrackEffect | |
| ~PerTrackEffect () override | |
Public Member Functions inherited from Effect | |
| Effect () | |
| virtual | ~Effect () |
| PluginPath | GetPath () const override |
| bool | VisitSettings (SettingsVisitor &visitor, EffectSettings &settings) override |
| bool | VisitSettings (ConstSettingsVisitor &visitor, const EffectSettings &settings) const override |
| ComponentInterfaceSymbol | GetSymbol () const override |
| VendorSymbol | GetVendor () const override |
| wxString | GetVersion () const override |
| TranslatableString | GetDescription () const override |
| EffectFamilySymbol | GetFamily () const override |
| Report identifier and user-visible name of the effect protocol. More... | |
| bool | IsInteractive () const override |
| Whether the effect needs a dialog for entry of settings. More... | |
| bool | IsDefault () const override |
| Whether the effect sorts "above the line" in the menus. More... | |
| RealtimeSince | RealtimeSupport () const override |
| Since which version of Audacity has the effect supported realtime? More... | |
| bool | SupportsAutomation () const override |
| Whether the effect has any automatable controls. More... | |
| bool | SaveSettings (const EffectSettings &settings, CommandParameters &parms) const override |
| Store settings as keys and values. More... | |
| bool | LoadSettings (const CommandParameters &parms, EffectSettings &settings) const override |
| Restore settings from keys and values. More... | |
| OptionalMessage | LoadUserPreset (const RegistryPath &name, EffectSettings &settings) const override |
| bool | SaveUserPreset (const RegistryPath &name, const EffectSettings &settings) const override |
| Save settings in the configuration file as a user-named preset. More... | |
| RegistryPaths | GetFactoryPresets () const override |
| Report names of factory presets. More... | |
| OptionalMessage | LoadFactoryPreset (int id, EffectSettings &settings) const override |
| OptionalMessage | LoadFactoryDefaults (EffectSettings &settings) const override |
| virtual const EffectParameterMethods & | Parameters () const |
| bool | CanExportPresets () const override |
| Whether the effect supports export of presets to files, and importing too. More... | |
| bool | HasOptions () const override |
| const EffectSettingsManager & | GetDefinition () const override |
| virtual NumericFormatID | GetSelectionFormat () |
| bool | SaveSettingsAsString (const EffectSettings &settings, wxString &parms) const override |
| OptionalMessage | LoadSettingsFromString (const wxString &parms, EffectSettings &settings) const override |
| bool | IsBatchProcessing () const override |
| void | SetBatchProcessing () override |
| void | UnsetBatchProcessing () override |
| unsigned | TestUIFlags (unsigned mask) |
| bool | Delegate (Effect &delegate, EffectSettings &settings, InstanceFinder finder={}) |
| Re-invoke DoEffect on another Effect object that implements the work. More... | |
Public Member Functions inherited from EffectBase | |
| EffectBase () | |
| ~EffectBase () override | |
| bool | IsLinearEffect () const |
| bool | PreviewsFullSelection () const |
| void | SetTracks (TrackList *pTracks) |
| double | GetDefaultDuration () |
| virtual std::any | BeginPreview (const EffectSettings &settings) |
| Called when Preview() starts, to allow temporary effect state changes. More... | |
| bool | DoEffect (EffectSettings &settings, const InstanceFinder &finder, double projectRate, TrackList *list, WaveTrackFactory *factory, NotifyingSelectedRegion &selectedRegion, unsigned flags, const EffectSettingsAccessPtr &pAccess) override |
| virtual double | CalcPreviewInputLength (const EffectSettings &settings, double previewLength) const =0 |
| void | CountWaveTracks () |
Public Member Functions inherited from EffectPlugin | |
| EffectPlugin & | operator= (EffectPlugin &)=delete |
| virtual | ~EffectPlugin () |
| virtual bool | HasOptions () const =0 |
| virtual bool | CanExportPresets () const =0 |
| Whether the effect supports export of presets to files, and importing too. More... | |
| virtual const EffectSettingsManager & | GetDefinition () const =0 |
| virtual bool | SaveSettingsAsString (const EffectSettings &settings, wxString &parms) const =0 |
| virtual OptionalMessage | LoadSettingsFromString (const wxString &parms, EffectSettings &settings) const =0 |
| virtual bool | IsBatchProcessing () const =0 |
| virtual void | SetBatchProcessing ()=0 |
| virtual void | UnsetBatchProcessing ()=0 |
| virtual bool | DoEffect (EffectSettings &settings, const InstanceFinder &finder, double projectRate, TrackList *list, WaveTrackFactory *factory, NotifyingSelectedRegion &selectedRegion, unsigned flags, const EffectSettingsAccessPtr &pAccess=nullptr)=0 |
Public Member Functions inherited from EffectInstanceFactory | |
| virtual | ~EffectInstanceFactory () |
| virtual std::shared_ptr< EffectInstance > | MakeInstance () const =0 |
| Make an object maintaining short-term state of an Effect. More... | |
Public Member Functions inherited from EffectSettingsManager | |
| virtual | ~EffectSettingsManager () |
| virtual bool | VisitSettings (SettingsVisitor &visitor, EffectSettings &settings) |
| virtual bool | VisitSettings (ConstSettingsVisitor &visitor, const EffectSettings &settings) const |
| virtual EffectSettings | MakeSettings () const |
| virtual bool | CopySettingsContents (const EffectSettings &src, EffectSettings &dst) const |
| Update one settings object from another. More... | |
| virtual std::unique_ptr< EffectOutputs > | MakeOutputs () const |
| Produce an object to hold values to send to effect output meters. More... | |
Public Member Functions inherited from EffectDefinitionInterface | |
| virtual | ~EffectDefinitionInterface () |
| virtual EffectType | GetType () const =0 |
| Type determines how it behaves. More... | |
| virtual EffectType | GetClassification () const |
| Determines which menu it appears in; default same as GetType(). More... | |
| virtual EffectFamilySymbol | GetFamily () const =0 |
| Report identifier and user-visible name of the effect protocol. More... | |
| virtual bool | IsInteractive () const =0 |
| Whether the effect needs a dialog for entry of settings. More... | |
| virtual bool | IsDefault () const =0 |
| Whether the effect sorts "above the line" in the menus. More... | |
| virtual RealtimeSince | RealtimeSupport () const =0 |
| Since which version of Audacity has the effect supported realtime? More... | |
| bool | SupportsRealtime () const |
| virtual bool | SupportsAutomation () const =0 |
| Whether the effect has any automatable controls. More... | |
| virtual bool | EnablesDebug () const |
| Whether the effect dialog should have a Debug button; default, always false. More... | |
| virtual ManualPageID | ManualPage () const |
| Name of a page in the Audacity alpha manual, default is empty. More... | |
| virtual FilePath | HelpPage () const |
| Fully qualified local help file name, default is empty. More... | |
| virtual bool | IsHiddenFromMenus () const |
| Default is false. More... | |
Public Member Functions inherited from ComponentInterface | |
| virtual | ~ComponentInterface () |
| virtual PluginPath | GetPath () const =0 |
| virtual ComponentInterfaceSymbol | GetSymbol () const =0 |
| virtual VendorSymbol | GetVendor () const =0 |
| virtual wxString | GetVersion () const =0 |
| virtual TranslatableString | GetDescription () const =0 |
| TranslatableString | GetName () const |
Static Public Member Functions | |
| static ScienFilterBase * | FetchParameters (ScienFilterBase &e, EffectSettings &) |
Static Public Member Functions inherited from Effect | |
| static Effect * | FetchParameters (Effect &e, EffectSettings &) |
Static Public Member Functions inherited from EffectBase | |
| static std::optional< InstancePointer > | FindInstance (EffectPlugin &plugin) |
| static InstanceFinder | DefaultInstanceFinder (EffectPlugin &plugin) |
Static Public Member Functions inherited from EffectDefinitionInterface | |
| static Identifier | GetSquashedName (const Identifier &ident) |
| A utility that strips spaces and CamelCases a name. More... | |
Static Public Attributes | |
| static const ComponentInterfaceSymbol | Symbol |
Static Public Attributes inherited from EffectPlugin | |
| static const wxString | kUserPresetIdent = wxT("User Preset:") |
| static const wxString | kFactoryPresetIdent = wxT("Factory Preset:") |
| static const wxString | kCurrentSettingsIdent = wxT("<Current Settings>") |
| static const wxString | kFactoryDefaultsIdent = wxT("<Factory Defaults>") |
Protected Types | |
| enum | kSubTypes { kLowPass = Biquad::kLowPass , kHighPass = Biquad::kHighPass , nSubTypes = Biquad::nSubTypes } |
| enum | kTypes { kButterworth , kChebyshevTypeI , kChebyshevTypeII , nTypes } |
Protected Member Functions | |
| void | CalcFilter () |
| float | FilterMagnAtFreq (float Freq) |
| const EffectParameterMethods & | Parameters () const override |
Protected Member Functions inherited from PerTrackEffect | |
| bool | DoPass1 () const |
| bool | DoPass2 () const |
| bool | Process (EffectInstance &instance, EffectSettings &settings) const |
| std::shared_ptr< EffectOutputTracks > | MakeOutputTracks () |
| void | DestroyOutputTracks () const |
Protected Member Functions inherited from Effect | |
| bool | CheckWhetherSkipEffect (const EffectSettings &settings) const override |
| Default implementation returns false. More... | |
| double | CalcPreviewInputLength (const EffectSettings &settings, double previewLength) const override |
Default implementation returns previewLength More... | |
| bool | TotalProgress (double frac, const TranslatableString &={}) const |
| bool | TrackProgress (int whichTrack, double frac, const TranslatableString &={}) const |
| bool | TrackGroupProgress (int whichGroup, double frac, const TranslatableString &={}) const |
| int | GetNumWaveTracks () const |
| int | GetNumWaveGroups () const |
| void | GetBounds (const WaveTrack &track, sampleCount *start, sampleCount *len) |
Protected Member Functions inherited from EffectBase | |
| virtual bool | CheckWhetherSkipEffect (const EffectSettings &settings) const =0 |
| After Init(), tell whether Process() should be skipped. More... | |
| void | SetLinearEffectFlag (bool linearEffectFlag) |
| void | SetPreviewFullSelectionFlag (bool previewDurationFlag) |
| bool | IsPreviewing () const |
| const TrackList * | inputTracks () const |
| const AudacityProject * | FindProject () const |
Protected Attributes | |
| float | mCutoff |
| float | mRipple |
| float | mStopbandRipple |
| int | mFilterType |
| int | mFilterSubtype |
| int | mOrder |
| int | mOrderIndex |
| ArrayOf< Biquad > | mpBiquad |
| double | mdBMax |
| double | mdBMin |
| bool | mEditingBatchParams |
| double | mLoFreq |
| double | mNyquist |
Protected Attributes inherited from PerTrackEffect | |
| sampleCount | mSampleCnt {} |
Protected Attributes inherited from EffectBase | |
| double | mF0 {} |
| double | mF1 {} |
| wxArrayString | mPresetNames |
| unsigned | mUIFlags { 0 } |
Static Protected Attributes | |
| static const EnumValueSymbol | kSubTypeStrings [nSubTypes] |
| static const EnumValueSymbol | kTypeStrings [nTypes] |
| static constexpr EnumParameter | Type |
| static constexpr EnumParameter | Subtype |
| static constexpr EffectParameter | Order |
| static constexpr EffectParameter | Cutoff |
| static constexpr EffectParameter | Passband |
| static constexpr EffectParameter | Stopband |
Additional Inherited Members | |
Public Types inherited from StatefulEffectBase | |
| using | MessagePackage = EffectInstance::MessagePackage |
Public Types inherited from EffectPlugin | |
| using | EffectSettingsAccessPtr = std::shared_ptr< EffectSettingsAccess > |
| using | InstancePointer = std::shared_ptr< EffectInstanceEx > |
| using | InstanceFinder = std::function< std::optional< InstancePointer >(EffectSettings &settings) > |
Public Types inherited from EffectDefinitionInterface | |
| enum class | RealtimeSince : unsigned { Never , After_3_1 , Always } |
| In which versions of Audacity was an effect realtime capable? More... | |
Public Attributes inherited from EffectBase | |
| std::shared_ptr< TrackList > | mTracks {} |
| int | mNumTracks {} |
| BasicUI::ProgressDialog * | mProgress {} |
| double | mProjectRate {} |
| WaveTrackFactory * | mFactory {} |
| double | mT0 {} |
| double | mT1 {} |
| bool | mIsPreview { false } |
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
Definition at line 19 of file ScienFilterBase.h.
|
protected |
|
protected |
| Enumerator | |
|---|---|
| kButterworth | |
| kChebyshevTypeI | |
| kChebyshevTypeII | |
| nTypes | |
Definition at line 87 of file ScienFilterBase.h.
| ScienFilterBase::ScienFilterBase | ( | ) |
Definition at line 80 of file ScienFilterBase.cpp.
References mdBMax, mdBMin, mLoFreq, mNyquist, mOrder, mOrderIndex, Parameters(), EffectParameterMethods::Reset(), and EffectBase::SetLinearEffectFlag().
Referenced by Parameters().
|
virtual |
Definition at line 96 of file ScienFilterBase.cpp.
|
protected |
Definition at line 190 of file ScienFilterBase.cpp.
References Biquad::CalcButterworthFilter(), Biquad::CalcChebyshevType1Filter(), Biquad::CalcChebyshevType2Filter(), kButterworth, kChebyshevTypeI, kChebyshevTypeII, mCutoff, mFilterSubtype, mFilterType, mNyquist, mOrder, mpBiquad, mRipple, and mStopbandRipple.
Referenced by EffectScienFilter::TransferDataFromWindow().
|
inlinestatic |
Definition at line 23 of file ScienFilterBase.h.
|
protected |
Definition at line 209 of file ScienFilterBase.cpp.
References Biquad::ChebyPoly(), kButterworth, kChebyshevTypeI, kChebyshevTypeII, kHighPass, kLowPass, mCutoff, mFilterSubtype, mFilterType, mNyquist, mOrder, mRipple, mStopbandRipple, PI, staffpad::audio::simd::sqrt(), and square.
Referenced by EffectScienFilterPanel::OnPaint().
|
overridevirtual |
How many input buffers to allocate at once.
If the instance processes channels independently, this can return 1 The result is not necessarily well defined before RealtimeInitialize Default implementation returns 0
Reimplemented from StatefulEffectBase.
Definition at line 125 of file ScienFilterBase.cpp.
|
overridevirtual |
How many output buffers to allocate at once.
The result is not necessarily well defined before RealtimeInitialize Default implementation returns 0
Reimplemented from StatefulEffectBase.
Definition at line 130 of file ScienFilterBase.cpp.
|
overridevirtual |
Implements ComponentInterface.
Definition at line 107 of file ScienFilterBase.cpp.
References XO().
|
overridevirtual |
Implements ComponentInterface.
Definition at line 102 of file ScienFilterBase.cpp.
References Symbol.
|
overridevirtual |
Type determines how it behaves.
Implements EffectDefinitionInterface.
Definition at line 120 of file ScienFilterBase.cpp.
References EffectTypeProcess.
|
overridevirtual |
Default implementation does nothing, returns true
Reimplemented from StatefulEffectBase.
Definition at line 159 of file ScienFilterBase.cpp.
References EffectBase::inputTracks(), mNyquist, EffectBase::mProjectRate, TrackList::Selected(), BasicUI::ShowMessageBox(), and XO().
|
overridevirtual |
Name of a page in the Audacity alpha manual, default is empty.
Reimplemented from EffectDefinitionInterface.
Definition at line 113 of file ScienFilterBase.cpp.
|
overrideprotectedvirtual |
Reimplemented from Effect.
Definition at line 55 of file ScienFilterBase.cpp.
References Cutoff, Order, Passband, ScienFilterBase(), Stopband, Subtype, and Type.
Referenced by ScienFilterBase().
|
overridevirtual |
Called for destructive effect computation.
Implements StatefulPerTrackEffect.
Definition at line 143 of file ScienFilterBase.cpp.
|
overridevirtual |
Called at start of destructive processing, for each (mono/stereo) track Default implementation does nothing, returns true
| chanMap | null or array terminated with ChannelNameEOL. Do not retain the pointer |
GetAudioInCount() and GetAudioOutCount() are well defined Reimplemented from StatefulEffectBase.
Definition at line 135 of file ScienFilterBase.cpp.
|
staticconstexprprotected |
Definition at line 117 of file ScienFilterBase.h.
Referenced by Parameters().
|
staticprotected |
Definition at line 85 of file ScienFilterBase.h.
|
staticprotected |
Definition at line 94 of file ScienFilterBase.h.
|
protected |
Definition at line 61 of file ScienFilterBase.h.
Referenced by CalcFilter(), and FilterMagnAtFreq().
|
protected |
Definition at line 70 of file ScienFilterBase.h.
Referenced by ScienFilterBase(), EffectScienFilter::TransferDataToWindow(), and EffectScienFilter::TransferGraphLimitsFromWindow().
|
protected |
Definition at line 71 of file ScienFilterBase.h.
Referenced by ScienFilterBase(), EffectScienFilter::TransferDataToWindow(), and EffectScienFilter::TransferGraphLimitsFromWindow().
|
protected |
Definition at line 72 of file ScienFilterBase.h.
|
protected |
Definition at line 65 of file ScienFilterBase.h.
Referenced by CalcFilter(), FilterMagnAtFreq(), and EffectScienFilter::OnFilterSubtype().
|
protected |
Definition at line 64 of file ScienFilterBase.h.
Referenced by CalcFilter(), FilterMagnAtFreq(), EffectScienFilter::OnFilterType(), and EffectScienFilter::TransferDataToWindow().
|
protected |
Definition at line 74 of file ScienFilterBase.h.
Referenced by ScienFilterBase().
|
protected |
Definition at line 75 of file ScienFilterBase.h.
Referenced by CalcFilter(), FilterMagnAtFreq(), Init(), and ScienFilterBase().
|
protected |
Definition at line 66 of file ScienFilterBase.h.
Referenced by CalcFilter(), FilterMagnAtFreq(), EffectScienFilter::OnOrder(), ProcessBlock(), ProcessInitialize(), ScienFilterBase(), EffectScienFilter::TransferDataFromWindow(), and EffectScienFilter::TransferDataToWindow().
|
protected |
Definition at line 67 of file ScienFilterBase.h.
Referenced by EffectScienFilter::OnOrder(), ScienFilterBase(), EffectScienFilter::TransferDataFromWindow(), and EffectScienFilter::TransferDataToWindow().
Definition at line 68 of file ScienFilterBase.h.
Referenced by CalcFilter(), ProcessBlock(), and ProcessInitialize().
|
protected |
Definition at line 62 of file ScienFilterBase.h.
Referenced by CalcFilter(), and FilterMagnAtFreq().
|
protected |
Definition at line 63 of file ScienFilterBase.h.
Referenced by CalcFilter(), and FilterMagnAtFreq().
|
staticconstexprprotected |
Definition at line 114 of file ScienFilterBase.h.
Referenced by Parameters().
|
staticconstexprprotected |
Definition at line 120 of file ScienFilterBase.h.
Referenced by Parameters().
|
staticconstexprprotected |
Definition at line 123 of file ScienFilterBase.h.
Referenced by Parameters().
|
staticconstexprprotected |
Definition at line 106 of file ScienFilterBase.h.
Referenced by Parameters().
|
static |
Definition at line 27 of file ScienFilterBase.h.
Referenced by GetSymbol().
|
staticconstexprprotected |
Definition at line 98 of file ScienFilterBase.h.
Referenced by Parameters().