Mercurial > hg > chp
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; +} +