cannam@7: /* cannam@7: * Author: c.landone cannam@7: * Description: cannam@7: * cannam@7: * Syntax: C++ cannam@7: * cannam@7: * Copyright (c) 2005 Centre for Digital Music ( C4DM ) cannam@7: * Queen Mary Univesrity of London cannam@7: * cannam@7: * cannam@7: * This program is not free software; you cannot redistribute it cannam@7: * without the explicit authorization from the centre for digital music, cannam@7: * queen mary university of london cannam@7: * cannam@7: */ cannam@7: cannam@40: #ifndef GETKEYMODE_H cannam@7: #define GETKEYMODE_H cannam@7: cannam@7: cannam@7: #include "dsp/rateconversion/Decimator.h" cannam@7: #include "dsp/chromagram/Chromagram.h" cannam@7: cannam@7: cannam@7: class GetKeyMode cannam@7: { cannam@7: public: cannam@9: GetKeyMode( int sampleRate, float tuningFrequency, cannam@9: double hpcpAverage, double medianAverage ); cannam@7: cannam@7: virtual ~GetKeyMode(); cannam@7: cannam@7: int process( double* PCMData ); cannam@7: cannam@7: double krumCorr( double* pData1, double* pData2, unsigned int length ); cannam@7: cannam@7: unsigned int getBlockSize() { return m_ChromaFrameSize*m_DecimationFactor; } cannam@7: unsigned int getHopSize() { return m_ChromaHopSize*m_DecimationFactor; } cannam@7: cannam@7: double* getChroma() { return m_ChrPointer; } cannam@7: unsigned int getChromaSize() { return m_BPO; } cannam@7: cannam@7: double* getMeanHPCP() { return m_MeanHPCP; } cannam@7: cannam@40: double *getKeyStrengths() { return m_keyStrengths; } cannam@40: cannam@43: bool isModeMinor( int key ); cannam@7: cannam@7: protected: cannam@7: cannam@7: double m_hpcpAverage; cannam@7: double m_medianAverage; cannam@7: unsigned int m_DecimationFactor; cannam@7: cannam@7: //Decimator (fixed) cannam@7: Decimator* m_Decimator; cannam@7: cannam@7: //chroma configuration cannam@9: ChromaConfig m_ChromaConfig; cannam@7: cannam@7: //Chromagram object cannam@7: Chromagram* m_Chroma; cannam@7: cannam@7: //Chromagram output pointer cannam@7: double* m_ChrPointer; cannam@7: cannam@7: //Framesize cannam@7: unsigned int m_ChromaFrameSize; cannam@7: //Hop cannam@7: unsigned int m_ChromaHopSize; cannam@7: //Bins per octave cannam@7: unsigned int m_BPO; cannam@7: cannam@7: cannam@7: unsigned int m_ChromaBuffersize; cannam@7: unsigned int m_MedianWinsize; cannam@7: cannam@7: unsigned int m_bufferindex; cannam@7: unsigned int m_ChromaBufferFilling; cannam@7: unsigned int m_MedianBufferFilling; cannam@7: cannam@7: cannam@7: double* m_DecimatedBuffer; cannam@7: double* m_ChromaBuffer; cannam@7: double* m_MeanHPCP; cannam@7: cannam@7: double* m_MajCorr; cannam@7: double* m_MinCorr; cannam@7: double* m_Keys; cannam@7: int* m_MedianFilterBuffer; cannam@7: int* m_SortedBuffer; cannam@40: cannam@40: double *m_keyStrengths; cannam@7: }; cannam@7: cannam@7: #endif // !defined GETKEYMODE_H