⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 effect.h

📁 Audacity是一款用於錄音和編輯聲音的、免費的開放源碼軟體。它可以執行於Mac OS X、Microsoft Windows、GNU/Linux和其它作業系統
💻 H
字号:
/**********************************************************************  Audacity: A Digital Audio Editor  Effect.h  Dominic Mazzoni**********************************************************************/#ifndef __AUDACITY_EFFECT__#define __AUDACITY_EFFECT__#include <wx/dynarray.h>#include <wx/intl.h> #include <wx/string.h>class wxWindow;class wxFrame;class wxProgressDialog;#include "../WaveTrack.h"#include "../Shuttle.h"class Effect;WX_DEFINE_ARRAY(Effect *, EffectArray);#define PLUGIN_EFFECT   0x0001#define BUILTIN_EFFECT  0x0002// ADVANCED_EFFECT was introduced for Lynn Allan's 'CleanSpeech'// it allows the list of effects to be filtered to exclude// the advanced effects.#define ADVANCED_EFFECT 0x0004// HIDDEN_EFFECT allows an item to be excluded from the effects// menu in both CleanSpeech and in normal builds.#define HIDDEN_EFFECT   0x0008#define INSERT_EFFECT   0x0010#define PROCESS_EFFECT  0x0020#define ANALYZE_EFFECT  0x0040#define ALL_EFFECTS     0x00FF// Flag used to disable prompting for configuration// parameteres.#define CONFIGURED_EFFECT 0x8000//CLEAN-ME: Rogue value to skip unwanted effects in a chain.//lda: SKIP_EFFECT_MILLISECOND is a rogue value, used where a millisecond//time is required to indicate "Don't do this effect".//It is used in SpikeCleaner and TruncSilence.//MERGE: Maybe we can remove this now that we have configurable batch//and so can just drop the steps we don't want?#define SKIP_EFFECT_MILLISECOND 99999class Effect { // // public static methods // // Used by the outside program to register the list of effects and retrieve // them by index number, usually when the user selects one from a menu. // public:   static void RegisterEffect(Effect *f, int AdditionalFlags=0);   static void UnregisterEffects();   static Effect *GetEffect(int ID);   static int GetNumEffects();   // Returns a sorted array of effects, which may be filtered   // using the flags parameter.  The caller should dispose   // of the array when done.   static EffectArray *GetEffects(int flags = ALL_EFFECTS); //  // public methods // // Used by the outside program to determine properties of an effect and // apply the effect to one or more tracks. //  public:   // Each subclass of Effect should override this method.   // This name will go in the menu bar;   // append "..." if your effect pops up a dialog   virtual wxString GetEffectName() = 0;      // Each subclass of Effect should override this method.   // This name will go in the progress dialog, but can be used   // elsewhere, and it should describe what is being done.   // For example, if the effect is "Filter", the action is   // "Filtering", or if the effect is "Bass Boost", the action   // is "Boosting Bass Frequencies".   virtual wxString GetEffectAction() = 0;   // Each subclass of Effect should override this method.    // This description will go in the History state.    // Override to include effect parameters, so typically useful only after PromptUser.    virtual wxString GetEffectDescription() {       // Default provides effect name.       return wxString::Format(_("Applied effect: %s"),                               this->GetEffectName().c_str());    } 	    // Return flags which tell you what kind of effect this is.   // It will be either a built-in or a plug-in effect, and it   // will be one of Insert, Process, or Analyze.   virtual int GetEffectFlags() {      // Default of BUILTIN_EFFECT | PROCESS_EFFECT | ADVANCED_EFFECT (set in constructor) -       // covers most built-in effects.      return mFlags;   }   virtual bool TransferParameters( Shuttle & shuttle ){      return true;   }   void SetEffectFlags( int NewFlags )   {      mFlags = NewFlags;   }   // The Effect class fully implements the Preview method for you.   // Only override it if you need to do preprocessing or cleanup.   virtual void Preview();   // Get an unique ID assigned to each registered effect.   // The first effect will have ID zero.   int GetID() {      return mID;   }   // Returns true on success.  Will only operate on tracks that   // have the "selected" flag set to true, which is consistent with   // Audacity's standard UI.   bool DoEffect(wxWindow *parent, int flags, double projectRate, TrackList *list,                 TrackFactory *factory, double *t0, double *t1);   wxString GetPreviewName(); private:    static int LastType;    static int LastIndex;    static Effect * pLastEffect; public:    static void SetLastEffect(int type, Effect * pEffect){       LastType=type;       pLastEffect = pEffect;    }    static int GetLastEffectType(){ return LastType;}    static Effect * GetLastEffect(){ return pLastEffect;} // // protected virtual methods // // Each subclass of Effect overrides one or more of these methods to // do its processing. // protected:   // The constructor.  Called once at the beginning of the program.   // Avoid allocating memory or doing time-consuming processing here.   Effect();   //The destructor.   virtual ~Effect() {}    // Called once each time an effect is called.  Perform any initialization;   // make sure that the effect can be performed on the selected tracks and   // return false otherwise   virtual bool Init() {      return true;   }   // If necessary, open a dialog to get parameters from the user.   // This method will not always be called (for example if a user   // repeats an effect) but if it is called, it will be called   // after Init.   virtual bool PromptUser() {      return true;   }   // Check whether effect should be skipped   // Typically this is only useful in automation, for example   // detecting that zero noise reduction is to be done,   // or that normalisation is being done without Dc bias shift    // or amplitude modification   virtual bool CheckWhetherSkipEffect() { return false; }         // Actually do the effect here.   virtual bool Process() = 0;   // clean up any temporary memory   virtual void End() {   } // // protected data // // The Effect base class will set these variables, some or all of which // may be needed by any particular subclass of Effect. // protected:   wxWindow     *mParent;   double        mProjectRate; // Sample rate of the project - new tracks should                               // be created with this rate...   TrackFactory *mFactory;   TrackList    *mTracks;      // the complete list of all tracks   TrackList    *mWaveTracks;  // effects which do not add or remove tracks                               // should use this   double      mT0;   double      mT1; // // protected methods // // These methods can be used by subclasses of Effect in order to display a // progress dialog or perform common calculations // protected:   // The Progress methods all return true if the user has cancelled;   // you should exit immediately if this happens (cleaning up memory   // is okay, but don't try to undo).    // Pass a fraction between 0.0 and 1.0   bool TotalProgress(double frac);      // Pass a fraction between 0.0 and 1.0, for the current track   // (when doing one track at a time)   bool TrackProgress(int whichTrack, double frac);    // Pass a fraction between 0.0 and 1.0, for the current track group   // (when doing stereo groups at a time)   bool TrackGroupProgress(int whichGroup, double frac);   int GetNumWaveTracks() { return mNumTracks; } // // protected static data // // Preferences shared by all effects // protected:   static double sDefaultGenerateLen;   int mFlags;  // // private methods // // Used only by the base Effect class // private:   void CountWaveTracks();  // // private data // // Used only by the base Effect class // private:   static EffectArray mEffects;      int mNumTracks;   int mNumGroups;   int mID;   static int sNumEffects;      wxProgressDialog *mProgress;   friend class BatchCommands;// so can call PromptUser.};// Utility functionsfloat TrapFloat(float x, float min, float max);double TrapDouble(double x, double min, double max);long TrapLong(long x, long min, long max);#endif// Indentation settings for Vim and Emacs and unique identifier for Arch, a// version control system. Please do not modify past this point.//// Local Variables:// c-basic-offset: 3// indent-tabs-mode: nil// End://// vim: et sts=3 sw=3// arch-tag: 2eabc50c-b33d-4699-a526-66a5b2284fc5

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -