Audacity  3.0.3
Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
EffectPhaser Class Referencefinal

An Effect that changes frequencies in a time varying manner. More...

#include <Phaser.h>

Inheritance diagram for EffectPhaser:
[legend]
Collaboration diagram for EffectPhaser:
[legend]

Public Member Functions

 EffectPhaser ()
 
virtual ~EffectPhaser ()
 
ComponentInterfaceSymbol GetSymbol () override
 
TranslatableString GetDescription () override
 
wxString ManualPage () override
 
EffectType GetType () override
 
bool SupportsRealtime () 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 RealtimeInitialize () override
 
bool RealtimeAddProcessor (unsigned numChannels, float sampleRate) override
 
bool RealtimeFinalize () override
 
size_t RealtimeProcess (int group, float **inbuf, float **outbuf, size_t numSamples) override
 
bool DefineParams (ShuttleParams &S) override
 
bool GetAutomationParameters (CommandParameters &parms) override
 
bool SetAutomationParameters (CommandParameters &parms) override
 
void PopulateOrExchange (ShuttleGui &S) override
 
bool TransferDataToWindow () override
 
bool TransferDataFromWindow () override
 
- Public Member Functions inherited from Effect
 Effect ()
 
virtual ~Effect ()
 
PluginPath GetPath () override
 
VendorSymbol GetVendor () override
 
wxString GetVersion () override
 
EffectFamilySymbol GetFamily () override
 
bool IsInteractive () override
 
bool IsDefault () override
 
bool IsLegacy () override
 
bool SupportsAutomation () override
 
bool SetHost (EffectHostInterface *host) 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
 
size_t GetBlockSize () const override
 
bool IsReady () override
 
bool ProcessFinalize () override
 
bool RealtimeSuspend () override
 
bool RealtimeResume () override
 
bool RealtimeProcessStart () override
 
bool RealtimeProcessEnd () override
 
bool ShowInterface (wxWindow &parent, const EffectDialogFactory &factory, bool forceModal=false) override
 
bool LoadUserPreset (const RegistryPath &name) override
 
bool SaveUserPreset (const RegistryPath &name) override
 
RegistryPaths GetFactoryPresets () override
 
bool LoadFactoryPreset (int id) override
 
bool LoadFactoryDefaults () override
 
void SetHostUI (EffectUIHostInterface *host) override
 
bool PopulateUI (ShuttleGui &S) final
 
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
 
NumericFormatSymbol GetDurationFormat () override
 
virtual NumericFormatSymbol GetSelectionFormat ()
 
void SetDuration (double duration) override
 
RegistryPath GetUserPresetsGroup (const RegistryPath &name) override
 
RegistryPath GetCurrentSettingsGroup () override
 
RegistryPath GetFactoryDefaultsGroup () override
 
virtual wxString GetSavedStateGroup ()
 
bool HasSharedConfigGroup (const RegistryPath &group) override
 
bool GetSharedConfigSubgroups (const RegistryPath &group, RegistryPaths &subgroups) override
 
bool GetSharedConfig (const RegistryPath &group, const RegistryPath &key, wxString &value, const wxString &defval={}) override
 
bool GetSharedConfig (const RegistryPath &group, const RegistryPath &key, int &value, int defval=0) override
 
bool GetSharedConfig (const RegistryPath &group, const RegistryPath &key, bool &value, bool defval=false) override
 
bool GetSharedConfig (const RegistryPath &group, const RegistryPath &key, float &value, float defval=0.0) override
 
bool GetSharedConfig (const RegistryPath &group, const RegistryPath &key, double &value, double defval=0.0) override
 
bool SetSharedConfig (const RegistryPath &group, const RegistryPath &key, const wxString &value) override
 
bool SetSharedConfig (const RegistryPath &group, const RegistryPath &key, const int &value) override
 
bool SetSharedConfig (const RegistryPath &group, const RegistryPath &key, const bool &value) override
 
bool SetSharedConfig (const RegistryPath &group, const RegistryPath &key, const float &value) override
 
bool SetSharedConfig (const RegistryPath &group, const RegistryPath &key, const double &value) override
 
bool RemoveSharedConfigSubgroup (const RegistryPath &group) override
 
bool RemoveSharedConfig (const RegistryPath &group, const RegistryPath &key) override
 
bool HasPrivateConfigGroup (const RegistryPath &group) override
 
bool GetPrivateConfigSubgroups (const RegistryPath &group, RegistryPaths &paths) override
 
bool GetPrivateConfig (const RegistryPath &group, const RegistryPath &key, wxString &value, const wxString &defval={}) override
 
bool GetPrivateConfig (const RegistryPath &group, const RegistryPath &key, int &value, int defval=0) override
 
bool GetPrivateConfig (const RegistryPath &group, const RegistryPath &key, bool &value, bool defval=false) override
 
bool GetPrivateConfig (const RegistryPath &group, const RegistryPath &key, float &value, float defval=0.0) override
 
bool GetPrivateConfig (const RegistryPath &group, const RegistryPath &key, double &value, double defval=0.0) override
 
bool SetPrivateConfig (const RegistryPath &group, const RegistryPath &key, const wxString &value) override
 
bool SetPrivateConfig (const RegistryPath &group, const RegistryPath &key, const int &value) override
 
bool SetPrivateConfig (const RegistryPath &group, const RegistryPath &key, const bool &value) override
 
bool SetPrivateConfig (const RegistryPath &group, const RegistryPath &key, const float &value) override
 
bool SetPrivateConfig (const RegistryPath &group, const RegistryPath &key, const double &value) override
 
bool RemovePrivateConfigSubgroup (const RegistryPath &group) override
 
bool RemovePrivateConfig (const RegistryPath &group, const RegistryPath &key) override
 
virtual PluginID GetID ()
 
virtual bool Startup (EffectClientInterface *client)
 
virtual bool Startup ()
 
virtual bool GetAutomationParameters (wxString &parms)
 
virtual bool SetAutomationParameters (const wxString &parms)
 
virtual RegistryPaths GetUserPresets ()
 
virtual bool HasCurrentSettings ()
 
virtual bool HasFactoryDefaults ()
 
virtual wxString HelpPage ()
 
virtual void SetUIFlags (unsigned flags)
 
