annotate src/TuningDifference.h @ 21:d660db57e902

Rearrange code, include subrepo etc
author Chris Cannam
date Thu, 05 Feb 2015 10:13:31 +0000
parents chroma-compare-plugin/TuningDifference.h@9c5ec36c223e
children 409ff482cb30
rev   line source
Chris@21 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@21 2
Chris@21 3 /*
Chris@21 4 Centre for Digital Music, Queen Mary University of London.
Chris@21 5
Chris@21 6 This program is free software; you can redistribute it and/or
Chris@21 7 modify it under the terms of the GNU General Public License as
Chris@21 8 published by the Free Software Foundation; either version 2 of the
Chris@21 9 License, or (at your option) any later version. See the file
Chris@21 10 COPYING included with this distribution for more information.
Chris@21 11 */
Chris@21 12
Chris@0 13 #ifndef TUNING_DIFFERENCE_H
Chris@0 14 #define TUNING_DIFFERENCE_H
Chris@0 15
Chris@0 16 #include <vamp-sdk/Plugin.h>
Chris@0 17
Chris@15 18 #include <cq/Chromagram.h>
Chris@13 19
Chris@13 20 #include <memory>
Chris@13 21
Chris@0 22 using std::string;
Chris@1 23 using std::vector;
Chris@0 24
Chris@0 25 class TuningDifference : public Vamp::Plugin
Chris@0 26 {
Chris@0 27 public:
Chris@0 28 TuningDifference(float inputSampleRate);
Chris@0 29 virtual ~TuningDifference();
Chris@0 30
Chris@0 31 string getIdentifier() const;
Chris@0 32 string getName() const;
Chris@0 33 string getDescription() const;
Chris@0 34 string getMaker() const;
Chris@0 35 int getPluginVersion() const;
Chris@0 36 string getCopyright() const;
Chris@0 37
Chris@0 38 InputDomain getInputDomain() const;
Chris@0 39 size_t getPreferredBlockSize() const;
Chris@0 40 size_t getPreferredStepSize() const;
Chris@0 41 size_t getMinChannelCount() const;
Chris@0 42 size_t getMaxChannelCount() const;
Chris@0 43
Chris@0 44 ParameterList getParameterDescriptors() const;
Chris@0 45 float getParameter(string identifier) const;
Chris@0 46 void setParameter(string identifier, float value);
Chris@0 47
Chris@0 48 ProgramList getPrograms() const;
Chris@0 49 string getCurrentProgram() const;
Chris@0 50 void selectProgram(string name);
Chris@0 51
Chris@0 52 OutputList getOutputDescriptors() const;
Chris@0 53
Chris@0 54 bool initialise(size_t channels, size_t stepSize, size_t blockSize);
Chris@0 55 void reset();
Chris@0 56
Chris@0 57 FeatureSet process(const float *const *inputBuffers,
Chris@0 58 Vamp::RealTime timestamp);
Chris@0 59
Chris@0 60 FeatureSet getRemainingFeatures();
Chris@0 61
Chris@0 62 protected:
Chris@13 63 typedef vector<float> Signal;
Chris@13 64 typedef vector<double> TFeature;
Chris@13 65
Chris@13 66 int m_bpo;
Chris@15 67 std::unique_ptr<Chromagram> m_refChroma;
Chris@15 68 TFeature m_refTotals;
Chris@13 69 TFeature m_refFeature;
Chris@13 70 Signal m_other;
Chris@1 71 int m_blockSize;
Chris@1 72 int m_frameCount;
Chris@13 73
Chris@15 74 Chromagram::Parameters paramsForTuningFrequency(double hz) const;
Chris@15 75 TFeature computeFeatureFromTotals(const TFeature &totals) const;
Chris@13 76 TFeature computeFeatureFromSignal(const Signal &signal, double hz) const;
Chris@13 77 double featureDistance(const TFeature &other, int rotation = 0) const;
Chris@13 78 int findBestRotation(const TFeature &other) const;
Chris@19 79 std::pair<int, double> findFineFrequency(int coarseCents, double coarseScore);
Chris@13 80
Chris@13 81 mutable std::map<string, int> m_outputs;
Chris@0 82 };
Chris@0 83
Chris@0 84
Chris@0 85 #endif