annotate plugins/KeyDetect.h @ 21:d695fc2baa91

* Turning key-mode plugin into a generic key detection plugin, and attempting to debug it
author Chris Cannam <c.cannam@qmul.ac.uk>
date Mon, 22 Jan 2007 17:32:40 +0000
parents
children 6d014fb538db
rev   line source
c@21 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
c@21 2
c@21 3 /*
c@21 4 Vamp
c@21 5
c@21 6 An API for audio analysis and feature extraction plugins.
c@21 7
c@21 8 Centre for Digital Music, Queen Mary, University of London.
c@21 9 Copyright 2006-2007 QMUL.
c@21 10
c@21 11 Permission is hereby granted, free of charge, to any person
c@21 12 obtaining a copy of this software and associated documentation
c@21 13 files (the "Software"), to deal in the Software without
c@21 14 restriction, including without limitation the rights to use, copy,
c@21 15 modify, merge, publish, distribute, sublicense, and/or sell copies
c@21 16 of the Software, and to permit persons to whom the Software is
c@21 17 furnished to do so, subject to the following conditions:
c@21 18
c@21 19 The above copyright notice and this permission notice shall be
c@21 20 included in all copies or substantial portions of the Software.
c@21 21
c@21 22 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
c@21 23 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
c@21 24 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
c@21 25 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
c@21 26 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
c@21 27 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
c@21 28 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
c@21 29
c@21 30 Except as contained in this notice, the names of the Centre for
c@21 31 Digital Music; Queen Mary, University of London; and Chris Cannam
c@21 32 shall not be used in advertising or otherwise to promote the sale,
c@21 33 use or other dealings in this Software without prior written
c@21 34 authorization.
c@21 35 */
c@21 36
c@21 37 #ifndef _GETMODE_PLUGIN_H_
c@21 38 #define _GETMODE_PLUGIN_H_
c@21 39
c@21 40 #include <vamp-sdk/Plugin.h>
c@21 41
c@21 42 #include <dsp/keydetection/GetKeyMode.h>
c@21 43
c@21 44 class KeyDetector : public Vamp::Plugin
c@21 45 {
c@21 46 public:
c@21 47 KeyDetector(float inputSampleRate);
c@21 48 virtual ~KeyDetector();
c@21 49
c@21 50 bool initialise(size_t channels, size_t stepSize, size_t blockSize);
c@21 51 void reset();
c@21 52
c@21 53 InputDomain getInputDomain() const { return TimeDomain; }
c@21 54
c@21 55 std::string getName() const;
c@21 56 std::string getDescription() const;
c@21 57 std::string getMaker() const;
c@21 58 int getPluginVersion() const;
c@21 59 std::string getCopyright() const;
c@21 60
c@21 61 ParameterList getParameterDescriptors() const;
c@21 62 float getParameter(std::string) const;
c@21 63 void setParameter(std::string, float);
c@21 64
c@21 65 OutputList getOutputDescriptors() const;
c@21 66
c@21 67 FeatureSet process(const float *const *inputBuffers,
c@21 68 Vamp::RealTime timestamp);
c@21 69
c@21 70 FeatureSet getRemainingFeatures();
c@21 71
c@21 72 size_t getPreferredStepSize() const;
c@21 73 size_t getPreferredBlockSize() const;
c@21 74
c@21 75 protected:
c@21 76 mutable size_t m_stepSize;
c@21 77 mutable size_t m_blockSize;
c@21 78 float m_tuningFrequency;
c@21 79 int m_length;
c@21 80
c@21 81 const char *getKeyName(int index);
c@21 82
c@21 83 GetKeyMode* m_getKeyMode;
c@21 84 double* m_inputFrame;
c@21 85 int m_prevKey;
c@21 86 };
c@21 87
c@21 88
c@21 89 #endif