vamp-sdk/PluginBase.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4  Vamp
5 
6  An API for audio analysis and feature extraction plugins.
7 
8  Centre for Digital Music, Queen Mary, University of London.
9  Copyright 2006 Chris Cannam.
10 
11  Permission is hereby granted, free of charge, to any person
12  obtaining a copy of this software and associated documentation
13  files (the "Software"), to deal in the Software without
14  restriction, including without limitation the rights to use, copy,
15  modify, merge, publish, distribute, sublicense, and/or sell copies
16  of the Software, and to permit persons to whom the Software is
17  furnished to do so, subject to the following conditions:
18 
19  The above copyright notice and this permission notice shall be
20  included in all copies or substantial portions of the Software.
21 
22  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
26  ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
27  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 
30  Except as contained in this notice, the names of the Centre for
31  Digital Music; Queen Mary, University of London; and Chris Cannam
32  shall not be used in advertising or otherwise to promote the sale,
33  use or other dealings in this Software without prior written
34  authorization.
35 */
36 
37 #ifndef _VAMP_SDK_PLUGIN_BASE_H_
38 #define _VAMP_SDK_PLUGIN_BASE_H_
39 
40 #include <string>
41 #include <vector>
42 
43 #include "plugguard.h"
44 _VAMP_SDK_PLUGSPACE_BEGIN(PluginBase.h)
45 
46 namespace Vamp {
47 
60 class PluginBase
61 {
62 public:
63  virtual ~PluginBase() { }
64 
68  virtual unsigned int getVampApiVersion() const { return 2; }
69 
83  virtual std::string getIdentifier() const = 0;
84 
93  virtual std::string getName() const = 0;
94 
103  virtual std::string getDescription() const = 0;
104 
111  virtual std::string getMaker() const = 0;
112 
118  virtual std::string getCopyright() const = 0;
119 
123  virtual int getPluginVersion() const = 0;
124 
125 
127  {
133  std::string identifier;
134 
138  std::string name;
139 
144  std::string description;
145 
149  std::string unit;
150 
154  float minValue;
155 
159  float maxValue;
160 
168 
174 
181 
193  std::vector<std::string> valueNames;
194 
195  ParameterDescriptor() : // the defaults are invalid: you must set them
196  minValue(0),
197  maxValue(0),
198  defaultValue(0),
199  isQuantized(false),
200  quantizeStep(0) { }
201  };
202 
203  typedef std::vector<ParameterDescriptor> ParameterList;
204 
208  virtual ParameterList getParameterDescriptors() const {
209  return ParameterList();
210  }
211 
216  virtual float getParameter(std::string) const { return 0.0; }
217 
222  virtual void setParameter(std::string, float) { }
223 
224 
225  typedef std::vector<std::string> ProgramList;
226 
237  virtual ProgramList getPrograms() const { return ProgramList(); }
238 
242  virtual std::string getCurrentProgram() const { return ""; }
243 
248  virtual void selectProgram(std::string) { }
249 
255  virtual std::string getType() const = 0;
256 };
257 
258 }
259 
261 
262 #endif
virtual void setParameter(std::string, float)
Set a named parameter.
Definition: FFT.h:43
virtual void selectProgram(std::string)
Select a program.
std::string identifier
The name of the parameter, in computer-usable form.
virtual unsigned int getVampApiVersion() const
Get the Vamp API compatibility level of the plugin.
std::vector< std::string > valueNames
Names for the quantized values.
std::string name
The human-readable name of the parameter.
virtual std::string getCurrentProgram() const
Get the current program.
float minValue
The minimum value of the parameter.
std::string unit
The unit of the parameter, in human-readable form.
virtual ProgramList getPrograms() const
Get the program settings available in this plugin.
#define _VAMP_SDK_PLUGSPACE_BEGIN(h)
Definition: plugguard.h:79
std::string description
A human-readable short text describing the parameter.
float maxValue
The maximum value of the parameter.
std::vector< std::string > ProgramList
#define _VAMP_SDK_PLUGSPACE_END(h)
Definition: plugguard.h:80
virtual ParameterList getParameterDescriptors() const
Get the controllable parameters of this plugin.
A base class for plugins with optional configurable parameters, programs, etc.
virtual float getParameter(std::string) const
Get the value of a named parameter.
float defaultValue
The default value of the parameter.
float quantizeStep
Quantization resolution of the parameter values (e.g.
bool isQuantized
True if the parameter values are quantized to a particular resolution.
std::vector< ParameterDescriptor > ParameterList