virtual unsigned TestUIFlags (unsigned mask)
 
virtual bool IsBatchProcessing ()
 
virtual void SetBatchProcessing (bool start)
 
void SetPresetParameters (const wxArrayString *Names, const wxArrayString *Values)
 
bool DoEffect (double projectRate, TrackList *list, WaveTrackFactory *factory, NotifyingSelectedRegion &selectedRegion, wxWindow *pParent=nullptr, const EffectDialogFactory &dialogFactory={})
 
bool Delegate (Effect &delegate, wxWindow &parent, const EffectDialogFactory &factory)
 
virtual bool IsHidden ()
 
int MessageBox (const TranslatableString &message, long style=DefaultMessageBoxStyle, const TranslatableString &titleStr={})
 
- Public Member Functions inherited from EffectClientInterface
virtual ~EffectClientInterface ()
 
- Public Member Functions inherited from EffectDefinitionInterface
virtual ~EffectDefinitionInterface ()
 
virtual EffectType GetClassification ()
 
- Public Member Functions inherited from ComponentInterface
virtual ~ComponentInterface ()
 
TranslatableString GetName ()
 
virtual bool DefineParams (ShuttleParams &WXUNUSED(S))
 
- Public Member Functions inherited from EffectUIClientInterface
virtual ~EffectUIClientInterface ()
 
- Public Member Functions inherited from EffectHostInterface
virtual ~EffectHostInterface ()
 
- Public Member Functions inherited from ConfigClientInterface
virtual ~ConfigClientInterface ()
 

Static Public Attributes

static const ComponentInterfaceSymbol Symbol { XO("Phaser") }
 
- Static Public Attributes inherited from Effect
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>")
 

Private Member Functions

void InstanceInit (EffectPhaserState &data, float sampleRate)
 
size_t InstanceProcess (EffectPhaserState &data, float **inBlock, float **outBlock, size_t blockLen)
 
void OnStagesSlider (wxCommandEvent &evt)
 
void OnDryWetSlider (wxCommandEvent &evt)
 
void OnFeedbackSlider (wxCommandEvent &evt)
 
void OnDepthSlider (wxCommandEvent &evt)
 
void OnPhaseSlider (wxCommandEvent &evt)
 
void OnFreqSlider (wxCommandEvent &evt)
 
void OnGainSlider (wxCommandEvent &evt)
 
void OnStagesText (wxCommandEvent &evt)
 
void OnDryWetText (wxCommandEvent &evt)
 
void OnFeedbackText (wxCommandEvent &evt)
 
void OnDepthText (wxCommandEvent &evt)
 
void OnPhaseText (wxCommandEvent &evt)
 
void OnFreqText (wxCommandEvent &evt)
 
void OnGainText (wxCommandEvent &evt)
 

Private Attributes

EffectPhaserState mMaster
 
std::vector< EffectPhaserStatemSlaves
 
int mStages
 
int mDryWet
 
double mFreq
 
double mPhase
 
int mDepth
 
int mFeedback
 
double mOutGain
 
wxTextCtrl * mStagesT
 
wxTextCtrl * mDryWetT
 
wxTextCtrl * mFreqT
 
wxTextCtrl * mPhaseT
 
wxTextCtrl * mDepthT
 
wxTextCtrl * mFeedbackT
 
wxTextCtrl * mOutGainT
 
wxSlider * mStagesS
 
wxSlider * mDryWetS
 
wxSlider * mFreqS
 
wxSlider * mPhaseS
 
wxSlider * mDepthS
 
wxSlider * mFeedbackS
 
wxSlider * mOutGainS
 

Additional Inherited Members

- Public Types inherited from Effect
enum  : long { DefaultMessageBoxStyle = wxOK | wxCENTRE }
 
using VetoDialogHook = bool(*)(wxDialog *)
 
- Public Types inherited from EffectClientInterface
using EffectDialogFactory = std::function< wxDialog *(wxWindow &parent, EffectHostInterface *, EffectUIClientInterface *) >
 
- Static Public Member Functions inherited from Effect
static VetoDialogHook SetVetoDialogHook (VetoDialogHook hook)
 
static CommandID GetSquashedName (wxString name)
 
static void IncEffectCounter ()
 
- Protected Member Functions inherited from Effect
virtual bool Init ()
 
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, const TranslatableString &={})
 
bool TrackProgress (int whichTrack, double frac, const TranslatableString &={})
 
bool TrackGroupProgress (int whichGroup, double frac, const TranslatableString &={})
 
int GetNumWaveTracks ()
 
int GetNumWaveGroups ()
 
void GetBounds (const WaveTrack &track, const WaveTrack *pRight, sampleCount *start, sampleCount *len)
 
void SetLinearEffectFlag (bool linearEffectFlag)
 
void SetPreviewFullSelectionFlag (bool previewDurationFlag)
 
bool IsPreviewing ()
 
void IncludeNotSelectedPreviewTracks (bool includeNotSelected)
 
void CopyInputTracks (bool allSyncLockSelected=false)
 
std::shared_ptr< AddedAnalysisTrackAddAnalysisTrack (const wxString &name=wxString())
 
ModifiedAnalysisTrack ModifyAnalysisTrack (const LabelTrack *pOrigTrack, const wxString &name=wxString())
 
void ReplaceProcessedTracks (const bool bGoodResult)
 
TrackAddToOutputTracks (const std::shared_ptr< Track > &t)
 
const TrackListinputTracks () const
 
const AudacityProjectFindProject () const
 
- Protected Attributes inherited from Effect
ProgressDialogmProgress
 
double mProjectRate
 
double mSampleRate
 
wxWeakRef< NotifyingSelectedRegionmpSelectedRegion {}
 
WaveTrackFactorymFactory
 
std::shared_ptr< TrackListmOutputTracks
 
double mT0
 
double mT1
 
wxArrayString mPresetNames
 
wxArrayString mPresetValues
 
int mPass
 
wxDialog * mUIDialog
 
wxWindow * mUIParent
 
int mUIResultID
 
unsigned mUIFlags
 
sampleCount mSampleCnt
 
- Static Protected Attributes inherited from Effect
static int nEffectsDone =0
 

Detailed Description

