d@0: /* d@0: ============================================================================== d@0: d@0: AudioSourceFeatureExtractor.h d@0: Created: 11 Aug 2014 10:41:02am d@0: Author: david.ronan d@0: d@0: ============================================================================== d@0: */ d@0: d@0: #ifndef AUDIOSOURCEFEATUREXTRACTOR_H_INCLUDED d@0: #define AUDIOSOURCEFEATUREXTRACTOR_H_INCLUDED d@0: d@0: #include d@0: d@0: #include "FFT.h" d@0: #include "MFCC.h" d@10: #include "SpectralContrast.h" d@0: #include "ObservationData.h" d@0: d@0: #define MAGNITUDESIZE 512 d@0: #define FFTSIZE 1024 d@0: #define PI 3.14159265359 d@7: #include d@0: d@0: class AudioSourceFeatureExtractor d@0: { d@0: d@0: public: d@0: d@0: AudioSourceFeatureExtractor(); d@0: ~AudioSourceFeatureExtractor(); d@0: d@0: void Initialise ( float fSampleRate); d@9: std::vector Process (const std::vector data); d@0: void Finalize(); d@0: d@0: private: d@0: //Computes the magnitude of FFT d@4: void VectorDistance(std::vector vIn1, int stride1, std::vector, int stride2, std::vector &vOut, int strideOut, size_t nElements); d@0: d@4: void SpectralFeatures(std::vector &magnitude, std::vector &previousmagnitude, size_t windowSize, float ¢roid, float &spread, float &skew, float &kurtosis, float &brightness, float &rolloff95, float &rolloff85, float &spectralentropy, float &flatness, float &spectralcf, float &spectralflux); d@0: d@9: float EstimatePerdiodicity(std::vector data); d@0: d@8: void EnvelopeCurve(std::vector data, std::vector &out, float sampleRate); d@0: d@8: void XCorr(std::vector &output, std::vector input1, std::vector input2, size_t maxLag); d@0: d@9: float EntropyOfEnergy(std::vector data); d@0: d@0: float Log2(float n); d@0: d@0: int Sign(float x); d@0: d@0: std::vector LinSpace(float min, float max, int n); d@0: d@0: std::vector LogSpace(float min, float max, int n); d@0: d@7: //void Normalise(float* data, float* &out, size_t len); d@7: d@7: //void ConvolveFunction(float* &z, float *x, float *y, size_t &lenz, size_t lenx, size_t leny); d@7: d@7: //void DownSampler(float* data, float* &out, size_t lenIn, size_t &lenOut, float currentSampleRate, float futureSampleRate); d@7: d@7: //void PDF_getResampleKrnl(std::vector freqVec, float fsProc, int nfft, int nBin, std::vector &outLogFreqVec, std::vector> &outKrnl); d@7: d@1: size_t m_iWriteIdx; d@1: size_t m_iFlucIdx; d@0: float m_fSampleRate; d@4: std::unique_ptr m_fft; d@4: std::vector m_OutReal; d@4: std::vector m_OutImag; d@0: MFCC m_MFCC; d@10: SpectralContrast m_SpectralContrast; d@4: std::vector m_fInputBuffer; d@4: std::vector m_fMagnitudeSpectrum; d@4: std::vector m_fPreviousMagnitudeSpectrum; d@0: std::vector m_fFreqBins; d@0: }; d@0: d@0: #endif // AUDIOSOURCEFEATUREXTRACTOR_H_INCLUDED