changeset 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 c649e493c30a
files Source/AudioReader.cpp Source/AudioReader.h Source/AudioSourceFeatureExtractor.cpp Source/AudioSourceFeatureExtractor.h Source/FFT.cpp Source/FFTW.h Source/FeatureData.cpp Source/MFCC.cpp Source/ParseCSV.cpp Source/WriteCSV.cpp
diffstat 10 files changed, 253 insertions(+), 256 deletions(-) [+]
line wrap: on
line diff
--- a/Source/AudioReader.cpp	Thu Jul 09 01:12:16 2015 +0100
+++ b/Source/AudioReader.cpp	Thu Jul 09 15:01:32 2015 +0100
@@ -20,8 +20,8 @@
 #define SAMPLERATE 22050.0f
 
 AudioReader::AudioReader()
-{
-	m_audio_format_manager.registerBasicFormats();
+{
+
 };
 
 AudioReader::~AudioReader()
@@ -29,45 +29,47 @@
 
 };
 
-
-
 std::vector<FeatureData> AudioReader::Read(AudioFileData audioFileData, float poolTimeSecs, int analysisWindowSize)
 {
 	WriteCSV writeCSV = WriteCSV();
 	std::vector<FeatureData> featureData = std::vector<FeatureData>();
 	std::string CSVFileName = "..\\FeatureData" + writeCSV.currentDateTime();
-		
+
 	vector<string> audioFileNames = audioFileData.GetFileNames();
-	vector<string> labels = audioFileData.GetLabels();
+	vector<string> labels = audioFileData.GetLabels();
+
+	AudioFormatManager m_formatManager;
+    m_formatManager.registerBasicFormats();
+	//AudioSourceFeatureExtractor audioSourceFeatureExtractor = AudioSourceFeatureExtractor();
+	m_AudioSourceFeatureExtractor.Initialise(SAMPLERATE);
 
-	//AudioSourceFeatureExtractor audioSourceFeatureExtractor = AudioSourceFeatureExtractor();	
-	m_AudioSourceFeatureExtractor.Initialise(SAMPLERATE);
-	
 	for(size_t i=0; i<audioFileNames.size(); i++)
 	{
-		float percentcomplete = static_cast<float>(i) / static_cast<float>(audioFileNames.size()) * 100.0f;
+		float percentcomplete = (float)i / (float)audioFileNames.size() * 100.0f;
 
 		std::string outputStr = "Extracting features for " + audioFileNames[i] + "\n" +  std::to_string(percentcomplete) + "% complete...";
 		cout << outputStr;
 
 		//Create file from    our audio data
 		File audioFile(audioFileNames[i].c_str());
-		
-		AudioFormatReader* audio_format_reader = m_audio_format_manager.createReaderFor(audioFile);		
 
-		if(audio_format_reader != nullptr)
+		AudioFormatReader* m_audioFileReader = m_formatManager.createReaderFor(audioFile);
+
+
+
+		if(m_audioFileReader != NULL)
 		{
-			m_fSampleRate		= static_cast<float>(audio_format_reader->sampleRate);
-			m_iLengthInSamples  = static_cast<int>(audio_format_reader->lengthInSamples);
-			m_iNumOfChannels    = audio_format_reader->numChannels;
+			m_fSampleRate		= (float)(m_audioFileReader->sampleRate);
+			m_iLengthInSamples  = (int)m_audioFileReader->lengthInSamples;
+			m_iNumOfChannels    = m_audioFileReader->numChannels;
 
 			if (m_fSampleRate != 22050.0f)
 			{
 				cout << "\n\n\nERROR: File is not the required 22050 Hz sample rate.!!!\n\n\n";
 			}
-			
+
 			//Get loudest 30 secs. of audio
-			int numOfSamplesToCollect = static_cast<int>(analysisWindowSize * m_fSampleRate);
+			int numOfSamplesToCollect = (int)(analysisWindowSize * m_fSampleRate);
 
 			if(m_iLengthInSamples <= numOfSamplesToCollect)
 			{
@@ -76,20 +78,20 @@
 
 			//Length of the full track in stereo;
 			int* destSamples[2] = {0};
-			int* L = new int[static_cast<size_t>(m_iLengthInSamples)]; 
-			memset(L, 0, static_cast<size_t>(m_iLengthInSamples)*sizeof(float)); 
+			int* L = new int[(size_t)(m_iLengthInSamples)];
+			memset(L, 0, (size_t)m_iLengthInSamples*sizeof(float));
 			destSamples[0]=L;
-			destSamples[1]=L;				
-	
+			destSamples[1]=L;
+
 			//30 sec clips to check energy levels
-			float* destSamplesFloat = new float[static_cast<size_t>(numOfSamplesToCollect)];
-			memset(destSamplesFloat, 0, static_cast<size_t>(numOfSamplesToCollect)*sizeof(float)); 
+			float* destSamplesFloat = new float[(size_t)numOfSamplesToCollect];
+			memset(destSamplesFloat, 0, (size_t)numOfSamplesToCollect*sizeof(float));
 
 			////30 sec clips to check energy levels
 			//float* destSamplesFloatLoudest = new float[(size_t)numOfSamplesToCollect];
-			//memset(destSamplesFloatLoudest, 0, (size_t)numOfSamplesToCollect*sizeof(float)); 
+			//memset(destSamplesFloatLoudest, 0, (size_t)numOfSamplesToCollect*sizeof(float));
 
-			int timesToLoop;
+			int timesToLoop = 0;
 
 			if(m_iLengthInSamples == numOfSamplesToCollect)
 			{
@@ -97,17 +99,17 @@
 			}
 			else
 			{
-				timesToLoop = static_cast<int>((m_iLengthInSamples - numOfSamplesToCollect) / (ENERGYSEARCHTIME * m_fSampleRate));
+				timesToLoop = (int)((m_iLengthInSamples - numOfSamplesToCollect) / (ENERGYSEARCHTIME * m_fSampleRate));
 			}
 
 			std::vector<float> thirtySecEnergy = std::vector<float>();
 
 			//float loudestEnergy = 0.0;
 
-			audio_format_reader->readSamples(destSamples, m_iNumOfChannels, 0, 0, m_iLengthInSamples);
+			m_audioFileReader->readSamples(destSamples, 2, 0, 0, m_iLengthInSamples);
 
 			for(int j=0; j < timesToLoop;j++)
-			{	
+			{
 				float fSum=0.f;
 
 				for(int n=0; n<numOfSamplesToCollect; n++)
@@ -115,11 +117,11 @@
 					//Sum to mono if needed and workout the energy for each 30 sec. frame
 					if(m_iNumOfChannels > 1)
 					{
-						destSamplesFloat[n] = (static_cast<float>((destSamples[0][int(j * ENERGYSEARCHTIME * m_fSampleRate) + n] + destSamples[1][int( j * ENERGYSEARCHTIME * m_fSampleRate) + n]) / 2) / (0x7fffffff));
+						destSamplesFloat[n] = ((float)((destSamples[0][int(j * ENERGYSEARCHTIME * m_fSampleRate) + n] + destSamples[1][int( j * ENERGYSEARCHTIME * m_fSampleRate) + n]) / 2) / (0x7fffffff));
 					}
 					else
 					{
-						destSamplesFloat[n] = (static_cast<float>(destSamples[0][int(j * ENERGYSEARCHTIME * m_fSampleRate) + n]) / (0x7fffffff));
+						destSamplesFloat[n] = ((float)(destSamples[0][int(j * ENERGYSEARCHTIME * m_fSampleRate) + n]) / (0x7fffffff));
 					}
 
 					fSum+=(destSamplesFloat[n] * destSamplesFloat[n]);
@@ -137,82 +139,75 @@
 				thirtySecEnergy.push_back(fSum);
 			}
 
-			//Find the index of the section with the most energy 
+			//Find the index of the section with the most energy
 			int maxIdx = std::distance(thirtySecEnergy.begin(), max_element(thirtySecEnergy.begin(), thirtySecEnergy.end()));
 
 			int* thirtySecSamples[2] = {0};
-			int* L30 = new int[static_cast<size_t>(numOfSamplesToCollect)];
-			memset(L30, 0, static_cast<size_t>(numOfSamplesToCollect)*sizeof(float));
+			int* L30 = new int[(size_t)numOfSamplesToCollect];
+			memset(L30, 0, (size_t)numOfSamplesToCollect*sizeof(float));
 			thirtySecSamples[0]=L30; //Left channel
-			thirtySecSamples[1]=L30; //Left right		
+			thirtySecSamples[1]=L30; //Left right
 
 			//Read the 30 secs. in
-			audio_format_reader->readSamples(thirtySecSamples, m_iNumOfChannels, 0, int(maxIdx * ENERGYSEARCHTIME * m_fSampleRate), numOfSamplesToCollect);
-			memset(destSamplesFloat, 0, static_cast<size_t>(numOfSamplesToCollect)*sizeof(float)); 
+			m_audioFileReader->readSamples(thirtySecSamples, 2, 0, int(maxIdx * ENERGYSEARCHTIME * m_fSampleRate), numOfSamplesToCollect);
+			memset(destSamplesFloat, 0, (size_t)numOfSamplesToCollect*sizeof(float));
 
 			for(int n=0; n<numOfSamplesToCollect; n++)
-			{			
-				//Sum to mono if needed 
+			{
+				//Sum to mono if needed
 				if(m_iNumOfChannels > 1)
 				{
-					destSamplesFloat[n] = (static_cast<float>((thirtySecSamples[0][n] + thirtySecSamples[1][n]) / 2) / (0x7fffffff));
+					destSamplesFloat[n] = ((float)((thirtySecSamples[0][n] + thirtySecSamples[1][n]) / 2) / (0x7fffffff));
 				}
 				else
 				{
-					destSamplesFloat[n] = (static_cast<float>(thirtySecSamples[0][n]) / (0x7fffffff));
+					destSamplesFloat[n] = ((float)(thirtySecSamples[0][n]) / (0x7fffffff));
 				}
 			}
-			
-			std::vector<ObservationData> newObs =  m_AudioSourceFeatureExtractor.Process(destSamplesFloat, numOfSamplesToCollect);	
 
-			FeatureData newFeature = FeatureData(newObs, labels[i], audioFileNames[i], m_fSampleRate, FFTSIZE, static_cast<float>(numOfSamplesToCollect), poolTimeSecs);
-		
+			std::vector<ObservationData> newObs =  m_AudioSourceFeatureExtractor.Process(destSamplesFloat, numOfSamplesToCollect);
+
+			FeatureData newFeature = FeatureData(newObs, labels[i], audioFileNames[i], m_fSampleRate, FFTSIZE, (float)numOfSamplesToCollect, poolTimeSecs);
+
 			writeCSV.Write(CSVFileName, newFeature);
-			
+
 			//Update the screen information;
-			
-			cout << string(outputStr.length(), '\b');
-		
+			cout << cout << string(outputStr.length(),'\b');
+
 			//Cleanup
-			if(L != nullptr)
+			if(L != NULL)
 			{
 				delete[] L;
 				L = nullptr;
 			}
 
-			if(destSamplesFloat != nullptr)
+			if(destSamplesFloat != NULL)
 			{
 				delete[] destSamplesFloat;
 				destSamplesFloat = nullptr;
 				//destSamplesFloatLoudest = nullptr;
 			}
-			//Cleanup
-			if (audio_format_reader != nullptr)
-			{
-				delete[] audio_format_reader;
-				audio_format_reader = nullptr;
-			}
+
 			//if(destSamplesFloatLoudest != NULL)
 			//{
 			//	delete[] destSamplesFloatLoudest;
-			//	
+			//
 			//}
 		}
 		else
 		{
 			cout << "\n\n\nERROR: Could not find file!!!\n\n\n";
-
-			if (audio_format_reader != nullptr)
-			{
-				delete[] audio_format_reader;
-				audio_format_reader = nullptr;
-			}
 		}
 
-		
+		//Cleanup
+		if(m_audioFileReader != NULL)
+		{
+			delete[] m_audioFileReader;
+			m_audioFileReader  = nullptr;
+		}
 	}
 
 	m_AudioSourceFeatureExtractor.Finalize();
-	
+
 	return featureData;
-};
\ No newline at end of file
+};
--- a/Source/AudioReader.h	Thu Jul 09 01:12:16 2015 +0100
+++ b/Source/AudioReader.h	Thu Jul 09 15:01:32 2015 +0100
@@ -23,13 +23,14 @@
 class AudioReader
 {
 public:
-	AudioReader();	
+	AudioReader();
 	~AudioReader();
 	std::vector<FeatureData> Read(AudioFileData audioFileData, float poolTimeSecs, int analysisWindowSize);
 
 private:
-	AudioSourceFeatureExtractor m_AudioSourceFeatureExtractor;
-	AudioFormatManager m_audio_format_manager;
+
+	AudioSourceFeatureExtractor m_AudioSourceFeatureExtractor;
+
 
 	float m_fSampleRate;
 	int	  m_iLengthInSamples;
--- a/Source/AudioSourceFeatureExtractor.cpp	Thu Jul 09 01:12:16 2015 +0100
+++ b/Source/AudioSourceFeatureExtractor.cpp	Thu Jul 09 15:01:32 2015 +0100
@@ -14,7 +14,7 @@
 #include <cmath>
 #include <algorithm>
 #include <string>
-#include <windows.h>
+//#include <windows.h>
 
 //==============================================================================  AudioSourceFeatureExtractor
 AudioSourceFeatureExtractor::AudioSourceFeatureExtractor() // m_fft(FFTSIZE)
@@ -30,43 +30,43 @@
 	memset(m_fMagnitudeSpectrum, 0, MAGNITUDESIZE * sizeof(float));
 	memset(m_fPreviousMagnitudeSpectrum, 0, MAGNITUDESIZE * sizeof(float));
 
-	
+
 }
 
 //============================================================================== ~AudioSourceFeatureExtractor
 AudioSourceFeatureExtractor::~AudioSourceFeatureExtractor()
 {
-	if(m_fInputBuffer != nullptr)
+	if(m_fInputBuffer != NULL)
 	{
 		delete m_fInputBuffer;       // memory freed up
 		m_fInputBuffer = nullptr;
 	}
 
-	if(m_fMagnitudeSpectrum != nullptr)
+	if(m_fMagnitudeSpectrum != NULL)
 	{
 		delete m_fMagnitudeSpectrum;       // memory freed up
 		m_fMagnitudeSpectrum = nullptr;
 	}
 
-	if(m_fPreviousMagnitudeSpectrum != nullptr)
+	if(m_fPreviousMagnitudeSpectrum != NULL)
 	{
 		delete m_fPreviousMagnitudeSpectrum;       // memory freed up
 		m_fPreviousMagnitudeSpectrum = nullptr;
 	}
 
-	if (m_OutReal != nullptr)
+	if (m_OutReal != NULL)
 	{
 		delete[] m_OutReal;
 		m_OutReal  = nullptr;
 	}
 
-	if (m_OutImag != nullptr)
+	if (m_OutImag != NULL)
 	{
 		delete[] m_OutImag;
 		m_OutImag  = nullptr;
 	}
 
-	if (m_fft != nullptr)
+	if (m_fft != NULL)
 	{
 		delete m_fft;
 		m_fft  = nullptr;
@@ -76,9 +76,9 @@
 
 //==============================================================================  init
 void AudioSourceFeatureExtractor::Initialise(float fSampleRate)
-{	
+{
 	m_fSampleRate = fSampleRate;
-	m_iWriteIdx = 0;	
+	m_iWriteIdx = 0;
 
 	for (int i = 1; i <= MAGNITUDESIZE; i++)
 	{
@@ -88,12 +88,12 @@
 
 	m_MFCC.initMFFCvariables(12, MAGNITUDESIZE, m_fSampleRate);
 
-	
+
 }
 
 //==============================================================================  process
 std::vector<ObservationData> AudioSourceFeatureExtractor::Process( const float* data, size_t numSamples)
-{	
+{
 	std::vector<ObservationData> observations = std::vector<ObservationData>();
 
 	memset(m_fInputBuffer,       0, FFTSIZE * sizeof(float));
@@ -103,7 +103,7 @@
 
 	float perdiodicity = EstimatePerdiodicity(const_cast<float*>(data), numSamples);
 
-	float entropyofenergy = EntropyOfEnergy(const_cast<float*>(data), numSamples);	
+	float entropyofenergy = EntropyOfEnergy(const_cast<float*>(data), numSamples);
 
 	for(size_t n = 0; n < numSamples; n++)
 	{
@@ -126,21 +126,21 @@
 
 				rms += (m_fInputBuffer[i] * m_fInputBuffer[i]);
 			}
-			
+
 			rms /= FFTSIZE;
-			rms = sqrt(rms);	
+			rms = sqrt(rms);
 
 			crestfactor = peakvalue/(rms + std::numeric_limits<float>::epsilon());
 
 			float ZCR = 0;
 			float inputBuffer2[FFTSIZE] = {0.0};
 
-			for (int i = 1; i < FFTSIZE; i++) 
+			for (int i = 1; i < FFTSIZE; i++)
 			{
 				inputBuffer2[i] = m_fInputBuffer[i -1];
 			}
 
-			for (int i = 0; i < FFTSIZE; i++) 
+			for (int i = 0; i < FFTSIZE; i++)
 			{
 				ZCR += (abs(Sign(m_fInputBuffer[i]) - Sign(inputBuffer2[i])));
 			}
@@ -148,14 +148,14 @@
 			ZCR /= (2 * FFTSIZE);
 
 			//////////////////////////////////////////////////////////////////
-			for (int i = 0; i < FFTSIZE; i++) 
+			for (int i = 0; i < FFTSIZE; i++)
 			{
-				float multiplier = static_cast<float>(0.5 * (1 - cos(2 * PI * i / (FFTSIZE - 1))));
+				float multiplier = (float) (0.5 * (1 - cos(2*PI*i/(FFTSIZE -1))));
 				m_fInputBuffer[i] = multiplier * m_fInputBuffer[i];
 			}
 
 			//Compute the FFT
-			
+
 			memset(m_OutReal, 0, sizeof(float)*FFTSIZE);
 			memset(m_OutImag, 0, sizeof(float)*FFTSIZE);
 
@@ -175,18 +175,18 @@
 			float spectralentropy = 0;
 			float flatness = 0;
 			float spectralcf = 0;
-			float spectralflux = 0;		
+			float spectralflux = 0;
 			std::vector<float> mfccs;
 
-			SpectralFeatures(m_fMagnitudeSpectrum, m_fPreviousMagnitudeSpectrum, MAGNITUDESIZE, centroid, spread, skewness, kurtosis, brightness, rolloff85, rolloff95, spectralentropy, flatness, spectralcf, spectralflux);		
-						
+			SpectralFeatures(m_fMagnitudeSpectrum, m_fPreviousMagnitudeSpectrum, MAGNITUDESIZE, centroid, spread, skewness, kurtosis, brightness, rolloff85, rolloff95, spectralentropy, flatness, spectralcf, spectralflux);
+
 			m_MFCC.ComputeMFCC(m_fMagnitudeSpectrum, mfccs);
 
 			//Update for Spectral Flux
 			for(int i = 0; i < MAGNITUDESIZE; i++)
 			{
 				m_fPreviousMagnitudeSpectrum[i] = m_fMagnitudeSpectrum[i];
-			}			
+			}
 
 			//50% Hop size
 			for(int i = MAGNITUDESIZE; i < FFTSIZE; i++)
@@ -194,14 +194,14 @@
 				m_fInputBuffer[i - MAGNITUDESIZE] = m_fInputBuffer[i];
 				m_iWriteIdx = MAGNITUDESIZE;
 			}
-					
+
 			//create an observation for this window and push it to the list of observations for this 30 sec. audio clip
 			ObservationData newObservation = ObservationData(rms, peakvalue, crestfactor, ZCR, centroid, spread, skewness, kurtosis, brightness, rolloff85, rolloff95, spectralentropy, flatness, spectralcf, spectralflux, mfccs, perdiodicity, entropyofenergy);
-			observations.push_back(newObservation);			
-					
+			observations.push_back(newObservation);
+
 		}
 	}
-	
+
 	return observations;
 }
 
@@ -244,7 +244,7 @@
 
 	for (size_t i = 0; i < windowSize; i++)
 	{
-		//Moments		
+		//Moments
 		summagbin += (m_fFreqBins[i] * magnitude[i]);
 		summag += magnitude[i];
 		sumprevmag += prevmagnitude[i];
@@ -256,15 +256,15 @@
 		}
 
 		float energy = magnitude[i] * magnitude[i];
-		
+
 		//Roll off + Flatness
-		
+
 		totalenergy += energy;
-		float exponent = static_cast<float>(1.0/static_cast<float>(windowSize));
-		
+		float exponent = (float)(1.0/(float)windowSize);
+
 		if(energy != 0)
 		{
-			geo *= pow(energy, exponent);	
+			geo *= pow(energy, exponent);
 		}
 	}
 
@@ -285,7 +285,7 @@
 		//Spectral Flux
 		spectralflux += ((norm - normprev) * (norm - normprev));
 
-		//Entropy		
+		//Entropy
 		normalisedMagSumEntropy += (norm * log(norm + std::numeric_limits<float>::epsilon()));
 
 		//Moments
@@ -331,7 +331,7 @@
 	//Roll off 85% - 95%
 	/////////////////////////////////////////////////////////
 
-	while ((currEnergy95 <= 0.95 * totalenergy) && (countFFT95 < static_cast<int>(windowSize)))
+	while ((currEnergy95 <= 0.95 * totalenergy) && (countFFT95 < (int)windowSize))
 	{
 		currEnergy95 += (magnitude[countFFT95] * magnitude[countFFT95]);
 		countFFT95 += 1;
@@ -355,7 +355,7 @@
 	}
 	else
 	{
-		rolloff85 = (static_cast<float>(countFFT85) / static_cast<float>(windowSize));
+		rolloff85 = (((float)countFFT85) / (float)windowSize);
 	}
 
 	//Normalization
@@ -366,7 +366,7 @@
 	}
 	else
 	{
-		rolloff95 = (static_cast<float>(countFFT95) / static_cast<float>(windowSize));
+		rolloff95 = (((float)countFFT95) / (float)windowSize);
 	}
 
 	/////////////////////////////////////////////////////
@@ -374,7 +374,7 @@
 	//Spectral Entropy
 	/////////////////////////////////////////////////////////
 
-	spectralentropy = static_cast<float>((normalisedMagSumEntropy / log(static_cast<float>(windowSize))) * - 1);
+	spectralentropy = (float) ((normalisedMagSumEntropy / log((float)windowSize)) * - 1);
 
 	/////////////////////////////////////////////////////////
 
@@ -384,7 +384,7 @@
 	/////////////////////////////////////////////////////////
 	if(totalenergy != 0 && geo != 0)
 	{
-		flatness = geo / (totalenergy / static_cast<float>(windowSize));
+		flatness = geo / (totalenergy / (float)windowSize);
 	}
 	else
 	{
@@ -419,21 +419,21 @@
 
 	zptr = z;
 
-	for (size_t i = 0; i < lenz; i++) 
+	for (size_t i = 0; i < lenz; i++)
 	{
 		s = 0.0;
 		n_lo = 0 > (i - leny + 1 ) ? 0 : (i - leny + 1);
 		n_hi = (lenx - 1) < i ? (lenx - 1): i;
 	    xp = &x[0] + n_lo;
 		yp = &y[0] + i - n_lo;
-		
-		for (size_t n = n_lo; n <= n_hi; n++) 
+
+		for (size_t n = n_lo; n <= n_hi; n++)
 		{
 			s += *xp * *yp;
 			xp++;
 			yp--;
 		}
-		
+
 		*zptr=s;
 		zptr++;
 	}
@@ -449,10 +449,10 @@
     {
         fftSize *= 2;
     }
-    
+
 	FFTW fft1 = FFTW(fftSize);
 	FFTW fft2 = FFTW(fftSize);
-	
+
     // allocate space for FFTW processing
     float *in1 = new float[fftSize];
     float *in2 = new float[fftSize];
@@ -525,41 +525,41 @@
 	fftwf_free(result);
 	fftwf_free(product);
 
-	if(in1 != nullptr)
+	if(in1 != NULL)
 	{
 		delete[] in1;
 		in1 = nullptr;
 	}
 
-	if(in2 != nullptr)
+	if(in2 != NULL)
 	{
 		delete[] in2;
 		in2 = nullptr;
 	}
 
-	if(out1Real != nullptr)
+	if(out1Real != NULL)
 	{
 		delete[] out1Real;
 		out1Real= nullptr;
 	}
 
-	if(out1Imag != nullptr)
+	if(out1Imag != NULL)
 	{
 		delete[] out1Imag;
 		out1Imag= nullptr;
 	}
 
-	if(out2Real != nullptr)
+	if(out2Real != NULL)
 	{
 		delete[] out2Real;
 		out2Real= nullptr;
 	}
 
-	if(out2Imag != nullptr)
+	if(out2Imag != NULL)
 	{
 		delete[] out2Imag;
 		out2Imag= nullptr;
-	}	
+	}
 }
 
 float AudioSourceFeatureExtractor::EstimatePerdiodicity(float* data, size_t numSamples)