An Effect that changes frequencies in a time varying manner.

Definition at line 42 of file Phaser.h.

Constructor & Destructor Documentation

◆ EffectPhaser()

EffectPhaser::EffectPhaser ( )

Definition at line 89 of file Phaser.cpp.

90 {
91  mStages = DEF_Stages;
92  mDryWet = DEF_DryWet;
93  mFreq = DEF_Freq;
94  mPhase = DEF_Phase;
95  mDepth = DEF_Depth;
96  mFeedback = DEF_Feedback;
97  mOutGain = DEF_OutGain;
98 
99  SetLinearEffectFlag(true);
100 }

◆ ~EffectPhaser()

EffectPhaser::~EffectPhaser ( )
virtual

Definition at line 102 of file Phaser.cpp.

103 {
104 }

Member Function Documentation

◆ DefineParams()

bool EffectPhaser::DefineParams ( ShuttleParams S)
override

Definition at line 202 of file Phaser.cpp.

202  {
203  S.SHUTTLE_PARAM( mStages, Stages );
204  S.SHUTTLE_PARAM( mDryWet, DryWet );
205  S.SHUTTLE_PARAM( mFreq, Freq );
206  S.SHUTTLE_PARAM( mPhase, Phase );
207  S.SHUTTLE_PARAM( mDepth, Depth );
208  S.SHUTTLE_PARAM( mFeedback, Feedback );
209  S.SHUTTLE_PARAM( mOutGain, OutGain );
210  return true;
211 }

References mDepth, mDryWet, mFeedback, mFreq, mOutGain, mPhase, and mStages.

◆ GetAudioInCount()

unsigned EffectPhaser::GetAudioInCount ( )
overridevirtual

Reimplemented from Effect.

Definition at line 141 of file Phaser.cpp.

142 {
143  return 1;
144 }

◆ GetAudioOutCount()

unsigned EffectPhaser::GetAudioOutCount ( )
overridevirtual

Reimplemented from Effect.

Definition at line 146 of file Phaser.cpp.

147 {
148  return 1;
149 }

◆ GetAutomationParameters()

bool EffectPhaser::GetAutomationParameters ( CommandParameters parms)
overridevirtual

Reimplemented from Effect.

Definition at line 213 of file Phaser.cpp.

214 {
215  parms.Write(KEY_Stages, mStages);
216  parms.Write(KEY_DryWet, mDryWet);
217  parms.Write(KEY_Freq, mFreq);
218  parms.Write(KEY_Phase, mPhase);
219  parms.Write(KEY_Depth, mDepth);
220  parms.Write(KEY_Feedback, mFeedback);
221  parms.Write(KEY_OutGain, mOutGain);
222 
223  return true;
224 }

References mDepth, mDryWet, mFeedback, mFreq, mOutGain, mPhase, and mStages.

◆ GetDescription()

TranslatableString EffectPhaser::GetDescription ( )
overridevirtual

Reimplemented from Effect.

Definition at line 113 of file Phaser.cpp.

114 {
115  return XO("Combines phase-shifted signals with the original signal");
116 }

References XO.

◆ GetSymbol()

ComponentInterfaceSymbol EffectPhaser::GetSymbol ( )
overridevirtual

Reimplemented from Effect.

Definition at line 108 of file Phaser.cpp.

109 {
110  return Symbol;
111 }

References Symbol.

◆ GetType()

EffectType EffectPhaser::GetType ( )
overridevirtual

Reimplemented from Effect.

Definition at line 125 of file Phaser.cpp.

126 {
127  return EffectTypeProcess;
128 }

References EffectTypeProcess.

◆ InstanceInit()

void EffectPhaser::InstanceInit ( EffectPhaserState data,
float  sampleRate 
)
private

Definition at line 382 of file Phaser.cpp.

383 {
384  data.samplerate = sampleRate;
385 
386  for (int j = 0; j < mStages; j++)
387  {
388  data.old[j] = 0;
389  }
390 
391  data.skipcount = 0;
392  data.gain = 0;
393  data.fbout = 0;
394  data.laststages = 0;
395  data.outgain = 0;
396 
397  return;
398 }

References EffectPhaserState::fbout, EffectPhaserState::gain, EffectPhaserState::laststages, mStages, EffectPhaserState::old, EffectPhaserState::outgain, EffectPhaserState::samplerate, and EffectPhaserState::skipcount.

Referenced by ProcessInitialize(), and RealtimeAddProcessor().

Here is the caller graph for this function:

◆ InstanceProcess()

size_t EffectPhaser::InstanceProcess ( EffectPhaserState data,
float **  inBlock,
float **  outBlock,
size_t  blockLen 
)
private

Definition at line 400 of file Phaser.cpp.

401 {
402  float *ibuf = inBlock[0];
403  float *obuf = outBlock[0];
404 
405  for (int j = data.laststages; j < mStages; j++)
406  {
407  data.old[j] = 0;
408  }
409  data.laststages = mStages;
410 
411  data.lfoskip = mFreq * 2 * M_PI / data.samplerate;
412  data.phase = mPhase * M_PI / 180;
413  data.outgain = DB_TO_LINEAR(mOutGain);
414 
415  for (decltype(blockLen) i = 0; i < blockLen; i++)
416  {
417  double in = ibuf[i];
418 
419  double m = in + data.fbout * mFeedback / 101; // Feedback must be less than 100% to avoid infinite gain.
420 
421  if (((data.skipcount++) % lfoskipsamples) == 0)
422  {
423  //compute sine between 0 and 1
424  data.gain =
425  (1.0 +
426  cos(data.skipcount.as_double() * data.lfoskip
427  + data.phase)) / 2.0;
428 
429  // change lfo shape
430  data.gain = expm1(data.gain * phaserlfoshape) / expm1(phaserlfoshape);
431 
432  // attenuate the lfo
433  data.gain = 1.0 - data.gain / 255.0 * mDepth;
434  }
435 
436  // phasing routine
437  for (int j = 0; j < mStages; j++)
438  {
439  double tmp = data.old[j];
440  data.old[j] = data.gain * tmp + m;
441  m = tmp - data.gain * data.old[j];
442  }
443  data.fbout = m;
444 
445  obuf[i] = (float) (data.outgain * (m * mDryWet + in * (255 - mDryWet)) / 255);
446  }
447 
448  return blockLen;
449 }

