view src/DynamicBayesianArray.h @ 11:df9c838d0b8f

fixed bug where the full midi file was sometimes not drawn (since minNoteIndexToPrint) was at the max and did not decrease properly in draw routine
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Tue, 25 Oct 2011 15:01:52 +0100
parents b299a65a3ad0
children c7107e5c8f03
line wrap: on
line source
/*
 *  DynamicBayesianArray.h
 *  midiCannamReader
 *
 *  Created by Andrew on 17/07/2011.
 *  Copyright 2011 QMUL. All rights reserved.
 *
 */

/*
 *  DynamicBayesianArray.cpp
 *  bayesianTest5
 *
 *  Created by Andrew Robertson on 08/05/2010.
 *  Copyright 2010 __MyCompanyName__. All rights reserved.
 *
 */

/*
 *  DynamicBayesianArray.h
 *  bayesianTest5
 *
 *  Created by Andrew Robertson on 08/05/2010.
 *  Copyright 2010 __MyCompanyName__. All rights reserved.
 *
 */

#include "ofMain.h"

#include "DynamicVector.h"

#ifndef	_DYNAMIC_BAYESIAN_ARRAY
#define _DYNAMIC_BAYESIAN_ARRAY

#define ARRAY_SIZE 240


class DynamicBayesianArray{
	
public:
	
	DynamicBayesianArray();
	void initialiseArray();
	
//	void setGaussianLikelihoodForBeats(float mean, float StdDev);		
	void setGaussianLikelihood(float mean, float StdDev);	
	void setGaussianPrior(float mean, float StdDev);
	void setGaussianPosterior(float mean, float StdDev);
	
	void calculatePosterior();
	void renormalisePosterior();
	void resetMaximumPosterior();//resets the max index
	void decayPosteriorWithGaussianNoise();
	void translateDistribution(int translationIndex);
	void setDecayNoiseGaussian(float mean, float StdDev);
	double calculateStandardDeviation();
	
	int arraySize;
	
	
	float getMaximum(float *ptr, int length);
	void renormaliseArray(float *ptr, int length);
	void resetPrior();
	void decayPosterior();
	float* getMaximumEstimate(float *ptr, int length);
	double getIntegratedEstimateIndex();
	
//	void drawArray(const int& minIndex, const int& maxIndex);
	void drawFloatArray(float* arrayToDraw, const int& minIndex, const int& maxIndex);
	void drawDoubleArray(double* arrayToDraw, const int& minIndex, const int& maxIndex);		

	
	typedef std::vector<double> DoubleVector;
//	typedef std::vector<IntVector> DoubleMatrix;
	
	
//	DynamicVector prior;
//	DynamicVector posterior;
//	DynamicVector likelihood;
	
	DynamicVector testVector;	
//	DynamicVector prior;
	
	float prior [ARRAY_SIZE];
	float posterior [ARRAY_SIZE];
	float likelihood [ARRAY_SIZE];	
	float tempPosteriorArray[ARRAY_SIZE];
	
	float decayNoiseArray[ARRAY_SIZE];
	float decayNoiseStdDev, decayNoiseAmount;
	
	float likelihoodMean, likelihoodStdDev, likelihoodNoise;
	float maximumTest, posteriorDecayRate, maximumValue;
	float eighthNoteProportion, earlySixteenthNoteProportion, lateSixteenthNoteProportion ;
	float maximumEstimate, maximumIndex, integratedEstimate;
	double standardDeviation;
	
private:
};

#endif