Mercurial > hg > audio-time-warp
diff src/timeWarp.h @ 5:0d51e93bfe74
some work in improving the efficiency of doing chroma and onset analysis ahs been made - don't need to recalculate the chroma comparison each time
author | Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk> |
---|---|
date | Wed, 20 Jul 2011 12:06:45 +0100 |
parents | f40577e6b30d |
children | 166bece5922c |
line wrap: on
line diff
--- a/src/timeWarp.h Wed Jun 08 17:35:56 2011 +0100 +++ b/src/timeWarp.h Wed Jul 20 12:06:45 2011 +0100 @@ -73,50 +73,74 @@ void createCombinedMatrix(DoubleMatrix myChromaMatrix, DoubleVector energyVector, DoubleMatrix* chromaEnergyMatrix); + double getChromaSimilarity(int x, int y, DoubleMatrix* firstChromaMatrix, DoubleMatrix* secondChromaMatrix); + + void calculateChromaSimilarityMatrix(DoubleMatrix* firstChromaMatrix, DoubleMatrix* secondChromaMatrix, DoubleMatrix* simMatrix); + void calculateSimilarityMatrix(); - + int findMinimumOfMatrixColumn(DoubleMatrix d, int column); //new addition - void calculateSimilarityMatrixWithPointers(DoubleMatrix firstChromaMatrix, DoubleMatrix secondChromaMatrix, DoubleMatrix* simMatrix); - DoubleMatrix superAlignmentMeasureMatrix; //for the onset + chromagram alignment - DoubleVector superMinimumAlignmentPath; + void calculateSimilarityMatrixWithPointers(DoubleMatrix* firstChromaMatrix, DoubleMatrix* secondChromaMatrix, DoubleMatrix* simMatrix); + + void calculateJointSimilarityMatrix(DoubleVector* energyVectorOne, DoubleVector* energyVectorTwo, DoubleMatrix* chromaSimilarityMatrix, DoubleMatrix* simMatrix); + + void calculatePartJointSimilarityMatrix(DoubleVector* firstEnergyVector, DoubleVector* secondEnergyVector, DoubleMatrix* chromaSimMatrix, DoubleMatrix* simMatrix, int startX, int startY, int endX); + + + double getJointChromaAndEnergyDistance(DoubleVector* energyVectorOne, DoubleMatrix* firstChromaMatrix, DoubleVector* energyVectorTwo, DoubleMatrix* secondChromaMatrix, int energyIndexX, int energyIndexY, double energyProportion, double chromaProportion); + + DoubleMatrix chromaSimilarityMatrix; +// DoubleMatrix superAlignmentMeasureMatrix; //for the onset + chromagram alignment +// DoubleVector superMinimumAlignmentPath; //end new additions int findStartWidthFrame(); - + int conversionFactor; void calculateAlignmentMatrix(DoubleMatrix firstMatrix, DoubleMatrix secondMatrix, DoubleMatrix *alignmentMatrix); double getDistance(int i, int j); - double getRestrictedMinimum(int i, int j, float newValue, int minX, int minY); - bool extendRestrictedAlignmentUp(int startX, int startY, int endIndexY, DoubleMatrix *alignmentMatrix); - bool extendRestrictedAlignmentAlong(int startX, int startY, int endIndexX, DoubleMatrix* alignmentMatrix); double getMinimum(int i, int j, float newValue); bool extendAlignmentUp(int endIndexY, DoubleMatrix *alignmentMatrix); bool extendAlignmentAlong(int endIndexX, DoubleMatrix *alignmentMatrix); - void calculateMinimumAlignmentPath(DoubleMatrix alignmentMatrix); - void extendForwardAlignmentPath(int endX); + void calculateMinimumAlignmentPath(DoubleMatrix* alignmentMatrix, IntMatrix* backPath, bool pickMinimumFlag);//writes the backwards laignment path to *backPath + - - bool findPreviousMinimumInBackwardsPath(); - bool testForNewAlignmentMinimum(double *previousMinimum, int i, int j); + bool findPreviousMinimumInBackwardsPath(DoubleMatrix* alignmentMatrix, IntMatrix* backPath); + bool testForNewAlignmentMinimum(double *previousMinimum, int i, int j, DoubleMatrix* alignmentMatrix); int findMinimumOfVector(DoubleVector *d); + + void extendForwardAlignmentPath(int endX, IntMatrix* backPath, int anchorPointX, int anchorPointY);//specify forwards path to extend? + void addNewForwardsPath(int indexX, IntMatrix* backPath, int anchorPointX, int anchorPointY); + + int getMinimumIndexOfColumnFromMatrix(int i, DoubleMatrix* matrix); - void addNewForwardsPath(int indexX); +//PART ALIGNMENT FUNCTIONS + void calculatePartSimilarityMatrix(DoubleMatrix* firstChromaMatrix, DoubleMatrix* secondChromaMatrix, DoubleMatrix* simMatrix, int startX, int startY, int endX); + void calculatePartAlignmentMatrix(int endIndexX, int endIndexY, DoubleMatrix* alignmentMatrix, DoubleMatrix* simMatrix); - void calculatePartSimilarityMatrix(DoubleMatrix firstChromaMatrix, DoubleMatrix secondChromaMatrix, DoubleMatrix* simMatrix, int startX, int startY, int endX); -// void calculatePartAlignmentMatrix(int startIndexX, int startIndexY, int endIndexX, int endIndexY, DoubleMatrix* alignmentMatrix); + double getDistanceFromMatrix(int i, int j, DoubleMatrix* simMatrix); + double getMinimumFromMatrix(int i, int j, float newValue, DoubleMatrix* alignMatrix); + void calculatePartMinimumAlignmentPath(int startX, int startY, int endX, int endY, DoubleMatrix alignmentMatrix); - bool findPreviousMinimumInPartBackwardsPath(); +// bool findPreviousMinimumInPartBackwardsPath(DoubleMatrix* alignmentMatrix); + double getRestrictedMinimum(int i, int j, float newValue, int minX, int minY); + bool extendRestrictedAlignmentUp(int endIndexY, DoubleMatrix *alignmentMatrix, DoubleMatrix* simMatrix); + bool extendRestrictedAlignmentAlong(int endIndexX, DoubleMatrix* alignmentMatrix, DoubleMatrix* simMatrix); + + + void printBackwardsPath(int startIndex, int endIndex, IntMatrix* backPath); + void copyForwardsPathToBackwardsPath(); float diagonalPenalty;