annotate src/vamp-plugin-sdk-2.4/skeleton/MyPlugin.cpp @ 23:619f715526df sv_v2.1

Update Vamp plugin SDK to 2.5
author Chris Cannam
date Thu, 09 May 2013 10:52:46 +0100
parents b7bda433d832
children
rev   line source
Chris@12 1
Chris@12 2 // This is a skeleton file for use in creating your own plugin
Chris@12 3 // libraries. Replace MyPlugin and myPlugin throughout with the name
Chris@12 4 // of your first plugin class, and fill in the gaps as appropriate.
Chris@12 5
Chris@12 6
Chris@12 7 #include "MyPlugin.h"
Chris@12 8
Chris@12 9
Chris@12 10 MyPlugin::MyPlugin(float inputSampleRate) :
Chris@12 11 Plugin(inputSampleRate)
Chris@12 12 // Also be sure to set your plugin parameters (presumably stored
Chris@12 13 // in member variables) to their default values here -- the host
Chris@12 14 // will not do that for you
Chris@12 15 {
Chris@12 16 }
Chris@12 17
Chris@12 18 MyPlugin::~MyPlugin()
Chris@12 19 {
Chris@12 20 }
Chris@12 21
Chris@12 22 string
Chris@12 23 MyPlugin::getIdentifier() const
Chris@12 24 {
Chris@12 25 return "myplugin";
Chris@12 26 }
Chris@12 27
Chris@12 28 string
Chris@12 29 MyPlugin::getName() const
Chris@12 30 {
Chris@12 31 return "My Plugin";
Chris@12 32 }
Chris@12 33
Chris@12 34 string
Chris@12 35 MyPlugin::getDescription() const
Chris@12 36 {
Chris@12 37 // Return something helpful here!
Chris@12 38 return "";
Chris@12 39 }
Chris@12 40
Chris@12 41 string
Chris@12 42 MyPlugin::getMaker() const
Chris@12 43 {
Chris@12 44 // Your name here
Chris@12 45 return "";
Chris@12 46 }
Chris@12 47
Chris@12 48 int
Chris@12 49 MyPlugin::getPluginVersion() const
Chris@12 50 {
Chris@12 51 // Increment this each time you release a version that behaves
Chris@12 52 // differently from the previous one
Chris@12 53 return 1;
Chris@12 54 }
Chris@12 55
Chris@12 56 string
Chris@12 57 MyPlugin::getCopyright() const
Chris@12 58 {
Chris@12 59 // This function is not ideally named. It does not necessarily
Chris@12 60 // need to say who made the plugin -- getMaker does that -- but it
Chris@12 61 // should indicate the terms under which it is distributed. For
Chris@12 62 // example, "Copyright (year). All Rights Reserved", or "GPL"
Chris@12 63 return "";
Chris@12 64 }
Chris@12 65
Chris@12 66 MyPlugin::InputDomain
Chris@12 67 MyPlugin::getInputDomain() const
Chris@12 68 {
Chris@12 69 return TimeDomain;
Chris@12 70 }
Chris@12 71
Chris@12 72 size_t
Chris@12 73 MyPlugin::getPreferredBlockSize() const
Chris@12 74 {
Chris@12 75 return 0; // 0 means "I can handle any block size"
Chris@12 76 }
Chris@12 77
Chris@12 78 size_t
Chris@12 79 MyPlugin::getPreferredStepSize() const
Chris@12 80 {
Chris@12 81 return 0; // 0 means "anything sensible"; in practice this
Chris@12 82 // means the same as the block size for TimeDomain
Chris@12 83 // plugins, or half of it for FrequencyDomain plugins
Chris@12 84 }
Chris@12 85
Chris@12 86 size_t
Chris@12 87 MyPlugin::getMinChannelCount() const
Chris@12 88 {
Chris@12 89 return 1;
Chris@12 90 }
Chris@12 91
Chris@12 92 size_t
Chris@12 93 MyPlugin::getMaxChannelCount() const
Chris@12 94 {
Chris@12 95 return 1;
Chris@12 96 }
Chris@12 97
Chris@12 98 MyPlugin::ParameterList
Chris@12 99 MyPlugin::getParameterDescriptors() const
Chris@12 100 {
Chris@12 101 ParameterList list;
Chris@12 102
Chris@12 103 // If the plugin has no adjustable parameters, return an empty
Chris@12 104 // list here (and there's no need to provide implementations of
Chris@12 105 // getParameter and setParameter in that case either).
Chris@12 106
Chris@12 107 // Note that it is your responsibility to make sure the parameters
Chris@12 108 // start off having their default values (e.g. in the constructor
Chris@12 109 // above). The host needs to know the default value so it can do
Chris@12 110 // things like provide a "reset to default" function, but it will
Chris@12 111 // not explicitly set your parameters to their defaults for you if
Chris@12 112 // they have not changed in the mean time.
Chris@12 113
Chris@12 114 ParameterDescriptor d;
Chris@12 115 d.identifier = "parameter";
Chris@12 116 d.name = "Some Parameter";
Chris@12 117 d.description = "";
Chris@12 118 d.unit = "";
Chris@12 119 d.minValue = 0;
Chris@12 120 d.maxValue = 10;
Chris@12 121 d.defaultValue = 5;
Chris@12 122 d.isQuantized = false;
Chris@12 123 list.push_back(d);
Chris@12 124
Chris@12 125 return list;
Chris@12 126 }
Chris@12 127
Chris@12 128 float
Chris@12 129 MyPlugin::getParameter(string identifier) const
Chris@12 130 {
Chris@12 131 if (identifier == "parameter") {
Chris@12 132 return 5; // return the ACTUAL current value of your parameter here!
Chris@12 133 }
Chris@12 134 return 0;
Chris@12 135 }
Chris@12 136
Chris@12 137 void
Chris@12 138 MyPlugin::setParameter(string identifier, float value)
Chris@12 139 {
Chris@12 140 if (identifier == "parameter") {
Chris@12 141 // set the actual value of your parameter
Chris@12 142 }
Chris@12 143 }
Chris@12 144
Chris@12 145 MyPlugin::ProgramList
Chris@12 146 MyPlugin::getPrograms() const
Chris@12 147 {
Chris@12 148 ProgramList list;
Chris@12 149
Chris@12 150 // If you have no programs, return an empty list (or simply don't
Chris@12 151 // implement this function or getCurrentProgram/selectProgram)
Chris@12 152
Chris@12 153 return list;
Chris@12 154 }
Chris@12 155
Chris@12 156 string
Chris@12 157 MyPlugin::getCurrentProgram() const
Chris@12 158 {
Chris@12 159 return ""; // no programs
Chris@12 160 }
Chris@12 161
Chris@12 162 void
Chris@12 163 MyPlugin::selectProgram(string name)
Chris@12 164 {
Chris@12 165 }
Chris@12 166
Chris@12 167 MyPlugin::OutputList
Chris@12 168 MyPlugin::getOutputDescriptors() const
Chris@12 169 {
Chris@12 170 OutputList list;
Chris@12 171
Chris@12 172 // See OutputDescriptor documentation for the possibilities here.
Chris@12 173 // Every plugin must have at least one output.
Chris@12 174
Chris@12 175 OutputDescriptor d;
Chris@12 176 d.identifier = "output";
Chris@12 177 d.name = "My Output";
Chris@12 178 d.description = "";
Chris@12 179 d.unit = "";
Chris@12 180 d.hasFixedBinCount = true;
Chris@12 181 d.binCount = 1;
Chris@12 182 d.hasKnownExtents = false;
Chris@12 183 d.isQuantized = false;
Chris@12 184 d.sampleType = OutputDescriptor::OneSamplePerStep;
Chris@12 185 d.hasDuration = false;
Chris@12 186 list.push_back(d);
Chris@12 187
Chris@12 188 return list;
Chris@12 189 }
Chris@12 190
Chris@12 191 bool
Chris@12 192 MyPlugin::initialise(size_t channels, size_t stepSize, size_t blockSize)
Chris@12 193 {
Chris@12 194 if (channels < getMinChannelCount() ||
Chris@12 195 channels > getMaxChannelCount()) return false;
Chris@12 196
Chris@12 197 // Real initialisation work goes here!
Chris@12 198
Chris@12 199 return true;
Chris@12 200 }
Chris@12 201
Chris@12 202 void
Chris@12 203 MyPlugin::reset()
Chris@12 204 {
Chris@12 205 // Clear buffers, reset stored values, etc
Chris@12 206 }
Chris@12 207
Chris@12 208 MyPlugin::FeatureSet
Chris@12 209 MyPlugin::process(const float *const *inputBuffers, Vamp::RealTime timestamp)
Chris@12 210 {
Chris@12 211 // Do actual work!
Chris@12 212 return FeatureSet();
Chris@12 213 }
Chris@12 214
Chris@12 215 MyPlugin::FeatureSet
Chris@12 216 MyPlugin::getRemainingFeatures()
Chris@12 217 {
Chris@12 218 return FeatureSet();
Chris@12 219 }
Chris@12 220