Mercurial > hg > match-vamp
changeset 98:bdd8158d401f adaptive_diagonals
Add feature distance and feature magnitude outputs (for experiments)
author | Chris Cannam |
---|---|
date | Thu, 27 Nov 2014 18:01:36 +0000 |
parents | 6b91e40b2c04 |
children | 17977f1455b9 7537bbac1e7e |
files | src/MatchVampPlugin.cpp src/MatchVampPlugin.h |
diffstat | 2 files changed, 39 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/MatchVampPlugin.cpp Thu Nov 27 16:50:14 2014 +0000 +++ b/src/MatchVampPlugin.cpp Thu Nov 27 18:01:36 2014 +0000 @@ -484,6 +484,32 @@ m_bFeaturesOutNo = list.size(); list.push_back(desc); + desc.identifier = "feature_distance"; + desc.name = "Feature Distance"; + desc.description = "Value of distance metric between features from performances A and B at each point-in-A along the chosen alignment path"; + desc.unit = ""; + desc.hasFixedBinCount = true; + desc.binCount = 1; + desc.hasKnownExtents = false; + desc.isQuantized = false; + desc.sampleType = OutputDescriptor::VariableSampleRate; + desc.sampleRate = outRate; + m_distOutNo = list.size(); + list.push_back(desc); + + desc.identifier = "feature_mag_a"; + desc.name = "Feature Magnitude A"; + desc.description = "Magnitude of feature vector for performance A"; + desc.unit = ""; + desc.hasFixedBinCount = true; + desc.binCount = 1; + desc.hasKnownExtents = false; + desc.isQuantized = false; + desc.sampleType = OutputDescriptor::FixedSampleRate; + desc.sampleRate = outRate; + m_featureMagOutNo = list.size(); + list.push_back(desc); + return list; } @@ -532,12 +558,19 @@ f.hasTimestamp = false; f.values.clear(); + double mag = 0.0; for (int j = 0; j < (int)f1.size(); ++j) { f.values.push_back(float(f1[j])); + mag += f1[j] * f1[j]; } + mag = sqrt(mag); returnFeatures[m_aFeaturesOutNo].push_back(f); f.values.clear(); + f.values.push_back(mag); + returnFeatures[m_featureMagOutNo].push_back(f); + + f.values.clear(); for (int j = 0; j < (int)f2.size(); ++j) { f.values.push_back(float(f2[j])); } @@ -597,6 +630,10 @@ feature.values.push_back(float(diff.sec + diff.msec()/1000.0)); returnFeatures[m_abDivOutNo].push_back(feature); + feature.values.clear(); + feature.values.push_back(m_pm1->getDistance(y, x)); + returnFeatures[m_distOutNo].push_back(feature); + if (i > 0) { int lookback = 100; //!!! arbitrary if (lookback > i) lookback = i;
--- a/src/MatchVampPlugin.h Thu Nov 27 16:50:14 2014 +0000 +++ b/src/MatchVampPlugin.h Thu Nov 27 18:01:36 2014 +0000 @@ -101,6 +101,8 @@ mutable int m_abRatioOutNo; mutable int m_aFeaturesOutNo; mutable int m_bFeaturesOutNo; + mutable int m_distOutNo; + mutable int m_featureMagOutNo; #ifdef _WIN32 static HANDLE m_serialisingMutex;