1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-02 17:23:18 +02:00
audacity/src/effects/vamp/VampEffect.h

118 lines
2.8 KiB
C++

/**********************************************************************
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 <wx/checkbox.h>
#include <wx/choice.h>
#include <wx/event.h>
#include <wx/slider.h>
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/textctrl.h>
#include <vamp-hostsdk/PluginLoader.h>
#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<Vamp::Plugin> &&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<Vamp::Plugin> 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<wxSlider *> mSliders;
ArrayOf<wxTextCtrl *> mFields;
ArrayOf<wxStaticText *> mLabels;
ArrayOf<wxCheckBox *> mToggles;
ArrayOf<wxChoice *> mChoices;
wxChoice *mProgram;
DECLARE_EVENT_TABLE()
};
#endif