view src/DynamicVector.h @ 5:195907bb8bb7

added purple where notes have been seen - lets you see what updates have been used. Also the chopping of midi files to the beginning was introduced recently, so when they load, you chop any white space at the beginning, then use first note to launch.
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Fri, 19 Aug 2011 16:38:30 +0100
parents 4a8e6a6cd224
children 75dcd1308658
line wrap: on
line source
/*
 *  DynamicVector.h
 *  midiCannamReader
 *
 *  Created by Andrew on 18/07/2011.
 *  Copyright 2011 QMUL. All rights reserved.
 *
 */

//OPTIMIZE CONSTRAINED VECTOR

#include "stdlib.h"
#include "ofMain.h"

#ifndef _DYNAMIC_VECTOR
#define _DYNAMIC_VECTOR
#define GAUSSIAN_LOOKUP_LENGTH 1000000

class DynamicVector{
public:
	DynamicVector();

	void createVector(int len);
	void renormalise();
	void translateDistribution(int translationIndex);
	typedef std::vector<double> DoubleVector;
	DoubleVector array;
	double getMaximum();
	double getIntegratedEstimate();
	double getLookupIndex(const int& i, const double& mean, const double& StdDev);
	void addGaussianShapeByLookupTable(double& mean, double& StdDev, double& factor);
	double gaussianLookupTable[GAUSSIAN_LOOKUP_LENGTH];
	double gaussianLookupMean, gaussianLookupStdDev;
	
	
	void drawVector(const int& minIndex, const int& maxIndex);
	void drawConstrainedVector(const int& minIndex, const int& maxIndex, const int& minScreenIndex, const int& maxScreenIndex);

	void addConstant(double value);
	void addGaussianShape(double mean, double stddev, double factor);
	void addTriangularShape(double mean, double width, double factor);
	void addToIndex(int index, double constant);
	
	void doProduct(DynamicVector& arrayOne, DynamicVector& arrayTwo);
		
	double getIndexInRealTerms(const int& index);
	double getRealTermsAsIndex(double value);
	double getValueAtMillis(const double& millis);
	
	void printArray();
	void zero();
	
	void copyFromDynamicVector(const DynamicVector& dynamicVec);
	
	//variables
	int length, arraySize;
	double maximumValue;
	int MAPestimate;
	
	double offset;
	double scalar;//each array point is this much of the quantity
	//i.e. array[index] contributes to (offset + scalar*index) in real terms

};

#endif