@@ -578,7 +578,7 @@
 
 	EnvelopeCurve(downsampleddata, downsampleddata, numSamples, m_fSampleRate);
 
-	auto startLag = static_cast<int>(floor(static_cast<float>(60.0 / 480.0 * m_fSampleRate)));
+	int startLag = (int)floor((float)(60.0 / 480.0 * m_fSampleRate));
 	int endLag = (int)floor((float)(60.0 / 30.0 * m_fSampleRate));
 	int thresh = (int)floor((float)(.2 * m_fSampleRate));
 
@@ -586,7 +586,7 @@
 	//Normalise(downsampleddata, downsampleddata, downsamplelength);
 
 	size_t xcorrlen = 0;
-	XCorr(xcorr, downsampleddata, downsampleddata, xcorrlen, numSamples, endLag);    
+	XCorr(xcorr, downsampleddata, downsampleddata, xcorrlen, numSamples, endLag);
 
 	int i = (int)floor(xcorrlen / 2);
 
@@ -597,7 +597,7 @@
 	}
 
 	std::vector<float> temp2;
-	for(size_t j = static_cast<size_t>(max(1,startLag)); j < static_cast<size_t>(min(endLag,temp.size())); j++)
+	for(size_t j = (size_t)std::max(1,startLag); j < (size_t)std::min(endLag,(int)temp.size()); j++)
 	{
 		temp2.push_back(temp[j]);
 	}
