andrew@0: /* andrew@0: * BayesianArrayStructure.h andrew@0: * midiCannamReader andrew@0: * andrew@0: * Created by Andrew on 17/07/2011. andrew@0: * Copyright 2011 QMUL. All rights reserved. andrew@0: * andrew@0: */ andrew@0: andrew@0: #include "ofMain.h" andrew@0: //#include "DynamicBayesianArray.h" andrew@0: #include "DynamicVector.h" andrew@0: andrew@0: class BayesianArrayStructure { andrew@0: andrew@0: public: andrew@0: // BayesianArrayStructure(); andrew@0: BayesianArrayStructure(); andrew@0: BayesianArrayStructure(int length); andrew@0: andrew@0: void calculatePosterior(); andrew@0: void drawArrays(); andrew@0: void drawArraysRelativeToTimeframe(const double& startTimeMillis, const double& endTimeMillis); andrew@0: andrew@0: void drawTempoArrays(); andrew@0: andrew@0: void resetSize(int length); andrew@0: void resetArrays(); andrew@0: void simpleExample(); andrew@0: andrew@0: double screenWidth; andrew@0: andrew@0: void copyPriorToPosterior(); andrew@0: // DynamicBayesianArray bayesArray; andrew@0: andrew@0: double lastEventTime; andrew@0: andrew@0: DynamicVector tmpPrior; andrew@0: andrew@0: DynamicVector prior; andrew@0: DynamicVector posterior; andrew@0: DynamicVector likelihood; andrew@0: andrew@0: DynamicVector relativeSpeedPrior; andrew@0: DynamicVector relativeSpeedLikelihood; andrew@0: DynamicVector relativeSpeedPosterior; andrew@0: DynamicVector acceleration; andrew@0: andrew@0: void resetSpeedToOne(); andrew@0: andrew@0: double bestEstimate; andrew@0: void updateBestEstimate(); andrew@0: // double lastBestEstimateUpdateTime; andrew@0: andrew@0: double speedDecayWidth, speedDecayAmount; andrew@0: void decaySpeedDistribution(double timeDifference); andrew@0: andrew@0: void resetSpeedSize(int length); andrew@0: void setRelativeSpeedScalar(double f); andrew@0: void calculateNewPriorOffset(const double& timeDifference); andrew@0: void setNewDistributionOffsets(const double& newOffset); andrew@0: andrew@0: void updateTempoDistribution(const double& speedRatio, const double& matchFactor); andrew@0: andrew@0: void setFlatTempoLikelihood(); andrew@0: void calculateTempoUpdate(); andrew@0: void updateTempoLikelihood(const double& speedRatio, const double& matchFactor); andrew@0: andrew@0: void crossUpdateArrays(DynamicVector& position, DynamicVector& speed, double timeDifference); andrew@0: andrew@0: }; andrew@0: