1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ 2 3 /* 4 QM Vamp Plugin Set 5 6 Centre for Digital Music, Queen Mary, University of London. 7 8 This program is free software; you can redistribute it and/or 9 modify it under the terms of the GNU General Public License as 10 published by the Free Software Foundation; either version 2 of the 11 License, or (at your option) any later version. See the file 12 COPYING included with this distribution for more information. 13 */ 14 15 #ifndef _ONSET_DETECT_PLUGIN_H_ 16 #define _ONSET_DETECT_PLUGIN_H_ 17 18 #include <vamp-sdk/Plugin.h> 19 20 class OnsetDetectorData; 21 22 class OnsetDetector : public Vamp::Plugin 23 { 24 public: 25 OnsetDetector(float inputSampleRate); 26 virtual ~OnsetDetector(); 27 28 bool initialise(size_t channels, size_t stepSize, size_t blockSize); 29 void reset(); 30 getInputDomain()31 InputDomain getInputDomain() const { return FrequencyDomain; } 32 33 std::string getIdentifier() const; 34 std::string getName() const; 35 std::string getDescription() const; 36 std::string getMaker() const; 37 int getPluginVersion() const; 38 std::string getCopyright() const; 39 40 ParameterList getParameterDescriptors() const; 41 float getParameter(std::string) const; 42 void setParameter(std::string, float); 43 44 ProgramList getPrograms() const; 45 std::string getCurrentProgram() const; 46 void selectProgram(std::string program); 47 48 size_t getPreferredStepSize() const; 49 size_t getPreferredBlockSize() const; 50 51 OutputList getOutputDescriptors() const; 52 53 FeatureSet process(const float *const *inputBuffers, 54 Vamp::RealTime timestamp); 55 56 FeatureSet getRemainingFeatures(); 57 58 protected: 59 OnsetDetectorData *m_d; 60 int m_dfType; 61 float m_sensitivity; 62 bool m_whiten; 63 std::string m_program; 64 static float m_preferredStepSecs; 65 }; 66 67 68 #endif 69