matthiasm@0: matthiasm@0: // Remember to use a different guard symbol in each header! matthiasm@0: #ifndef _NNLS_CHROMA_ matthiasm@0: #define _NNLS_CHROMA_ matthiasm@0: matthiasm@0: #include matthiasm@0: #include matthiasm@0: // #include "FFT.h" matthiasm@0: using namespace std; matthiasm@0: matthiasm@0: using std::string; matthiasm@0: matthiasm@0: class ChordTranscriberData; matthiasm@0: matthiasm@0: matthiasm@0: matthiasm@0: class NNLSChroma : public Vamp::Plugin matthiasm@0: { matthiasm@0: public: matthiasm@0: NNLSChroma(float inputSampleRate); matthiasm@0: virtual ~NNLSChroma(); matthiasm@0: matthiasm@0: string getIdentifier() const; matthiasm@0: string getName() const; matthiasm@0: string getDescription() const; matthiasm@0: string getMaker() const; matthiasm@0: int getPluginVersion() const; matthiasm@0: string getCopyright() const; matthiasm@0: matthiasm@0: InputDomain getInputDomain() const; matthiasm@0: size_t getPreferredBlockSize() const; matthiasm@0: size_t getPreferredStepSize() const; matthiasm@0: size_t getMinChannelCount() const; matthiasm@0: size_t getMaxChannelCount() const; matthiasm@0: matthiasm@0: ParameterList getParameterDescriptors() const; matthiasm@0: float getParameter(string identifier) const; matthiasm@0: void setParameter(string identifier, float value); matthiasm@0: matthiasm@0: ProgramList getPrograms() const; matthiasm@0: string getCurrentProgram() const; matthiasm@0: void selectProgram(string name); matthiasm@0: matthiasm@0: OutputList getOutputDescriptors() const; matthiasm@0: matthiasm@0: bool initialise(size_t channels, size_t stepSize, size_t blockSize); matthiasm@0: void reset(); matthiasm@0: matthiasm@0: FeatureSet process(const float *const *inputBuffers, matthiasm@0: Vamp::RealTime timestamp); matthiasm@0: matthiasm@0: FeatureSet getRemainingFeatures(); matthiasm@0: matthiasm@0: protected: matthiasm@0: // plugin-specific data and methods go here matthiasm@0: int frameCount; matthiasm@0: FeatureList m_fl; matthiasm@0: size_t m_blockSize; matthiasm@0: size_t m_stepSize; matthiasm@0: int m_lengthOfNoteIndex; matthiasm@0: float m_meanTuning0; matthiasm@0: float m_meanTuning1; matthiasm@0: float m_meanTuning2; matthiasm@0: float m_localTuning0; matthiasm@0: float m_localTuning1; matthiasm@0: float m_localTuning2; matthiasm@0: float m_paling; matthiasm@3: float m_preset; matthiasm@0: vector m_localTuning; matthiasm@0: vector m_kernelValue; matthiasm@0: vector m_kernelFftIndex; matthiasm@0: vector m_kernelNoteIndex; matthiasm@3: float *m_dict; matthiasm@0: bool m_tuneLocal; matthiasm@0: int m_dictID; matthiasm@3: // list< vector< float > > *logfreqSpecList; matthiasm@0: }; matthiasm@0: matthiasm@0: matthiasm@0: matthiasm@0: #endif