@@ -613,31 +613,31 @@
 		}
 	}
 
-	int from = max(1, maxIdx-thresh);
-	int to = min(temp2.size(), maxIdx+thresh);
+	int from = std::max(1, maxIdx-thresh);
+	int to = std::min((int)temp2.size(), maxIdx+thresh);
 
-	float minValInRange = FLT_MAX;
+	float minValInRange = std::numeric_limits<float>::max();
 
-	for(size_t j = static_cast<size_t>(from); j < to; j++)
-	{	
+	for(size_t j = (size_t)from; j < to; j++)
+	{
 		if(temp2[j] < minValInRange)
 		{
 			minValInRange = temp2[j];
 		}
 	}
-    
+
     periodicity = (maxVal-minValInRange);
 
 	std::string dave = "Periodicity " + std::to_string(periodicity) + "\n";
-	OutputDebugString(dave.c_str());
+	//OutputDebugString(dave.c_str());
 
-	if(xcorr != nullptr)
+	if(xcorr != NULL)
 	{
 		delete[] xcorr;
 		xcorr = nullptr;
 	}
-	
-	if(downsampleddata != nullptr)
+
+	if(downsampleddata != NULL)
 	{
 		delete[] downsampleddata;
 		downsampleddata = nullptr;
@@ -663,14 +663,14 @@
  //
  //
  //   // apply the filter to each input sample
- //   for (size_t n = 0; n < lenIn; n++ ) 
+ //   for (size_t n = 0; n < lenIn; n++ )
 	//{
  //       // calculate output n
  //       coeffp = &coeffs[0];
  //       inputp = &data[filterlength - 1 + n];
 
 	//	acc = 0.0f;
-	//	for (int k = 0; k < filterlength; k++ ) 
+	//	for (int k = 0; k < filterlength; k++ )
 	//	{
 	//		if(inputp <= endp)
 	//			acc += (*coeffp++) * (*inputp--);
@@ -682,8 +682,8 @@
 	//		}
 	//	}
 
-	//	tempdata[n] = acc;		
- //   }		
+	//	tempdata[n] = acc;
+ //   }
 	//int ratio = (int) (currentSampleRate / futureSampleRate);
 	//
 	//lenOut = lenIn / ratio;
@@ -696,8 +696,8 @@
 	//for(size_t i = 0; i < lenIn; i = i + ratio)
 	//{
 	//	out[idx] = tempdata[i];
-	//	idx++;		
-	//}	
+	//	idx++;
+	//}
 
 	//if(tempdata != NULL)
 	//{
@@ -711,10 +711,10 @@
     float release = 0.02f;
 	float envelope = 0.0f;
 
-	float gr = exp(-1 / (sampleRate * release));	
+	float gr = exp(-1 / (sampleRate * release));
 
     for (size_t i = 0; i < dataLen; i++)
-	{ 
+	{
 		float EnvIn = abs(data[i]);
 
 		if(envelope < EnvIn)
@@ -725,9 +725,9 @@
 		{
 			envelope = envelope * gr;
 			envelope = envelope + (1 - gr) * EnvIn;
-		}    
-    
-		out[i] = envelope;    
+		}
+
+		out[i] = envelope;
 	}
 }
 
@@ -829,7 +829,7 @@
 
 			std::vector<int> idxLow;
 			std::vector<int> idxHigh;
-			std::vector<int> filtIdx;			
+			std::vector<int> filtIdx;
 
 			for (size_t j = (size_t)ceilNextBinDown; j <= (size_t)floorFreqBinLin; j++ )
 			{
@@ -864,9 +864,9 @@
 
 			for (size_t j = 0; j < rampUp.size(); j++)
 			{
-				filt.push_back(min(rampUp[j], rampDown[j]));
+				filt.push_back(std::min(rampUp[j], rampDown[j]));
 			}
-			
+
 			float sumfilt = 0.0f;
 			for (size_t j = 0; j < filt.size(); j++)
 			{
@@ -881,7 +881,7 @@
 			for (size_t j = 0; j < filtIdx.size(); j++)
 			{
 				outKrnl[i][filtIdx[j] - 1] = filt[j];
-			}			
+			}
 		}
 	}
 
