Mercurial > hg > midi-score-follower
diff src/BayesianArrayStructure.cpp @ 22:9860abc92a30
follower has confidence measure now just using best match. Difficulty in visualising the speed likelihood fn
author | Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk> |
---|---|
date | Wed, 30 Nov 2011 11:48:35 +0000 |
parents | 11e3119ce6b4 |
children | 032edf186a68 |
line wrap: on
line diff
--- a/src/BayesianArrayStructure.cpp Sun Nov 27 21:56:19 2011 +0000 +++ b/src/BayesianArrayStructure.cpp Wed Nov 30 11:48:35 2011 +0000 @@ -15,17 +15,20 @@ BayesianArrayStructure::BayesianArrayStructure(){ printf("Bayesian structure: DeFault constructor called"); + relativeSpeedLikelihoodStdDev = 5.0; + prior.createVector(1); likelihood.createVector(1); posterior.createVector(1); - + tmpPrior.createVector(1); + speedPriorValue = 1.0; speedEstimate = speedPriorValue; lastEventTime = 0;//ofGetElapsedTimeMillis(); tmpBestEstimate = 0; - crossUpdateTimeThreshold = 100; + crossUpdateTimeThreshold = 60; priorWidth = 50; } @@ -35,9 +38,10 @@ prior.createVector(length); likelihood.createVector(length); posterior.createVector(length); + tmpPrior.createVector(length); lastEventTime = 0; - usingIntegratedTempoEstimate = false;//use max index + usingIntegratedTempoEstimate = true;//use max index } @@ -50,7 +54,6 @@ likelihood.createVector(length); posterior.createVector(length); - acceleration.createVector(length); } @@ -76,6 +79,7 @@ posterior.addToIndex(0, 1); posterior.renormalise(); + //acceleration.addGaussianShape(2000, 20, 0.8); } @@ -100,6 +104,13 @@ relativeSpeedPosterior.createVector(length); tmpPosteriorForStorage.createVector(length); + tmpPrior.createVector(length); + tmpPrior.zero(); + tmpPrior.addConstant(0.1); + tmpPrior.addGaussianShape(130, 10, 0.2); + printf("TMP PRIOR TEST VECTOR\n"); + tmpPrior.printArray(); + } @@ -409,11 +420,12 @@ double index = relativeSpeedLikelihood.getRealTermsAsIndex(speedRatio); // printf("index of likelihood would be %f for ratio %f\n", index, speedRatio); if (index >= 0 && index < relativeSpeedPrior.length){ - relativeSpeedLikelihood.addGaussianShape(index , 5, matchFactor); + relativeSpeedLikelihood.addGaussianShape(index , relativeSpeedLikelihoodStdDev, matchFactor); } } - + + void BayesianArrayStructure::updateTempoDistribution(){ //copy posterior to prior @@ -461,8 +473,6 @@ posterior.drawVector(0, displaySize); -// ofSetColor(255,255,255); -// tmpPrior.drawVector(0,300); } @@ -471,8 +481,9 @@ ofSetColor(0,0,255); // relativeSpeedPrior.drawVector(0, relativeSpeedPrior.arraySize); - ofSetColor(255,0,255); + ofSetColor(0,150,255); relativeSpeedLikelihood.drawVector(0, relativeSpeedLikelihood.arraySize); + // relativeSpeedLikelihood.drawConstrainedVector(0, 199, 0, 1000);// relativeSpeedLikelihood.arraySize); ofSetColor(255,0,0); relativeSpeedPosterior.drawVector(0, relativeSpeedPosterior.arraySize); @@ -483,13 +494,14 @@ ofSetColor(255,255, 255); ofLine(screenWidth/2, 0, screenWidth/2, ofGetHeight());//middle of screen - ofSetColor(155,255, 0); + ofSetColor(25, 0, 250); double fractionOfScreen = ((double)relativeSpeedPosterior.integratedEstimate / relativeSpeedPosterior.length); ofLine(screenWidth * fractionOfScreen, 0, screenWidth * fractionOfScreen, ofGetHeight()); - ofSetColor(0,255, 255); + ofSetColor(255, 0, 20); fractionOfScreen = ((double)relativeSpeedPosterior.MAPestimate / relativeSpeedPosterior.length); ofLine(screenWidth * fractionOfScreen, 0, screenWidth * fractionOfScreen, ofGetHeight()); + } @@ -524,14 +536,18 @@ // relativeString += ofToString(prior.getIndexInRealTerms(endArrayIndex), 3)+"] (sc-width:"+ofToString(screenWidthMillis, 1)+") "; relativeString += " mapped to screen "+ofToString(startScreenPosition)+" , "+ofToString(endScreenPosition); // ofDrawBitmapString(relativeString, 100, 180); + - ofSetColor(255, 255, 0); + + ofSetColor(100,100,100);//255, 255, 0); likelihood.drawConstrainedVector(startArrayIndex, endArrayIndex, startScreenPosition, endScreenPosition); - ofSetColor(0,0,200); +// ofSetColor(0,0,200); + ofSetColor(170,170,170);//00,200); prior.drawConstrainedVector(startArrayIndex, endArrayIndex, startScreenPosition, endScreenPosition); - ofSetColor(200, 0, 0); + ofSetColor(0,0,150); +// ofSetColor(200, 0, 0); posterior.drawConstrainedVector(startArrayIndex, endArrayIndex, startScreenPosition, endScreenPosition);