Mercurial > hg > batch-feature-extraction-tool
view Source/AudioSourceFeatureExtractor.h @ 1:e86e9c111b29
Updates stuff that potentially fixes the memory leak and also makes it work on Windows and Linux (Need to test). Still have to fix fftw include for linux in Jucer.
author | David Ronan <d.m.ronan@qmul.ac.uk> |
---|---|
date | Thu, 09 Jul 2015 15:01:32 +0100 |
parents | 25bf17994ef1 |
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