References sampleCount::as_double(), DB_TO_LINEAR(), EffectPhaserState::fbout, EffectPhaserState::gain, EffectPhaserState::laststages, EffectPhaserState::lfoskip, lfoskipsamples, M_PI, mDepth, mDryWet, mFeedback, mFreq, mOutGain, mPhase, mStages, EffectPhaserState::old, EffectPhaserState::outgain, EffectPhaserState::phase, phaserlfoshape, EffectPhaserState::samplerate, and EffectPhaserState::skipcount.

Referenced by ProcessBlock(), and RealtimeProcess().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ManualPage()

wxString EffectPhaser::ManualPage ( )
overridevirtual

Reimplemented from Effect.

Definition at line 118 of file Phaser.cpp.

119 {
120  return wxT("Phaser");
121 }

◆ OnDepthSlider()

void EffectPhaser::OnDepthSlider ( wxCommandEvent &  evt)
private

Definition at line 483 of file Phaser.cpp.

484 {
485  mDepth = evt.GetInt() / SCL_Depth;
486  mDepthT->GetValidator()->TransferToWindow();
487  EnableApply(mUIParent->Validate());
488 }

References Effect::EnableApply(), mDepth, mDepthT, and Effect::mUIParent.

Here is the call graph for this function:

◆ OnDepthText()

void EffectPhaser::OnDepthText ( wxCommandEvent &  evt)
private

Definition at line 548 of file Phaser.cpp.

549 {
550  if (!EnableApply(mUIParent->TransferDataFromWindow()))
551  {
552  return;
553  }
554 
555  mDepthS->SetValue((int) (mDepth * SCL_Depth));
556 }

References Effect::EnableApply(), mDepth, mDepthS, and Effect::mUIParent.

Here is the call graph for this function:

◆ OnDryWetSlider()

void EffectPhaser::OnDryWetSlider ( wxCommandEvent &  evt)
private

Definition at line 458 of file Phaser.cpp.

459 {
460  mDryWet = evt.GetInt() / SCL_DryWet;
461  mDryWetT->GetValidator()->TransferToWindow();
462  EnableApply(mUIParent->Validate());
463 }

References Effect::EnableApply(), mDryWet, mDryWetT, and Effect::mUIParent.

Here is the call graph for this function:

◆ OnDryWetText()

void EffectPhaser::OnDryWetText ( wxCommandEvent &  evt)
private

Definition at line 518 of file Phaser.cpp.

519 {
520  if (!EnableApply(mUIParent->TransferDataFromWindow()))
521  {
522  return;
523  }
524 
525  mDryWetS->SetValue((int) (mDryWet * SCL_DryWet));
526 }

References Effect::EnableApply(), mDryWet, mDryWetS, and Effect::mUIParent.

Here is the call graph for this function:

◆ OnFeedbackSlider()

void EffectPhaser::OnFeedbackSlider ( wxCommandEvent &  evt)
private

Definition at line 490 of file Phaser.cpp.

491 {
492  int val = evt.GetInt();
493  val = ((val + (val > 0 ? 5 : -5)) / 10) * 10; // round to nearest multiple of 10
494  val = val > MAX_Feedback * SCL_Feedback ? MAX_Feedback * SCL_Feedback : val;
495  mFeedbackS->SetValue(val);
496  mFeedback = val / SCL_Feedback;
497  mFeedbackT->GetValidator()->TransferToWindow();
498  EnableApply(mUIParent->Validate());
499 }

References Effect::EnableApply(), mFeedback, mFeedbackS, mFeedbackT, and Effect::mUIParent.

Here is the call graph for this function:

◆ OnFeedbackText()

void EffectPhaser::OnFeedbackText ( wxCommandEvent &  evt)
private

Definition at line 558 of file Phaser.cpp.

559 {
560  if (!EnableApply(mUIParent->TransferDataFromWindow()))
561  {
562  return;
563  }
564 
565  mFeedbackS->SetValue((int) (mFeedback * SCL_Feedback));
566 }

References Effect::EnableApply(), mFeedback, mFeedbackS, and Effect::mUIParent.

Here is the call graph for this function:

◆ OnFreqSlider()

void EffectPhaser::OnFreqSlider ( wxCommandEvent &  evt)
private

Definition at line 465 of file Phaser.cpp.

466 {
467  mFreq = (double) evt.GetInt() / SCL_Freq;
468  if (mFreq < MIN_Freq) mFreq = MIN_Freq;
469  mFreqT->GetValidator()->TransferToWindow();
470  EnableApply(mUIParent->Validate());
471 }

References Effect::EnableApply(), mFreq, mFreqT, and Effect::mUIParent.

Here is the call graph for this function:

◆ OnFreqText()

void EffectPhaser::OnFreqText ( wxCommandEvent &  evt)
private

Definition at line 528 of file Phaser.cpp.

529 {
530  if (!EnableApply(mUIParent->TransferDataFromWindow()))
531  {
532  return;
533  }
534 
535  mFreqS->SetValue((int) (mFreq * SCL_Freq));
536 }

References Effect::EnableApply(), mFreq, mFreqS, and Effect::mUIParent.

Here is the call graph for this function:

◆ OnGainSlider()

void EffectPhaser::OnGainSlider ( wxCommandEvent &  evt)
private

Definition at line 501 of file Phaser.cpp.

502 {
503  mOutGain = evt.GetInt() / SCL_OutGain;
504  mOutGainT->GetValidator()->TransferToWindow();
505  EnableApply(mUIParent->Validate());
506 }

References Effect::EnableApply(), mOutGain, mOutGainT, and Effect::mUIParent.

Here is the call graph for this function:

◆ OnGainText()

void EffectPhaser::OnGainText ( wxCommandEvent &  evt)
private

Definition at line 568 of file Phaser.cpp.

569 {
570  if (!EnableApply(mUIParent->TransferDataFromWindow()))
571  {
572  return;
573  }
574 
575  mOutGainS->SetValue((int) (mOutGain * SCL_OutGain));
576 }

References Effect::EnableApply(), mOutGain, mOutGainS, and Effect::mUIParent.

