Mercurial > hg > batch-feature-extraction-tool
view Source/AudioSourceFeatureExtractor.h @ 3:005e311b5e62
Fixed memory leak. :) Need to fix Debug FFTW now though.
author | Geogaddi\David <d.m.ronan@qmul.ac.uk> |
---|---|
date | Fri, 10 Jul 2015 00:33:15 +0100 |
parents | e86e9c111b29 |
children | 345acbd06029 |
line wrap: on
line source
/* ============================================================================== AudioSourceFeatureExtractor.h Created: 11 Aug 2014 10:41:02am Author: david.ronan ============================================================================== */ #ifndef AUDIOSOURCEFEATUREXTRACTOR_H_INCLUDED #define AUDIOSOURCEFEATUREXTRACTOR_H_INCLUDED #include <vector> #include "FFT.h" #include "MFCC.h" #include "ObservationData.h" #define MAGNITUDESIZE 512 #define FFTSIZE 1024 #define PI 3.14159265359 class AudioSourceFeatureExtractor { public: AudioSourceFeatureExtractor(); ~AudioSourceFeatureExtractor(); void Initialise ( float fSampleRate); std::vector<ObservationData> Process (const float* data, size_t numSamples); void Finalize(); private: //Computes the magnitude of FFT void VectorDistance(const float* vIn1, int stride1, const float* vIn2, int stride2, float* &vOut, int strideOut, size_t nElements); void SpectralFeatures(float* &magnitude, float* &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); void MFCCs(float* &magnitude, size_t windowSize, float sampleRate); float EstimatePerdiodicity(float* data, size_t numSamples); void ConvolveFunction(float* &z, float *x, float *y, size_t &lenz, size_t lenx, size_t leny); void DownSampler(float* data, float* &out, size_t lenIn, size_t &lenOut, float currentSampleRate, float futureSampleRate); void EnvelopeCurve(float* data, float* &out, size_t dataLen, float sampleRate); void Normalise(float* data, float* &out, size_t len); void XCorr(float *&output, float* input1, float* input2, size_t &outputlen, size_t input1len, size_t maxLag); float EntropyOfEnergy(float* data, size_t numSamples); void PDF_getResampleKrnl(std::vector<float> freqVec, float fsProc, int nfft, int nBin, std::vector<float> &outLogFreqVec, std::vector<std::vector<float>> &outKrnl); float Log2(float n); int Sign(float x); std::vector<float> LinSpace(float min, float max, int n); std::vector<float> LogSpace(float min, float max, int n); size_t m_iWriteIdx; size_t m_iFlucIdx; float m_fSampleRate; FFTW *m_fft; float *m_OutReal; float *m_OutImag; MFCC m_MFCC; float* m_fInputBuffer; float* m_fMagnitudeSpectrum; float* m_fPreviousMagnitudeSpectrum; std::vector<float> m_fFreqBins; }; #endif // AUDIOSOURCEFEATUREXTRACTOR_H_INCLUDED