view Source/FeatureData.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
line wrap: on
line source
/*
  ==============================================================================

    FeatureData.h
    Created: 28 Aug 2014 6:41:48pm
    Author:  david.ronan

  ==============================================================================
*/

#ifndef FEATUREDATA_H_INCLUDED
#define FEATUREDATA_H_INCLUDED

#include "ObservationData.h"
#include <string>
#include <vector>

class FeatureData
{
public:
	FeatureData();
	~FeatureData();
	FeatureData(std::vector<ObservationData> observationData, std::string label, std::string fileName, float sampleRate, int windowSize, float lengthOfAudioClip , float poolingTimeFactor)
	{
		m_ObservationData = observationData;
		m_Label = label;
		m_FileName = fileName;
		m_SampleRate = sampleRate;
		m_LengthOfAudioClip = lengthOfAudioClip;
		m_WindowSize = windowSize;
		m_poolingTimeFactor = poolingTimeFactor;
		
		ComputeLowEnergyFeature();
		ComputeDeltaMFCCs();

		//Pool the Data
		PoolData(m_poolingTimeFactor);
	};

	std::vector<ObservationData> GetObservationData(){return m_ObservationData;}

	std::vector<ObservationData> GetPooldedObservationDataAverage(){return m_PooledObservationDataAverage;}
	std::vector<ObservationData> GetWholeTrackObservationDataAverage(){return m_WholeTrackObservationDataAverage;}

	std::vector<ObservationData> GetPooldedObservationDataStd(){return m_PooledObservationDataStd;}
	std::vector<ObservationData> GetWholeTrackObservationDataStd(){return m_WholeTrackObservationDataStd;}

	std::vector<ObservationData> GetPooldedObservationDataMax(){return m_PooledObservationDataMax;}
	std::vector<ObservationData> GetWholeTrackObservationDataMax(){return m_WholeTrackObservationDataMax;}

	std::vector<ObservationData> GetPooldedObservationDataMin(){return m_PooledObservationDataMin;}
	std::vector<ObservationData> GetWholeTrackObservationDataMin(){return m_WholeTrackObservationDataMin;}

	std::string GetLabel(){return m_Label;}
	float GetPoolingTimeFactor(){return m_poolingTimeFactor;}


private:
	void ComputeLowEnergyFeature();
	void ComputeDeltaMFCCs();
	void PoolData(float timefactor);

	float Average(std::vector<float> v);
	float Deviation(std::vector<float> v, float ave);
	float Max(std::vector<float> v);
	float Min(std::vector<float> v);

	std::vector<ObservationData> m_ObservationData;

	std::vector<ObservationData> m_PooledObservationDataAverage;
	std::vector<ObservationData> m_WholeTrackObservationDataAverage;

	std::vector<ObservationData> m_PooledObservationDataStd;
	std::vector<ObservationData> m_WholeTrackObservationDataStd;

	std::vector<ObservationData> m_PooledObservationDataMax;
	std::vector<ObservationData> m_WholeTrackObservationDataMax;

	std::vector<ObservationData> m_PooledObservationDataMin;
	std::vector<ObservationData> m_WholeTrackObservationDataMin;

	std::string m_Label;
	std::string m_FileName;

	float m_SampleRate;
	float m_LengthOfAudioClip;

	int m_WindowSize;
	float m_poolingTimeFactor;

	std::vector<std::vector<float>> m_deltamfccs;
};



#endif  // FEATUREDATA_H_INCLUDED