@@ -909,7 +909,7 @@
 	float ceilNextBinDown = ceil(nextBinDown); //Subtract by -1 because of array
 	float floorFreqBinLin = floor(freqBinLin);
 
-	std::vector<int> filtIdx;			
+	std::vector<int> filtIdx;
 
 	for (size_t i = (size_t)ceilNextBinDown; i <= (size_t)floorFreqBinLin; i++ )
 	{
@@ -919,7 +919,7 @@
 	std::vector<float> filt2;
 	for (size_t i = 0; i < filtIdx.size(); i++)
 	{
-		filt2.push_back(1 - (freqBinLin - filtIdx[i]) / (freqBinLin - nextBinDown));	
+		filt2.push_back(1 - (freqBinLin - filtIdx[i]) / (freqBinLin - nextBinDown));
 	}
 
 	float sumfilt = 0.0f;
@@ -939,10 +939,10 @@
 	}
 }
 
-float AudioSourceFeatureExtractor::Log2(float n)  
-{  
-	// log(n)/log(2) is log2.  
-	return logf( n ) / logf( 2 );  
+float AudioSourceFeatureExtractor::Log2(float n)
+{
+	// log(n)/log(2) is log2.
+	return logf( n ) / logf( 2 );
 }
 
 int AudioSourceFeatureExtractor::Sign(float x)
--- a/Source/AudioSourceFeatureExtractor.h	Thu Jul 09 01:12:16 2015 +0100
+++ b/Source/AudioSourceFeatureExtractor.h	Thu Jul 09 15:01:32 2015 +0100
@@ -55,7 +55,7 @@
 
 	float EntropyOfEnergy(float* data, size_t numSamples);
 
-	void AudioSourceFeatureExtractor::PDF_getResampleKrnl(std::vector<float> freqVec, float fsProc, int nfft, int nBin, std::vector<float> &outLogFreqVec, std::vector<std::vector<float>> &outKrnl);
+	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);
 