Here is the call graph for this function:

◆ OnPhaseSlider()

void EffectPhaser::OnPhaseSlider ( wxCommandEvent &  evt)
private

Definition at line 473 of file Phaser.cpp.

474 {
475  int val = ((evt.GetInt() + 5) / 10) * 10; // round to nearest multiple of 10
476  val = val > MAX_Phase * SCL_Phase ? MAX_Phase * SCL_Phase : val;
477  mPhaseS->SetValue(val);
478  mPhase = (double) val / SCL_Phase;
479  mPhaseT->GetValidator()->TransferToWindow();
480  EnableApply(mUIParent->Validate());
481 }

References Effect::EnableApply(), mPhase, mPhaseS, mPhaseT, and Effect::mUIParent.

Here is the call graph for this function:

◆ OnPhaseText()

void EffectPhaser::OnPhaseText ( wxCommandEvent &  evt)
private

Definition at line 538 of file Phaser.cpp.

539 {
540  if (!EnableApply(mUIParent->TransferDataFromWindow()))
541  {
542  return;
543  }
544 
545  mPhaseS->SetValue((int) (mPhase * SCL_Phase));
546 }

References Effect::EnableApply(), mPhase, mPhaseS, and Effect::mUIParent.

Here is the call graph for this function:

◆ OnStagesSlider()

void EffectPhaser::OnStagesSlider ( wxCommandEvent &  evt)
private

Definition at line 451 of file Phaser.cpp.

452 {
453  mStages = (evt.GetInt() / SCL_Stages) & ~1; // must be even;
454  mStagesT->GetValidator()->TransferToWindow();
455  EnableApply(mUIParent->Validate());
456 }

References Effect::EnableApply(), mStages, mStagesT, and Effect::mUIParent.

Here is the call graph for this function:

◆ OnStagesText()

void EffectPhaser::OnStagesText ( wxCommandEvent &  evt)
private

Definition at line 508 of file Phaser.cpp.

509 {
510  if (!EnableApply(mUIParent->TransferDataFromWindow()))
511  {
512  return;
513  }
514 
515  mStagesS->SetValue((int) (mStages * SCL_Stages));
516 }

References Effect::EnableApply(), mStages, mStagesS, and Effect::mUIParent.

Here is the call graph for this function:

◆ PopulateOrExchange()

void EffectPhaser::PopulateOrExchange ( ShuttleGui S)
overridevirtual

Reimplemented from Effect.

Definition at line 254 of file Phaser.cpp.

255 {
256  S.SetBorder(5);
257  S.AddSpace(0, 5);
258 
259  S.StartMultiColumn(3, wxEXPAND);
260  {
261  S.SetStretchyCol(2);
262 
263  mStagesT = S.Id(ID_Stages)
264  .Validator<IntegerValidator<int>>(
265  &mStages, NumValidatorStyle::DEFAULT, MIN_Stages, MAX_Stages)
266  .AddTextBox(XXO("&Stages:"), wxT(""), 15);
267 
268  mStagesS = S.Id(ID_Stages)
269  .Name(XO("Stages"))
270  .Style(wxSL_HORIZONTAL)
271  .MinSize( { 100, -1 } )
272  .AddSlider( {}, DEF_Stages * SCL_Stages, MAX_Stages * SCL_Stages, MIN_Stages * SCL_Stages);
273  mStagesS->SetLineSize(2);
274 
275  mDryWetT = S.Id(ID_DryWet)
276  .Validator<IntegerValidator<int>>(
277  &mDryWet, NumValidatorStyle::DEFAULT, MIN_DryWet, MAX_DryWet)
278  .AddTextBox(XXO("&Dry/Wet:"), wxT(""), 15);
279 
280  mDryWetS = S.Id(ID_DryWet)
281  .Name(XO("Dry Wet"))
282  .Style(wxSL_HORIZONTAL)
283  .MinSize( { 100, -1 } )
284  .AddSlider( {}, DEF_DryWet * SCL_DryWet, MAX_DryWet * SCL_DryWet, MIN_DryWet * SCL_DryWet);
285 
286  mFreqT = S.Id(ID_Freq)
287  .Validator<FloatingPointValidator<double>>(
288  5, &mFreq, NumValidatorStyle::ONE_TRAILING_ZERO, MIN_Freq, MAX_Freq)
289  .AddTextBox(XXO("LFO Freq&uency (Hz):"), wxT(""), 15);
290 
291  mFreqS = S.Id(ID_Freq)
292  .Name(XO("LFO frequency in hertz"))
293  .Style(wxSL_HORIZONTAL)
294  .MinSize( { 100, -1 } )
295  .AddSlider( {}, DEF_Freq * SCL_Freq, MAX_Freq * SCL_Freq, 0.0);
296 
297  mPhaseT = S.Id(ID_Phase)
298  .Validator<FloatingPointValidator<double>>(
299  1, &mPhase, NumValidatorStyle::DEFAULT, MIN_Phase, MAX_Phase)
300  .AddTextBox(XXO("LFO Sta&rt Phase (deg.):"), wxT(""), 15);
301 
302  mPhaseS = S.Id(ID_Phase)
303  .Name(XO("LFO start phase in degrees"))
304  .Style(wxSL_HORIZONTAL)
305  .MinSize( { 100, -1 } )
306  .AddSlider( {}, DEF_Phase * SCL_Phase, MAX_Phase * SCL_Phase, MIN_Phase * SCL_Phase);
307  mPhaseS->SetLineSize(10);
308 
309  mDepthT = S.Id(ID_Depth)
310  .Validator<IntegerValidator<int>>(
311  &mDepth, NumValidatorStyle::DEFAULT, MIN_Depth, MAX_Depth)
312  .AddTextBox(XXO("Dept&h:"), wxT(""), 15);
313 
314  mDepthS = S.Id(ID_Depth)
315  .Name(XO("Depth in percent"))
316  .Style(wxSL_HORIZONTAL)
317  .MinSize( { 100, -1 } )
318  .AddSlider( {}, DEF_Depth * SCL_Depth, MAX_Depth * SCL_Depth, MIN_Depth * SCL_Depth);
319 
321  .Validator<IntegerValidator<int>>(
322  &mFeedback, NumValidatorStyle::DEFAULT, MIN_Feedback, MAX_Feedback)
323  .AddTextBox(XXO("Feedbac&k (%):"), wxT(""), 15);
324 
326  .Name(XO("Feedback in percent"))
327  .Style(wxSL_HORIZONTAL)
328  .MinSize( { 100, -1 } )
329  .AddSlider( {}, DEF_Feedback * SCL_Feedback, MAX_Feedback * SCL_Feedback, MIN_Feedback * SCL_Feedback);
330  mFeedbackS->SetLineSize(10);
331 
332  mOutGainT = S.Id(ID_OutGain)
333  .Validator<FloatingPointValidator<double>>(
334  1, &mOutGain, NumValidatorStyle::DEFAULT, MIN_OutGain, MAX_OutGain)
335  .AddTextBox(XXO("&Output gain (dB):"), wxT(""), 12);
336 
337  mOutGainS = S.Id(ID_OutGain)
338  .Name(XO("Output gain (dB)"))
339  .Style(wxSL_HORIZONTAL)
340  .MinSize( { 100, -1 } )
341  .AddSlider( {}, DEF_OutGain * SCL_OutGain, MAX_OutGain * SCL_OutGain, MIN_OutGain * SCL_OutGain);
342  }
343  S.EndMultiColumn();
344 }

