# vamp-sdk/PluginBase.h

Go to the documentation of this file.

    00001 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
    00002
    00003 /*
    00004     Vamp
    00005
    00006     An API for audio analysis and feature extraction plugins.
    00007
    00008     Centre for Digital Music, Queen Mary, University of London.
    00009     Copyright 2006 Chris Cannam.
    00010
    00011     Permission is hereby granted, free of charge, to any person
    00012     obtaining a copy of this software and associated documentation
    00013     files (the "Software"), to deal in the Software without
    00014     restriction, including without limitation the rights to use, copy,
    00015     modify, merge, publish, distribute, sublicense, and/or sell copies
    00016     of the Software, and to permit persons to whom the Software is
    00017     furnished to do so, subject to the following conditions:
    00018
    00019     The above copyright notice and this permission notice shall be
    00020     included in all copies or substantial portions of the Software.
    00021
    00022     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    00023     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    00024     MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    00025     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
    00026     ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
    00027     CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    00028     WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    00029
    00030     Except as contained in this notice, the names of the Centre for
    00031     Digital Music; Queen Mary, University of London; and Chris Cannam
    00032     shall not be used in advertising or otherwise to promote the sale,
    00033     use or other dealings in this Software without prior written
    00034     authorization.
    00035 */
    00036
    00037 #ifndef _VAMP_SDK_PLUGIN_BASE_H_
    00038 #define _VAMP_SDK_PLUGIN_BASE_H_
    00039
    00040 #include <string>
    00041 #include <vector>
    00042
    00043 #define VAMP_SDK_VERSION "2.0"
    00044 #define VAMP_SDK_MAJOR_VERSION 2
    00045 #define VAMP_SDK_MINOR_VERSION 0
    00046
    00047 #include "plugguard.h"
    00048 _VAMP_SDK_PLUGSPACE_BEGIN(PluginBase.h)
    00049
    00050 namespace Vamp {
    00051
    00064 class PluginBase
    00065 {
    00066 public:
    00067     virtual ~PluginBase() { }
    00068
    00072     virtual unsigned int getVampApiVersion() const { return 2; }
    00073
    00087     virtual std::string getIdentifier() const = 0;
    00088
    00097     virtual std::string getName() const = 0;
    00098
    00107     virtual std::string getDescription() const = 0;
    00108
    00115     virtual std::string getMaker() const = 0;
    00116
    00122     virtual std::string getCopyright() const = 0;
    00123
    00127     virtual int getPluginVersion() const = 0;
    00128
    00129
    00130     struct ParameterDescriptor
    00131     {
    00137         std::string identifier;
    00138
    00142         std::string name;
    00143
    00148         std::string description;
    00149
    00153         std::string unit;
    00154
    00158         float minValue;
    00159
    00163         float maxValue;
    00164
    00171         float defaultValue;
    00172
    00177         bool isQuantized;
    00178
    00184         float quantizeStep;
    00185
    00197         std::vector<std::string> valueNames;
    00198
    00199         ParameterDescriptor() : // the defaults are invalid: you must set them
    00200             minValue(0), maxValue(0), defaultValue(0), isQuantized(false) { }
    00201     };
    00202
    00203     typedef std::vector<ParameterDescriptor> ParameterList;
    00204
    00208     virtual ParameterList getParameterDescriptors() const {
    00209         return ParameterList();
    00210     }
    00211
    00216     virtual float getParameter(std::string) const { return 0.0; }
    00217
    00222     virtual void setParameter(std::string, float) { }
    00223
    00224
    00225     typedef std::vector<std::string> ProgramList;
    00226
    00237     virtual ProgramList getPrograms() const { return ProgramList(); }
    00238
    00242     virtual std::string getCurrentProgram() const { return ""; }
    00243
    00248     virtual void selectProgram(std::string) { }
    00249
    00255     virtual std::string getType() const = 0;
    00256 };
    00257
    00258 }
    00259
    00260 _VAMP_SDK_PLUGSPACE_END(PluginBase.h)
    00261
    00262 #endif