@@ -65,8 +65,8 @@
 
 	std::vector<float> LogSpace(float min, float max, int n);
 
-	size_t m_iWriteIdx;	
-	size_t m_iFlucIdx;	
+	size_t m_iWriteIdx;
+	size_t m_iFlucIdx;
 	float  m_fSampleRate;
 	FFTW   *m_fft;
 	float *m_OutReal;
--- a/Source/FFT.cpp	Thu Jul 09 01:12:16 2015 +0100
+++ b/Source/FFT.cpp	Thu Jul 09 15:01:32 2015 +0100
@@ -9,7 +9,7 @@
 */
 
 #include "FFT.h"
-FFT::FastFourierTransform()
-{
-
-}
\ No newline at end of file
+//FFT::FastFourierTransform()
+//{
+//
+//}
--- a/Source/FFTW.h	Thu Jul 09 01:12:16 2015 +0100
+++ b/Source/FFTW.h	Thu Jul 09 15:01:32 2015 +0100
@@ -2,11 +2,11 @@
 /**
  \author André Bergner
  \date   Feb/2013
- 
+
  \class FFTW
- 
+
  Encapsulates the FFT of lib-fftw
- 
+
  (c) Copyright NATIVE INSTRUMENTS, Berlin, Germany
  ALL RIGHTS RESERVED
  */
