diff skeleton/MyPlugin.cpp @ 283:6c9f10b8a53a

* Add skeleton
author cannam
date Thu, 23 Apr 2009 08:59:24 +0000
parents
children 71b6db22a8a8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/skeleton/MyPlugin.cpp	Thu Apr 23 08:59:24 2009 +0000
@@ -0,0 +1,210 @@
+
+// This is a skeleton file for use in creating your own plugin
+// libraries.  Replace MyPlugin and myPlugin throughout with the name
+// of your first plugin class, and fill in the gaps as appropriate.
+
+
+#include "MyPlugin.h"
+
+
+MyPlugin::MyPlugin(float inputSampleRate) :
+    Plugin(inputSampleRate)
+{
+}
+
+MyPlugin::~MyPlugin()
+{
+}
+
+string
+MyPlugin::getIdentifier() const
+{
+    return "myplugin";
+}
+
+string
+MyPlugin::getName() const
+{
+    return "My Plugin";
+}
+
+string
+MyPlugin::getDescription() const
+{
+    // Return something helpful here!
+    return "";
+}
+
+string
+MyPlugin::getMaker() const
+{
+    // Your name here
+    return "";
+}
+
+int
+MyPlugin::getPluginVersion() const
+{
+    // Increment this each time you release a version that behaves
+    // differently from the previous one
+    return 1;
+}
+
+string
+MyPlugin::getCopyright() const
+{
+    // This function is not ideally named.  It does not necessarily
+    // need to say who made the plugin -- getMaker does that -- but it
+    // should indicate the terms under which it is distributed.  For
+    // example, "Copyright (year). All Rights Reserved", or "GPL"
+    return "";
+}
+
+MyPlugin::InputDomain
+MyPlugin::getInputDomain() const
+{
+    return TimeDomain;
+}
+
+size_t
+MyPlugin::getPreferredBlockSize() const
+{
+    return 0; // 0 means "I can handle any block size"
+}
+
+size_t 
+MyPlugin::getPreferredStepSize() const
+{
+    return 0; // 0 means "anything sensible"; in practice this
+              // means the same as the block size for TimeDomain
+              // plugins, or half of it for FrequencyDomain plugins
+}
+
+size_t
+MyPlugin::getMinChannelCount() const
+{
+    return 1;
+}
+
+size_t
+MyPlugin::getMaxChannelCount() const
+{
+    return 1;
+}
+
+MyPlugin::ParameterList
+MyPlugin::getParameterDescriptors() const
+{
+    ParameterList list;
+
+    // If the plugin has no adjustable parameters, return an empty
+    // list here (and there's no need to provide implementations of
+    // getParameter and setParameter in that case either).
+
+    ParameterDescriptor d;
+    d.identifier = "parameter";
+    d.name = "Some Parameter";
+    d.description = "";
+    d.unit = "";
+    d.minValue = 0;
+    d.maxValue = 10;
+    d.defaultValue = 5;
+    d.isQuantized = false;
+    list.push_back(d);
+
+    return list;
+}
+
+float
+MyPlugin::getParameter(string identifier) const
+{
+    if (identifier == "parameter") {
+        return 5; // return the ACTUAL current value of your parameter here!
+    }
+    return 0;
+}
+
+void
+MyPlugin::setParameter(string identifier, float value) 
+{
+    if (identifier == "parameter") {
+        // set the actual value of your parameter
+    }
+}
+
+MyPlugin::ProgramList
+MyPlugin::getPrograms() const
+{
+    ProgramList list;
+
+    // If you have no programs, return an empty list (or simply don't
+    // implement this function or getCurrentProgram/selectProgram)
+
+    return list;
+}
+
+string
+MyPlugin::getCurrentProgram() const
+{
+    return ""; // no programs
+}
+
+void
+MyPlugin::selectProgram(string name)
+{
+}
+
+MyPlugin::OutputList
+MyPlugin::getOutputDescriptors() const
+{
+    OutputList list;
+
+    // See OutputDescriptor documentation for the possibilities here.
+    // Every plugin must have at least one output.
+
+    OutputDescriptor d;
+    d.identifier = "output";
+    d.name = "My Output";
+    d.description = "";
+    d.unit = "";
+    d.hasFixedBinCount = true;
+    d.binCount = 1;
+    d.hasKnownExtents = false;
+    d.isQuantized = false;
+    d.sampleType = OutputDescriptor::OneSamplePerStep;
+    d.hasDuration = false;
+    list.push_back(d);
+
+    return list;
+}
+
+bool
+MyPlugin::initialise(size_t channels, size_t stepSize, size_t blockSize)
+{
+    if (channels < getMinChannelCount() ||
+	channels > getMaxChannelCount()) return false;
+
+    // Real initialisation work goes here!
+
+    return true;
+}
+
+void
+MyPlugin::reset()
+{
+    // Clear buffers, reset stored values, etc
+}
+
+MyPlugin::FeatureSet
+MyPlugin::process(const float *const *inputBuffers, Vamp::RealTime timestamp)
+{
+    // Do actual work!
+    return FeatureSet();
+}
+
+MyPlugin::FeatureSet
+MyPlugin::getRemainingFeatures()
+{
+    return FeatureSet();
+}
+