diff ConstrainedHarmonicPeak.cpp @ 0:f559ab000b67

Initial skeleton
author Chris Cannam
date Fri, 07 Mar 2014 14:34:50 +0000
parents
children ab0b04e1c56b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ConstrainedHarmonicPeak.cpp	Fri Mar 07 14:34:50 2014 +0000
@@ -0,0 +1,211 @@
+
+#include "ConstrainedHarmonicPeak.h"
+
+#include <cmath>
+#include <cstdio>
+
+using std::cerr;
+using std::endl;
+using std::vector;
+
+ConstrainedHarmonicPeak::ConstrainedHarmonicPeak(float inputSampleRate) :
+    Plugin(inputSampleRate),
+    m_blockSize(0),
+    m_minFreq(0),
+    m_maxFreq(inputSampleRate/2)
+{
+}
+
+ConstrainedHarmonicPeak::~ConstrainedHarmonicPeak()
+{
+}
+
+string
+ConstrainedHarmonicPeak::getIdentifier() const
+{
+    return "constrainedharmonicpeak";
+}
+
+string
+ConstrainedHarmonicPeak::getName() const
+{
+    return "Frequency-Constrained Harmonic Peak";
+}
+
+string
+ConstrainedHarmonicPeak::getDescription() const
+{
+    //!!! Return something helpful here!
+    return "";
+}
+
+string
+ConstrainedHarmonicPeak::getMaker() const
+{
+    return "Queen Mary, University of London";
+}
+
+int
+ConstrainedHarmonicPeak::getPluginVersion() const
+{
+    return 1;
+}
+
+string
+ConstrainedHarmonicPeak::getCopyright() const
+{
+    return "GPL";
+}
+
+ConstrainedHarmonicPeak::InputDomain
+ConstrainedHarmonicPeak::getInputDomain() const
+{
+    return FrequencyDomain;
+}
+
+size_t
+ConstrainedHarmonicPeak::getPreferredBlockSize() const
+{
+    return 2048;
+}
+
+size_t 
+ConstrainedHarmonicPeak::getPreferredStepSize() const
+{
+    return 512;
+}
+
+size_t
+ConstrainedHarmonicPeak::getMinChannelCount() const
+{
+    return 1;
+}
+
+size_t
+ConstrainedHarmonicPeak::getMaxChannelCount() const
+{
+    return 1;
+}
+
+ConstrainedHarmonicPeak::ParameterList
+ConstrainedHarmonicPeak::getParameterDescriptors() const
+{
+    ParameterList list;
+
+    ParameterDescriptor d;
+    d.identifier = "minfreq";
+    d.name = "Minimum frequency";
+    d.description = "";
+    d.unit = "Hz";
+    d.minValue = 0;
+    d.maxValue = m_inputSampleRate/2;
+    d.defaultValue = 0;
+    d.isQuantized = false;
+    list.push_back(d);
+
+    d.identifier = "maxfreq";
+    d.name = "Maximum frequency";
+    d.description = "";
+    d.unit = "Hz";
+    d.minValue = 0;
+    d.maxValue = m_inputSampleRate/2;
+    d.defaultValue = 0;
+    d.isQuantized = false;
+    list.push_back(d);
+
+    return list;
+}
+
+float
+ConstrainedHarmonicPeak::getParameter(string identifier) const
+{
+    if (identifier == "minfreq") {
+	return m_minFreq;
+    } else if (identifier == "maxfreq") {
+	return m_maxFreq;
+    }
+    return 0;
+}
+
+void
+ConstrainedHarmonicPeak::setParameter(string identifier, float value) 
+{
+    if (identifier == "minfreq") {
+	m_minFreq = value;
+    } else if (identifier == "maxfreq") {
+	m_maxFreq = value;
+    }
+}
+
+ConstrainedHarmonicPeak::ProgramList
+ConstrainedHarmonicPeak::getPrograms() const
+{
+    ProgramList list;
+    return list;
+}
+
+string
+ConstrainedHarmonicPeak::getCurrentProgram() const
+{
+    return ""; // no programs
+}
+
+void
+ConstrainedHarmonicPeak::selectProgram(string name)
+{
+}
+
+ConstrainedHarmonicPeak::OutputList
+ConstrainedHarmonicPeak::getOutputDescriptors() const
+{
+    OutputList list;
+
+    OutputDescriptor d;
+    d.identifier = "peak";
+    d.name = "Peak frequency";
+    d.description = "";
+    d.unit = "Hz";
+    d.sampleType = OutputDescriptor::OneSamplePerStep;
+    d.hasDuration = false;
+    list.push_back(d);
+
+    return list;
+}
+
+bool
+ConstrainedHarmonicPeak::initialise(size_t channels, size_t stepSize, size_t blockSize)
+{
+    if (channels < getMinChannelCount() ||
+	channels > getMaxChannelCount()) {
+	cerr << "ConstrainedHarmonicPeak::initialise: ERROR: channels " << channels
+	     << " out of acceptable range " << getMinChannelCount()
+	     << " -> " << getMaxChannelCount() << endl;
+	return false;
+    }
+
+    m_blockSize = blockSize;
+
+    return true;
+}
+
+void
+ConstrainedHarmonicPeak::reset()
+{
+}
+
+ConstrainedHarmonicPeak::FeatureSet
+ConstrainedHarmonicPeak::process(const float *const *inputBuffers, Vamp::RealTime timestamp)
+{
+    FeatureSet fs;
+
+    return fs;
+}
+
+ConstrainedHarmonicPeak::FeatureSet
+ConstrainedHarmonicPeak::getRemainingFeatures()
+{
+    FeatureSet fs;
+
+    return fs;
+}
+