/********************************************************************** Audacity: A Digital Audio Editor VampEffect.h Chris Cannam Vamp is an audio analysis and feature extraction plugin API. http://www.vamp-plugins.org/ **********************************************************************/ #include "../../Audacity.h" #if defined(USE_VAMP) #include #include #include #include #include #include #include #include #include "../../SampleFormat.h" #include "../Effect.h" class LabelTrack; #define VAMPEFFECTS_VERSION wxT("1.0.0.0") /* i18n-hint: Vamp is the porper name of a software protocol for sound analysis. It is not an abbreviation for anything. see http://vamp-plugins.org */ #define VAMPEFFECTS_FAMILY XO("Vamp") class VampEffect final : public Effect { public: VampEffect(std::unique_ptr &&plugin, const wxString & path, int output, bool hasParameters); virtual ~VampEffect(); // IdentInterface implementation wxString GetPath() override; wxString GetSymbol() override; wxString GetName() override; wxString GetVendor() override; wxString GetVersion() override; wxString GetDescription() override; // EffectDefinitionInterface implementation EffectType GetType() override; IdentInterfaceSymbol GetFamilyId() override; bool IsInteractive() override; bool IsDefault() override; // EffectClientInterface implementation unsigned GetAudioInCount() override; bool GetAutomationParameters(CommandParameters & parms) override; bool SetAutomationParameters(CommandParameters & parms) override; // Effect implementation bool Init() override; bool Process() override; void End() override; void PopulateOrExchange(ShuttleGui & S) override; bool TransferDataToWindow() override; bool TransferDataFromWindow() override; private: // VampEffect implemetation void AddFeatures(LabelTrack *track, Vamp::Plugin::FeatureSet & features); void UpdateFromPlugin(); void OnCheckBox(wxCommandEvent & evt); void OnChoice(wxCommandEvent & evt); void OnSlider(wxCommandEvent & evt); void OnTextCtrl(wxCommandEvent & evt); private: std::unique_ptr mPlugin; wxString mPath; int mOutput; bool mHasParameters; Vamp::HostExt::PluginLoader::PluginKey mKey; wxString mName; double mRate; bool mInSlider; bool mInText; Vamp::Plugin::ParameterList mParameters; Floats mValues; ArrayOf mSliders; ArrayOf mFields; ArrayOf mLabels; ArrayOf mToggles; ArrayOf mChoices; wxChoice *mProgram; DECLARE_EVENT_TABLE() }; #endif