Mercurial > hg > pyin
view YinVamp.h @ 137:109c3a2ad930 vamp-fft-revision
Make use of new Vamp FFT interface. This reduces the runtime of the regression test from 5.7 to 2.2 seconds on this machine, but it does need the right version of the SDK, which is currently only available in the vampipe branch.
author | Chris Cannam |
---|---|
date | Fri, 19 Aug 2016 13:26:40 +0100 |
parents | 8e50e88417e6 |
children |
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ /* pYIN - A fundamental frequency estimator for monophonic audio Centre for Digital Music, Queen Mary, University of London. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See the file COPYING included with this distribution for more information. */ #ifndef _YINVAMP_H_ #define _YINVAMP_H_ #include <vamp-sdk/Plugin.h> #include "Yin.h" class YinVamp : public Vamp::Plugin { public: YinVamp(float inputSampleRate); virtual ~YinVamp(); std::string getIdentifier() const; std::string getName() const; std::string getDescription() const; std::string getMaker() const; int getPluginVersion() const; std::string getCopyright() const; InputDomain getInputDomain() const; size_t getPreferredBlockSize() const; size_t getPreferredStepSize() const; size_t getMinChannelCount() const; size_t getMaxChannelCount() const; ParameterList getParameterDescriptors() const; float getParameter(std::string identifier) const; void setParameter(std::string identifier, float value); ProgramList getPrograms() const; std::string getCurrentProgram() const; void selectProgram(std::string name); OutputList getOutputDescriptors() const; bool initialise(size_t channels, size_t stepSize, size_t blockSize); void reset(); FeatureSet process(const float *const *inputBuffers, Vamp::RealTime timestamp); FeatureSet getRemainingFeatures(); protected: size_t m_channels; size_t m_stepSize; size_t m_blockSize; float m_fmin; float m_fmax; Yin m_yin; mutable int m_outNoF0; mutable int m_outNoPeriodicity; mutable int m_outNoRms; mutable int m_outNoSalience; float m_yinParameter; float m_outputUnvoiced; }; #endif