References ShuttleGui::AddSpace(), ShuttleGuiBase::EndMultiColumn(), ShuttleGui::Id(), ID_Depth, ID_DryWet, ID_Feedback, ID_Freq, ID_OutGain, ID_Phase, ID_Stages, mDepth, mDepthS, mDepthT, mDryWet, mDryWetS, mDryWetT, mFeedback, mFeedbackS, mFeedbackT, mFreq, mFreqS, mFreqT, ShuttleGui::MinSize(), mOutGain, mOutGainS, mOutGainT, mPhase, mPhaseS, mPhaseT, mStages, mStagesS, mStagesT, ShuttleGui::Name(), ShuttleGuiBase::SetBorder(), ShuttleGuiBase::SetStretchyCol(), ShuttleGuiBase::StartMultiColumn(), ShuttleGui::Validator(), XO, and XXO.

Here is the call graph for this function:

◆ ProcessBlock()

size_t EffectPhaser::ProcessBlock ( float **  inBlock,
float **  outBlock,
size_t  blockLen 
)
overridevirtual

Reimplemented from Effect.

Definition at line 162 of file Phaser.cpp.

163 {
164  return InstanceProcess(mMaster, inBlock, outBlock, blockLen);
165 }

References InstanceProcess(), and mMaster.

Here is the call graph for this function:

◆ ProcessInitialize()

bool EffectPhaser::ProcessInitialize ( sampleCount  totalLen,
ChannelNames  chanMap = NULL 
)
overridevirtual

Reimplemented from Effect.

Definition at line 151 of file Phaser.cpp.

152 {
154  if (chanMap[0] == ChannelNameFrontRight)
155  {
156  mMaster.phase += M_PI;
157  }
158 
159  return true;
160 }

References ChannelNameFrontRight, InstanceInit(), M_PI, mMaster, Effect::mSampleRate, and EffectPhaserState::phase.

Here is the call graph for this function:

◆ RealtimeAddProcessor()

bool EffectPhaser::RealtimeAddProcessor ( unsigned  numChannels,
float  sampleRate 
)
overridevirtual

Reimplemented from Effect.

Definition at line 176 of file Phaser.cpp.

177 {
178  EffectPhaserState slave;
179 
180  InstanceInit(slave, sampleRate);
181 
182  mSlaves.push_back(slave);
183 
184  return true;
185 }

References InstanceInit(), and mSlaves.

Here is the call graph for this function:

◆ RealtimeFinalize()

bool EffectPhaser::RealtimeFinalize ( )
overridevirtual

Reimplemented from Effect.

Definition at line 187 of file Phaser.cpp.

188 {
189  mSlaves.clear();
190 
191  return true;
192 }

References mSlaves.

◆ RealtimeInitialize()

bool EffectPhaser::RealtimeInitialize ( )
overridevirtual

Reimplemented from Effect.

Definition at line 167 of file Phaser.cpp.

168 {
169  SetBlockSize(512);
170 
171  mSlaves.clear();
172 
173  return true;
174 }

References mSlaves, and Effect::SetBlockSize().

Here is the call graph for this function:

◆ RealtimeProcess()

size_t EffectPhaser::RealtimeProcess ( int  group,
float **  inbuf,
float **  outbuf,
size_t  numSamples 
)
overridevirtual

Reimplemented from Effect.

Definition at line 194 of file Phaser.cpp.

198 {
199 
200  return InstanceProcess(mSlaves[group], inbuf, outbuf, numSamples);
201 }

References InstanceProcess(), and mSlaves.

Here is the call graph for this function:

◆ SetAutomationParameters()

bool EffectPhaser::SetAutomationParameters ( CommandParameters parms)
overridevirtual

Reimplemented from Effect.

Definition at line 226 of file Phaser.cpp.

227 {
228  ReadAndVerifyInt(Stages);
229  ReadAndVerifyInt(DryWet);
230  ReadAndVerifyDouble(Freq);
231  ReadAndVerifyDouble(Phase);
232  ReadAndVerifyInt(Depth);
233  ReadAndVerifyInt(Feedback);
234  ReadAndVerifyDouble(OutGain);
235 
236  if (Stages & 1) // must be even, but don't complain about it
237  {
238  Stages &= ~1;
239  }
240 
241  mFreq = Freq;
242  mFeedback = Feedback;
243  mStages = Stages;
244  mDryWet = DryWet;
245  mDepth = Depth;
246  mPhase = Phase;
247  mOutGain = OutGain;
248 
249  return true;
250 }

References mDepth, mDryWet, mFeedback, mFreq, mOutGain, mPhase, mStages, ReadAndVerifyDouble, and ReadAndVerifyInt.

◆ SupportsRealtime()

bool EffectPhaser::SupportsRealtime ( )
overridevirtual

Reimplemented from Effect.

Definition at line 130 of file Phaser.cpp.

