Mercurial > hg > multitrack-audio-matcher
view bayesianArraySrc/BayesianArrayStructure.h @ 4:45b5cf9be377
checking through Bayesian update procedure - working without cross update method.
author | Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk> |
---|---|
date | Thu, 02 Feb 2012 12:13:44 +0000 |
parents | c4f9e49226eb |
children | 746a5af43c02 |
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(const double& timeDifference); double lastBestEstimateUpdateTime; double speedEstimate, speedEstimateIndex; double getSpeedEstimateIndex(); 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; int priorWidth; bool* realTimeMode; bool usingIntegratedTempoEstimate; double relativeSpeedLikelihoodStdDev; }; #endif