VampPluginSDK  2.1
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 #define VAMP_SDK_VERSION "3.5"
44 #define VAMP_SDK_MAJOR_VERSION 2
45 #define VAMP_SDK_MINOR_VERSION 2
46 
47 #include "plugguard.h"
48 _VAMP_SDK_PLUGSPACE_BEGIN(PluginBase.h)
49 
50 namespace Vamp {
51 
64 class PluginBase
65 {
66 public:
67  virtual ~PluginBase() { }
68 
72  virtual unsigned int getVampApiVersion() const { return 2; }
73 
87  virtual std::string getIdentifier() const = 0;
88 
97  virtual std::string getName() const = 0;
98 
107  virtual std::string getDescription() const = 0;
108 
115  virtual std::string getMaker() const = 0;
116 
122  virtual std::string getCopyright() const = 0;
123 
127  virtual int getPluginVersion() const = 0;
128 
129 
131  {
137  std::string identifier;
138 
142  std::string name;
143 
148  std::string description;
149 
153  std::string unit;
154 
158  float minValue;
159 
163  float maxValue;
164 
172 
178 
185 
197  std::vector<std::string> valueNames;
198 
199  ParameterDescriptor() : // the defaults are invalid: you must set them
200  minValue(0), maxValue(0), defaultValue(0), isQuantized(false) { }
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 
260 _VAMP_SDK_PLUGSPACE_END(PluginBase.h)
261 
262 #endif
virtual void setParameter(std::string, float)
Set a named parameter.
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:75
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:76
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