131 {
132 #if defined(EXPERIMENTAL_REALTIME_AUDACITY_EFFECTS)
133  return true;
134 #else
135  return false;
136 #endif
137 }

◆ TransferDataFromWindow()

bool EffectPhaser::TransferDataFromWindow ( )
overridevirtual

Reimplemented from Effect.

Definition at line 364 of file Phaser.cpp.

365 {
366  if (!mUIParent->Validate() || !mUIParent->TransferDataFromWindow())
367  {
368  return false;
369  }
370 
371  if (mStages & 1) // must be even
372  {
373  mStages &= ~1;
374  mStagesT->GetValidator()->TransferToWindow();
375  }
376 
377  return true;
378 }

References mStages, mStagesT, and Effect::mUIParent.

◆ TransferDataToWindow()

bool EffectPhaser::TransferDataToWindow ( )
overridevirtual

Reimplemented from Effect.

Definition at line 346 of file Phaser.cpp.

347 {
348  if (!mUIParent->TransferDataToWindow())
349  {
350  return false;
351  }
352 
353  mStagesS->SetValue((int) (mStages * SCL_Stages));
354  mDryWetS->SetValue((int) (mDryWet * SCL_DryWet));
355  mFreqS->SetValue((int) (mFreq * SCL_Freq));
356  mPhaseS->SetValue((int) (mPhase * SCL_Phase));
357  mDepthS->SetValue((int) (mDepth * SCL_Depth));
358  mFeedbackS->SetValue((int) (mFeedback * SCL_Feedback));
359  mOutGainS->SetValue((int) (mOutGain * SCL_OutGain));
360 
361  return true;
362 }

References mDepth, mDepthS, mDryWet, mDryWetS, mFeedback, mFeedbackS, mFreq, mFreqS, mOutGain, mOutGainS, mPhase, mPhaseS, mStages, mStagesS, and Effect::mUIParent.

Member Data Documentation

◆ mDepth

int EffectPhaser::mDepth
private

◆ mDepthS

wxSlider* EffectPhaser::mDepthS
private

Definition at line 142 of file Phaser.h.

Referenced by OnDepthText(), PopulateOrExchange(), and TransferDataToWindow().

◆ mDepthT

wxTextCtrl* EffectPhaser::mDepthT
private

Definition at line 134 of file Phaser.h.

Referenced by OnDepthSlider(), and PopulateOrExchange().

◆ mDryWet

int EffectPhaser::mDryWet
private

◆ mDryWetS

wxSlider* EffectPhaser::mDryWetS
private

Definition at line 139 of file Phaser.h.

Referenced by OnDryWetText(), PopulateOrExchange(), and TransferDataToWindow().

◆ mDryWetT

wxTextCtrl* EffectPhaser::mDryWetT
private

Definition at line 131 of file Phaser.h.

Referenced by OnDryWetSlider(), and PopulateOrExchange().

◆ mFeedback

int EffectPhaser::mFeedback
private

◆ mFeedbackS

wxSlider* EffectPhaser::mFeedbackS
private

◆ mFeedbackT

wxTextCtrl* EffectPhaser::mFeedbackT
private

Definition at line 135 of file Phaser.h.

Referenced by OnFeedbackSlider(), and PopulateOrExchange().

◆ mFreq

double EffectPhaser::mFreq
private

◆ mFreqS

wxSlider* EffectPhaser::mFreqS
private

Definition at line 140 of file Phaser.h.

Referenced by OnFreqText(), PopulateOrExchange(), and TransferDataToWindow().

◆ mFreqT

wxTextCtrl* EffectPhaser::mFreqT
private

Definition at line 132 of file Phaser.h.

Referenced by OnFreqSlider(), and PopulateOrExchange().

◆ mMaster

EffectPhaserState EffectPhaser::mMaster
private

Definition at line 118 of file Phaser.h.

Referenced by ProcessBlock(), and ProcessInitialize().

◆ mOutGain

double EffectPhaser::mOutGain
private

◆ mOutGainS

wxSlider* EffectPhaser::mOutGainS
private

Definition at line 144 of file Phaser.h.

Referenced by OnGainText(), PopulateOrExchange(), and TransferDataToWindow().

◆ mOutGainT

wxTextCtrl* EffectPhaser::mOutGainT
private

Definition at line 136 of file Phaser.h.

Referenced by OnGainSlider(), and PopulateOrExchange().

◆ mPhase

double EffectPhaser::mPhase
private

◆ mPhaseS

wxSlider* EffectPhaser::mPhaseS
private

Definition at line 141 of file Phaser.h.

Referenced by OnPhaseSlider(), OnPhaseText(), PopulateOrExchange(), and TransferDataToWindow().

◆ mPhaseT

wxTextCtrl* EffectPhaser::mPhaseT
private

Definition at line 133 of file Phaser.h.

Referenced by OnPhaseSlider(), and PopulateOrExchange().

◆ mSlaves

std::vector<EffectPhaserState> EffectPhaser::mSlaves
private

◆ mStages

int EffectPhaser::mStages
private

◆ mStagesS

wxSlider* EffectPhaser::mStagesS
private

Definition at line 138 of file Phaser.h.

Referenced by OnStagesText(), PopulateOrExchange(), and TransferDataToWindow().

◆ mStagesT

wxTextCtrl* EffectPhaser::mStagesT
private

Definition at line 130 of file Phaser.h.

Referenced by OnStagesSlider(), PopulateOrExchange(), and TransferDataFromWindow().

◆ Symbol

const ComponentInterfaceSymbol EffectPhaser::Symbol { XO("Phaser") }
static

Definition at line 45 of file Phaser.h.

Referenced by GetSymbol().