@@ -15,9 +15,10 @@
 #pragma once
 
 #include "fftw3.h"
-#include <vector>
-#include <windows.h>
-#include <string>
+#include <vector>
+#include <stdio.h>
+//#include <windows.h>
+#include <string.h>
 //#include <itl/dsp/SimdTools.h>
 
 
@@ -29,7 +30,7 @@
    fftwf_plan  m_plan;
   unsigned m_iFFTSize;
 
-  FFTW(); 
+  FFTW();
   FFTW( unsigned fftLength )
   {
 	m_iFFTSize = fftLength;
@@ -71,7 +72,7 @@
 
 	//Multiply results by 2 to match the iOS output
 	for(size_t i = 0; i < m_iFFTSize; i++)
-	{		
+	{
 		realPart[i] *= 2.f;
 		imagPart[i] *= 2.f;
 	}
--- a/Source/FeatureData.cpp	Thu Jul 09 01:12:16 2015 +0100
+++ b/Source/FeatureData.cpp	Thu Jul 09 15:01:32 2015 +0100
@@ -519,7 +519,7 @@
 	avgdeltamfcc.push_back(Average(m_deltamfccs[10]));
 	avgdeltamfcc.push_back(Average(m_deltamfccs[11]));
 
-	//for(size_t i =0; i < m_PooledObservationDataAverage.size(); i++)
+	for(size_t i =0; i < m_PooledObservationDataAverage.size(); i++)
 	{
 		obs = ObservationData(avgrms, avgpeak, avgcrestFactor, avgzcr, avgcentroid, avgspread, avgskewness, avgkurtosis, avgbrightness, avgrolloff85, avgrolloff95, avgspectralentropy, avgflatness, avgspectralcf, avgspectralflux, avgmfcc, avgdeltamfcc, m_ObservationData[0].GetPeriodicity(), m_ObservationData[0].GetEntropyOfEnergy());
 		obs.SetLowEnergy(m_ObservationData[0].GetLowEnergy());
--- a/Source/MFCC.cpp	Thu Jul 09 01:12:16 2015 +0100
+++ b/Source/MFCC.cpp	Thu Jul 09 15:01:32 2015 +0100
@@ -10,14 +10,14 @@
 
 #include "MFCC.h"
 #include <math.h>
-#include <windows.h>
+//#include <windows.h>
 
 //-----------------------------------------------------------------------------  ComputeMFCC
 void MFCC::ComputeMFCC(float* magnitude, std::vector<float> &mfccs)
 {
   //Apply the Mel Filters to the spectrum magnitude:
   for(int i=0; i<m_iTotalMFCCFilters; i++)
-  {  
+  {
 	//Multiply spectrum with spectral mask
 	vDSP_vmul(magnitude, 1,	m_ppMFCCFilters[i],	1, m_pfTempMelFilterResult, 1, m_pMFCCFilterLength[i]);
 
@@ -27,12 +27,12 @@
     //Log compression
     float filterOut = log10(m_fMelFilteredFFT[i]*10.f+1.f);
     m_fMelFilteredFFT[i]=filterOut;
-  }  
+  }
 
   for(int j = 0; j < m_iNumMFCCCoefs; j++)
   {
 	  //Cosine Transform to reduce dimensionality:
-	  vDSP_mmul(m_ppMFFC_DCT, 1, m_fMelFilteredFFT, 1, m_pMFCC, 1, m_iNumMFCCCoefs, 1, m_iTotalMFCCFilters);  
+	  vDSP_mmul(m_ppMFFC_DCT, 1, m_fMelFilteredFFT, 1, m_pMFCC, 1, m_iNumMFCCCoefs, 1, m_iTotalMFCCFilters);
 	  mfccs.push_back(m_pMFCC[j]);
   }
 
@@ -47,7 +47,7 @@
   m_pMFCC = new float[m_iNumMFCCCoefs];
 
   //Add a value to take into account the 0 coefficient
-  int iStartMfccCoeff = 1;   
+  int iStartMfccCoeff = 1;
 
   //Mel FilterBank parameters
   float fLowestFreq       = 133.3333f;
@@ -132,54 +132,54 @@
 //-----------------------------------------------------------------------------  freeMFCCmemory
 void MFCC::freeMFCCmemory()
 {
-	if(m_pMFCC != NULL)
-	{				        
-		delete(m_pMFCC);					        
+	if(m_pMFCC != nullptr)
+	{
+		delete(m_pMFCC);
 		m_pMFCC=nullptr;
 	}
-  
-	if(m_ppMFFC_DCT != NULL)
-	{						
-		delete(m_ppMFFC_DCT);				      
+
+	if(m_ppMFFC_DCT != nullptr)
+	{
+		delete(m_ppMFFC_DCT);
 		m_ppMFFC_DCT=nullptr;
 	}
-  
-	if(m_fMelFilteredFFT != NULL)
-	{				
-		delete(m_fMelFilteredFFT);		    
+
+	if(m_fMelFilteredFFT != nullptr)
+	{
+		delete(m_fMelFilteredFFT);
 		m_fMelFilteredFFT=nullptr;
 	}
-  
-	if(m_pMFCCFilterStart != NULL)
-	{				
-		delete(m_pMFCCFilterStart);		    
+
+	if(m_pMFCCFilterStart != nullptr)
+	{
+		delete(m_pMFCCFilterStart);
 		m_pMFCCFilterStart=nullptr;
 	}
-  
-	if(m_pMFCCFilterLength != NULL)
-	{				
-		delete(m_pMFCCFilterLength);		  
+
+	if(m_pMFCCFilterLength != nullptr)
+	{
+		delete(m_pMFCCFilterLength);
 		m_pMFCCFilterLength=nullptr;
 	}
-  
-	if(m_pfTempMelFilterResult != NULL)
+
+	if(m_pfTempMelFilterResult != nullptr)
 	{
-		delete(m_pfTempMelFilterResult);  
+		delete(m_pfTempMelFilterResult);
 		m_pfTempMelFilterResult=nullptr;
 	}
 
-	if(m_ppMFCCFilters != NULL)
+	if(m_ppMFCCFilters != nullptr)
 	{
 		for(int i=0; i<m_iTotalMFCCFilters; i++)
 		{
-			if(m_ppMFCCFilters[i] != NULL)
-			{ 
+			if(m_ppMFCCFilters[i] != nullptr)
+			{
 				delete(m_ppMFCCFilters[i]);
 				m_ppMFCCFilters[i]=nullptr;
 			}
 		}
 
-		delete (m_ppMFCCFilters); 
+		delete (m_ppMFCCFilters);
 		m_ppMFCCFilters=nullptr;
 	}
 }
@@ -217,7 +217,7 @@
     {
       fProdSum+=v1[m * P + p] * v2[p];
     }
-    
+
 	vout[m]=fProdSum;
   }
-}
\ No newline at end of file
+}
--- a/Source/ParseCSV.cpp	Thu Jul 09 01:12:16 2015 +0100
+++ b/Source/ParseCSV.cpp	Thu Jul 09 15:01:32 2015 +0100
@@ -22,13 +22,13 @@
 
 ParseCSV::~ParseCSV()
 {
-	
+
 };
 
 AudioFileData ParseCSV::Parse(std::string fileName)
 {
 	//open the file from which to read the data
-	std::ifstream myFile = std::ifstream();
+	std::ifstream myFile;// = std::ifstream();
 
 	myFile.open(fileName, std::ifstream::in);
 
@@ -68,7 +68,7 @@
 		}
 
 		fileNames.push_back(newfile);
-		labels.push_back(newlabel);		
+		labels.push_back(newlabel);
 	}
 
 	m_AudioFileData = AudioFileData(fileNames, labels);
@@ -89,4 +89,4 @@
 	}
 
 	return lines;
-}
\ No newline at end of file
+}
--- a/Source/WriteCSV.cpp	Thu Jul 09 01:12:16 2015 +0100
+++ b/Source/WriteCSV.cpp	Thu Jul 09 15:01:32 2015 +0100
@@ -14,7 +14,7 @@
 #include <string>
 #include <vector>
 #include <time.h>
-#include <windows.h>
+//#include <windows.h>
 
 WriteCSV::WriteCSV(){};
 WriteCSV::~WriteCSV(){};
@@ -24,7 +24,7 @@
 void WriteCSV::Write(std::string filename, FeatureData data)
 {
 	//Pooled
-	std::string pooledfilename = filename + "Pooled" + std::to_string(data.GetPoolingTimeFactor()) + "Sec.csv"; 
+	std::string pooledfilename = filename + "Pooled" + std::to_string(data.GetPoolingTimeFactor()) + "Sec.csv";
 	std::ofstream foutPooled(pooledfilename, std::ios::app|std::ios::out);
 
 	std::vector<ObservationData> observationDataAverage = data.GetPooldedObservationDataAverage();
@@ -56,38 +56,38 @@
 				<< observationDataStd[j].GetZCR() << ','
 				<< observationDataMax[j].GetZCR() << ','
 				<< observationDataMin[j].GetZCR() << ','
-				<< observationDataAverage[j].GetCentroid() << ',' 
-				<< observationDataStd[j].GetCentroid() << ',' 
-				<< observationDataMax[j].GetCentroid() << ',' 
-				<< observationDataMin[j].GetCentroid() << ',' 
-				<< observationDataAverage[j].GetSpread() << ',' 
-				<< observationDataStd[j].GetSpread() << ',' 
-				<< observationDataMax[j].GetSpread() << ',' 
-				<< observationDataMin[j].GetSpread() << ',' 
-				<< observationDataAverage[j].GetSkewness() << ',' 
-				<< observationDataStd[j].GetSkewness() << ',' 
-				<< observationDataMax[j].GetSkewness() << ',' 
-				<< observationDataMin[j].GetSkewness() << ',' 
-				<< observationDataAverage[j].GetKurtosis() << ',' 
-				<< observationDataStd[j].GetKurtosis() << ',' 
-				<< observationDataMax[j].GetKurtosis() << ',' 
-				<< observationDataMin[j].GetKurtosis() << ',' 
-				<< observationDataAverage[j].GetBrightness() << ',' 
-				<< observationDataStd[j].GetBrightness() << ',' 
-				<< observationDataMax[j].GetBrightness() << ',' 
-				<< observationDataMin[j].GetBrightness() << ',' 
+				<< observationDataAverage[j].GetCentroid() << ','
+				<< observationDataStd[j].GetCentroid() << ','
+				<< observationDataMax[j].GetCentroid() << ','
+				<< observationDataMin[j].GetCentroid() << ','
+				<< observationDataAverage[j].GetSpread() << ','
+				<< observationDataStd[j].GetSpread() << ','
+				<< observationDataMax[j].GetSpread() << ','
+				<< observationDataMin[j].GetSpread() << ','
+				<< observationDataAverage[j].GetSkewness() << ','
+				<< observationDataStd[j].GetSkewness() << ','
+				<< observationDataMax[j].GetSkewness() << ','
+				<< observationDataMin[j].GetSkewness() << ','
+				<< observationDataAverage[j].GetKurtosis() << ','
+				<< observationDataStd[j].GetKurtosis() << ','
+				<< observationDataMax[j].GetKurtosis() << ','
+				<< observationDataMin[j].GetKurtosis() << ','
+				<< observationDataAverage[j].GetBrightness() << ','
+				<< observationDataStd[j].GetBrightness() << ','
+				<< observationDataMax[j].GetBrightness() << ','
+				<< observationDataMin[j].GetBrightness() << ','
 				<< observationDataAverage[j].GetFlatness() << ','
 				<< observationDataStd[j].GetFlatness() << ','
 				<< observationDataMax[j].GetFlatness() << ','
 				<< observationDataMin[j].GetFlatness() << ','
-				<< observationDataAverage[j].GetRollOff85() << ','  
-				<< observationDataStd[j].GetRollOff85() << ','  
-				<< observationDataMax[j].GetRollOff85() << ','  
-				<< observationDataMin[j].GetRollOff85() << ','  
-				<< observationDataAverage[j].GetRollOff95() << ','  
-				<< observationDataStd[j].GetRollOff95() << ','  
-				<< observationDataMax[j].GetRollOff95() << ','  
-				<< observationDataMin[j].GetRollOff95() << ','  
+				<< observationDataAverage[j].GetRollOff85() << ','
+				<< observationDataStd[j].GetRollOff85() << ','
+				<< observationDataMax[j].GetRollOff85() << ','
+				<< observationDataMin[j].GetRollOff85() << ','
+				<< observationDataAverage[j].GetRollOff95() << ','
+				<< observationDataStd[j].GetRollOff95() << ','
+				<< observationDataMax[j].GetRollOff95() << ','
+				<< observationDataMin[j].GetRollOff95() << ','
 				<< observationDataAverage[j].GetSpectralEntropy() << ','
 				<< observationDataStd[j].GetSpectralEntropy() << ','
 				<< observationDataMax[j].GetSpectralEntropy() << ','
@@ -196,23 +196,23 @@
 				<< observationDataStd[j].GetDeltaMFCCs()[11] << ','
 				<< observationDataMax[j].GetDeltaMFCCs()[11] << ','
 				<< observationDataMin[j].GetDeltaMFCCs()[11] << ','
-				<< observationDataAverage[j].GetLowEnergy() << ',' 
-				<< observationDataAverage[j].GetPeriodicity() << ',' 
-				<< observationDataAverage[j].GetEntropyOfEnergy() << ',' 
+				<< observationDataAverage[j].GetLowEnergy() << ','
+				<< observationDataAverage[j].GetPeriodicity() << ','
+				<< observationDataAverage[j].GetEntropyOfEnergy() << ','
 				<< label << ',' ;
 			foutPooled << "\n";
-		} 
+		}
 	}
 	else
 	{
 		std::cout << "ERROR: Can't write to .csv.";
 	}
-	   
+
 	 foutPooled.close();
 
 	//WholeTrack
 
-	std::string wholetrackfilename = filename + "Whole" + std::to_string(data.GetPoolingTimeFactor()) + "Sec.csv"; 
+	std::string wholetrackfilename = filename + "Whole" + std::to_string(data.GetPoolingTimeFactor()) + "Sec.csv";
 	std::ofstream foutWholeTrack(wholetrackfilename, std::ios::app|std::ios::out);
 
 	std::vector<ObservationData> wholeTrackobservationDataAverage = data.GetWholeTrackObservationDataAverage();
@@ -249,7 +249,7 @@
 				<< wholeTrackobservationDataStd[j].GetSpread() << ',' //22
 				<< wholeTrackobservationDataMax[j].GetSpread() << ',' //23
 				<< wholeTrackobservationDataMin[j].GetSpread() << ',' //24
-				<< wholeTrackobservationDataAverage[j].GetSkewness() << ',' //25 
+				<< wholeTrackobservationDataAverage[j].GetSkewness() << ',' //25
 				<< wholeTrackobservationDataStd[j].GetSkewness() << ',' //26
 				<< wholeTrackobservationDataMax[j].GetSkewness() << ',' //27
 				<< wholeTrackobservationDataMin[j].GetSkewness() << ',' //28
@@ -257,7 +257,7 @@
 				<< wholeTrackobservationDataStd[j].GetKurtosis() << ',' //30
 				<< wholeTrackobservationDataMax[j].GetKurtosis() << ',' //31
 				<< wholeTrackobservationDataMin[j].GetKurtosis() << ',' //32
-				<< wholeTrackobservationDataAverage[j].GetBrightness() << ',' //33 
+				<< wholeTrackobservationDataAverage[j].GetBrightness() << ',' //33
 				<< wholeTrackobservationDataStd[j].GetBrightness() << ',' //34
 				<< wholeTrackobservationDataMax[j].GetBrightness() << ','  //35
 				<< wholeTrackobservationDataMin[j].GetBrightness() << ',' //36
@@ -265,7 +265,7 @@
 				<< wholeTrackobservationDataStd[j].GetFlatness() << ',' //38
 				<< wholeTrackobservationDataMax[j].GetFlatness() << ','//39
 				<< wholeTrackobservationDataMin[j].GetFlatness() << ','//40
-				<< wholeTrackobservationDataAverage[j].GetRollOff85() << ',' //41  
+				<< wholeTrackobservationDataAverage[j].GetRollOff85() << ',' //41
 				<< wholeTrackobservationDataStd[j].GetRollOff85() << ','  //42
 				<< wholeTrackobservationDataMax[j].GetRollOff85() << ','  //43
 				<< wholeTrackobservationDataMin[j].GetRollOff85() << ','  //44
@@ -382,26 +382,26 @@
 				<< wholeTrackobservationDataMax[j].GetDeltaMFCCs()[11] << ',' //91
 				<< wholeTrackobservationDataMin[j].GetDeltaMFCCs()[11] << ',' //92
 				<< wholeTrackobservationDataAverage[j].GetLowEnergy() << ',' //93
-				<< wholeTrackobservationDataAverage[j].GetPeriodicity() << ',' //94 
-				<< wholeTrackobservationDataAverage[j].GetEntropyOfEnergy() << ',' //95 
+				<< wholeTrackobservationDataAverage[j].GetPeriodicity() << ',' //94
+				<< wholeTrackobservationDataAverage[j].GetEntropyOfEnergy() << ',' //95
 				<< label << ',' ;
 			foutWholeTrack << "\n";
-		} 
+		}
 	}
 	else
 	{
 		std::cout << "ERROR: Can't write to .csv.";
 	}
-	   
+
 	 foutWholeTrack.close();
 
 	 std::string dave = "Files written: " + std::to_string(count) + "  Obs Data Size:" + std::to_string(wholeTrackobservationDataAverage.size())+  "\n";
-	 OutputDebugString(dave.c_str());
+//	 OutputDebugString(dave.c_str());
 	 count++;
 };
 
 // Get current date/time, format is YYYY-MM-DD.HH:mm:ss
-const std::string WriteCSV::currentDateTime() 
+const std::string WriteCSV::currentDateTime()
 {
     time_t     now = time(0);
     struct tm  tstruct;
@@ -410,4 +410,4 @@
     strftime(buf, sizeof(buf), "%Y-%m-%d.%H-%M-%S", &tstruct);
 
     return buf;
-}
\ No newline at end of file
+}