Chris@23: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ 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 Chris@23: int frameCount; matthiasm@0: FeatureList m_fl; matthiasm@0: size_t m_blockSize; matthiasm@0: size_t m_stepSize; matthiasm@0: int m_lengthOfNoteIndex; Chris@23: float m_meanTuning0; Chris@23: float m_meanTuning1; Chris@23: float m_meanTuning2; matthiasm@0: float m_localTuning0; matthiasm@0: float m_localTuning1; matthiasm@0: float m_localTuning2; matthiasm@0: float m_paling; Chris@23: float m_preset; matthiasm@0: vector m_localTuning; Chris@23: vector m_kernelValue; Chris@23: vector m_kernelFftIndex; Chris@23: vector m_kernelNoteIndex; Chris@23: float *m_dict; matthiasm@0: bool m_tuneLocal; matthiasm@0: int m_dictID; Chris@23: vector m_chorddict; Chris@23: vector m_chordnames; Chris@23: float m_doNormalizeChroma; Chris@23: float m_rollon; matthiasm@3: // list< vector< float > > *logfreqSpecList; matthiasm@0: }; matthiasm@0: matthiasm@0: matthiasm@0: matthiasm@0: #endif