The documentation for this class was generated from the following files:
EffectPhaser::mFreq
double mFreq
Definition: Phaser.h:124
ID_Feedback
@ ID_Feedback
Definition: Phaser.cpp:42
EffectPhaserState::outgain
double outgain
Definition: Phaser.h:36
EffectTypeProcess
@ EffectTypeProcess
Definition: EffectInterface.h:59
DB_TO_LINEAR
const double MIN_Threshold_Linear DB_TO_LINEAR(MIN_Threshold_dB)
EffectPhaser::mPhaseT
wxTextCtrl * mPhaseT
Definition: Phaser.h:133
Effect::SetLinearEffectFlag
void SetLinearEffectFlag(bool linearEffectFlag)
Definition: Effect.cpp:2000
Effect::EnableApply
virtual bool EnableApply(bool enable=true)
Definition: Effect.cpp:1925
EffectPhaser::mDryWetT
wxTextCtrl * mDryWetT
Definition: Phaser.h:131
EffectPhaser::mFeedback
int mFeedback
Definition: Phaser.h:127
EffectPhaserState::samplerate
float samplerate
Definition: Phaser.h:31
EffectPhaserState::gain
double gain
Definition: Phaser.h:34
ID_OutGain
@ ID_OutGain
Definition: Phaser.cpp:43
ShuttleGui::AddSpace
wxSizerItem * AddSpace(int width, int height, int prop=0)
Definition: ShuttleGui.cpp:2421
EffectPhaser::mFreqT
wxTextCtrl * mFreqT
Definition: Phaser.h:132
ShuttleGui::MinSize
ShuttleGui & MinSize()
Definition: ShuttleGui.h:740
XO
#define XO(s)
Definition: Internat.h:32
EffectPhaser::mOutGain
double mOutGain
Definition: Phaser.h:128
ShuttleGuiBase::EndMultiColumn
void EndMultiColumn()
Definition: ShuttleGui.cpp:1212
EffectPhaser::mStagesS
wxSlider * mStagesS
Definition: Phaser.h:138
EffectPhaser::mOutGainT
wxTextCtrl * mOutGainT
Definition: Phaser.h:136
EffectPhaserState
Definition: Phaser.h:28
ShuttleGui::Id
ShuttleGui & Id(int id)
Definition: ShuttleGui.cpp:2248
EffectPhaser::InstanceInit
void InstanceInit(EffectPhaserState &data, float sampleRate)
Definition: Phaser.cpp:382
ID_Stages
@ ID_Stages
Definition: Phaser.cpp:37
EffectPhaser::mDepthS
wxSlider * mDepthS
Definition: Phaser.h:142
ReadAndVerifyInt
#define ReadAndVerifyInt(name)
Definition: Effect.h:631
XXO
#define XXO(s)
Definition: Internat.h:45
sampleCount::as_double
double as_double() const
Definition: Types.h:616
EffectPhaserState::lfoskip
double lfoskip
Definition: Phaser.h:37
ShuttleGuiBase::StartMultiColumn
void StartMultiColumn(int nCols, int PositionFlags=wxALIGN_LEFT)
Definition: ShuttleGui.cpp:1203
EffectPhaser::mMaster
EffectPhaserState mMaster
Definition: Phaser.h:118
EffectPhaserState::phase
double phase
Definition: Phaser.h:38
EffectPhaser::mDryWet
int mDryWet
Definition: Phaser.h:123
EffectPhaserState::laststages
int laststages
Definition: Phaser.h:39
EffectPhaser::mStagesT
wxTextCtrl * mStagesT
Definition: Phaser.h:130
ShuttleGui::Validator
ShuttleGui & Validator(const Factory &f)
Definition: ShuttleGui.h:685
EffectPhaser::mPhase
double mPhase
Definition: Phaser.h:125
phaserlfoshape
#define phaserlfoshape
Definition: Phaser.cpp:58
EffectPhaserState::fbout
double fbout
Definition: Phaser.h:35
EffectPhaserState::skipcount
sampleCount skipcount
Definition: Phaser.h:32
ReadAndVerifyDouble
#define ReadAndVerifyDouble(name)
Definition: Effect.h:632
EffectPhaserState::old
double old[NUM_STAGES]
Definition: Phaser.h:33
EffectPhaser::InstanceProcess
size_t InstanceProcess(EffectPhaserState &data, float **inBlock, float **outBlock, size_t blockLen)
Definition: Phaser.cpp:400
EffectPhaser::mFeedbackS
wxSlider * mFeedbackS
Definition: Phaser.h:143
lfoskipsamples
#define lfoskipsamples
Definition: Phaser.cpp:61
EffectPhaser::mStages
int mStages
Definition: Phaser.h:122
ShuttleGui::Name
ShuttleGui & Name(const TranslatableString &name)
Definition: ShuttleGui.h:670
Effect::mSampleRate
double mSampleRate
Definition: Effect.h:459
EffectPhaser::mSlaves
std::vector< EffectPhaserState > mSlaves
Definition: Phaser.h:119
EffectPhaser::mDryWetS
wxSlider * mDryWetS
Definition: Phaser.h:139
EffectPhaser::mOutGainS
wxSlider * mOutGainS
Definition: Phaser.h:144
Effect::mUIParent
wxWindow * mUIParent
Definition: Effect.h:477
EffectPhaser::mDepthT
wxTextCtrl * mDepthT
Definition: Phaser.h:134
EffectPhaser::mFreqS
wxSlider * mFreqS
Definition: Phaser.h:140
EffectPhaser::Symbol
static const ComponentInterfaceSymbol Symbol
Definition: Phaser.h:45
EffectPhaser::mDepth
int mDepth
Definition: Phaser.h:126
ID_DryWet
@ ID_DryWet
Definition: Phaser.cpp:38
M_PI
#define M_PI
Definition: Distortion.cpp:29
ID_Phase
@ ID_Phase
Definition: Phaser.cpp:40
ShuttleGuiBase::SetBorder
void SetBorder(int Border)
Definition: ShuttleGui.h:497
ChannelNameFrontRight
@ ChannelNameFrontRight
Definition: Types.h:757
EffectPhaser::mFeedbackT
wxTextCtrl * mFeedbackT
Definition: Phaser.h:135
ShuttleGuiBase::SetStretchyCol
void SetStretchyCol(int i)
Used to modify an already placed FlexGridSizer to make a column stretchy.
Definition: ShuttleGui.cpp:195
EffectPhaser::mPhaseS
wxSlider * mPhaseS
Definition: Phaser.h:141
Effect::SetBlockSize
size_t SetBlockSize(size_t maxBlockSize) override
Definition: Effect.cpp:316
ID_Freq
@ ID_Freq
Definition: Phaser.cpp:39
ID_Depth
@ ID_Depth
Definition: Phaser.cpp:41