Mercurial > hg > midi-score-follower
view src/BayesianArrayStructure.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 | 75dcd1308658 |
children | 3f103cf78148 |
line wrap: on
line source
/* * BayesianArrayStructure.h * midiCannamReader * * Created by Andrew on 17/07/2011. * Copyright 2011 QMUL. All rights reserved. * */ #ifndef BAYESIAN_ARRAY_STRUCTURE #define BAYESIAN_ARRAY_STRUCTURE #include "ofMain.h" //#include "DynamicBayesianArray.h" #include "DynamicVector.h" class BayesianArrayStructure { public: // BayesianArrayStructure(); BayesianArrayStructure(); BayesianArrayStructure(int length); void calculatePosterior(); void drawArrays(); void drawArraysRelativeToTimeframe(const double& startTimeMillis, const double& endTimeMillis); void drawTempoArrays(); void resetSize(int length); void resetArrays(); void simpleExample(); void setStartPlaying(); void zeroArrays(); double screenWidth; void copyPriorToPosterior(); // DynamicBayesianArray bayesArray; double lastEventTime; double likelihoodNoise; double speedLikelihoodNoise; DynamicVector tmpPrior; DynamicVector tmpPosteriorForStorage; DynamicVector prior; DynamicVector posterior; DynamicVector likelihood; DynamicVector relativeSpeedPrior; DynamicVector relativeSpeedLikelihood; DynamicVector relativeSpeedPosterior; DynamicVector acceleration; double tmpBestEstimate; void updateTmpBestEstimate(const double& timeDifference); int updateCounter; void setPositionDistributionScalar(double f); void resetSpeedToOne(); void addGaussianNoiseToSpeedPosterior(const double& std_dev); void addTriangularNoiseToSpeedPosterior(const double& std_dev); double bestEstimate; void updateBestEstimate(); double lastBestEstimateUpdateTime; double speedEstimate; double speedDecayWidth, speedDecayAmount; void decaySpeedDistribution(double timeDifference); void resetSpeedSize(int length); void setRelativeSpeedScalar(double f); void setSpeedPrior(double f); void calculateNewPriorOffset(const double& timeDifference); void setNewDistributionOffsets(const double& newOffset); void setLikelihoodToConstant(); void updateTempoLikelihood(const double& speedRatio, const double& matchFactor); void updateTempoDistribution(); void calculateTempoUpdate(); void crossUpdateArrays(DynamicVector& position, DynamicVector& speed, double timeDifference); void complexCrossUpdate(const double& timeDifferenceInPositionVectorUnits); void translateByMaximumSpeed(const double& timeDifferenceInPositionVectorUnits); double crossUpdateTimeThreshold;//time after which we do complex update of multiple speeds double speedPriorValue; }; #endif