annotate chroma-compare-plugin/TuningDifference.h @ 13:c74071731d74

The bulk of the chroma-compare implementation. Should be using the newly refactored Chromagram class from libcq though (chroma is currently upside-down!)
author Chris Cannam
date Wed, 04 Feb 2015 15:10:07 +0000
parents 23572f9d25d9
children 994f5294996d
rev   line source
Chris@0 1 #ifndef TUNING_DIFFERENCE_H
Chris@0 2 #define TUNING_DIFFERENCE_H
Chris@0 3
Chris@0 4 #include <vamp-sdk/Plugin.h>
Chris@0 5
Chris@13 6 #include <cq/CQSpectrogram.h>
Chris@13 7
Chris@13 8 #include <memory>
Chris@13 9
Chris@0 10 using std::string;
Chris@1 11 using std::vector;
Chris@0 12
Chris@0 13 class TuningDifference : public Vamp::Plugin
Chris@0 14 {
Chris@0 15 public:
Chris@0 16 TuningDifference(float inputSampleRate);
Chris@0 17 virtual ~TuningDifference();
Chris@0 18
Chris@0 19 string getIdentifier() const;
Chris@0 20 string getName() const;
Chris@0 21 string getDescription() const;
Chris@0 22 string getMaker() const;
Chris@0 23 int getPluginVersion() const;
Chris@0 24 string getCopyright() const;
Chris@0 25
Chris@0 26 InputDomain getInputDomain() const;
Chris@0 27 size_t getPreferredBlockSize() const;
Chris@0 28 size_t getPreferredStepSize() const;
Chris@0 29 size_t getMinChannelCount() const;
Chris@0 30 size_t getMaxChannelCount() const;
Chris@0 31
Chris@0 32 ParameterList getParameterDescriptors() const;
Chris@0 33 float getParameter(string identifier) const;
Chris@0 34 void setParameter(string identifier, float value);
Chris@0 35
Chris@0 36 ProgramList getPrograms() const;
Chris@0 37 string getCurrentProgram() const;
Chris@0 38 void selectProgram(string name);
Chris@0 39
Chris@0 40 OutputList getOutputDescriptors() const;
Chris@0 41
Chris@0 42 bool initialise(size_t channels, size_t stepSize, size_t blockSize);
Chris@0 43 void reset();
Chris@0 44
Chris@0 45 FeatureSet process(const float *const *inputBuffers,
Chris@0 46 Vamp::RealTime timestamp);
Chris@0 47
Chris@0 48 FeatureSet getRemainingFeatures();
Chris@0 49
Chris@0 50 protected:
Chris@13 51 typedef vector<float> Signal;
Chris@13 52 typedef vector<double> Chroma;
Chris@13 53 typedef vector<double> TFeature;
Chris@13 54
Chris@13 55 int m_bpo;
Chris@13 56 std::unique_ptr<CQSpectrogram> m_refCQ;
Chris@13 57 Chroma m_refTotals;
Chris@13 58 TFeature m_refFeature;
Chris@13 59 Signal m_other;
Chris@1 60 int m_blockSize;
Chris@1 61 int m_frameCount;
Chris@13 62
Chris@13 63 CQParameters paramsForTuningFrequency(double hz) const;
Chris@13 64 TFeature computeFeatureFromTotals(const Chroma &totals) const;
Chris@13 65 TFeature computeFeatureFromSignal(const Signal &signal, double hz) const;
Chris@13 66 double featureDistance(const TFeature &other, int rotation = 0) const;
Chris@13 67 int findBestRotation(const TFeature &other) const;
Chris@13 68
Chris@13 69 mutable std::map<string, int> m_outputs;
Chris@0 70 };
Chris@0 71
Chris@0 72
Chris@0 73 #endif