# HG changeset patch # User Chris Cannam # Date 1421947524 0 # Node ID b79151bb75af680e31d97ceb49c8c5ab1fd5f9a7 # Parent b990fa45cb1fed3c8621e24e86f2d04c4ffbc1a8 Make noise a parameter in DistanceMetric (though not exposed in plugin etc yet) diff -r b990fa45cb1f -r b79151bb75af src/DistanceMetric.cpp --- a/src/DistanceMetric.cpp Thu Jan 22 17:20:11 2015 +0000 +++ b/src/DistanceMetric.cpp Thu Jan 22 17:25:24 2015 +0000 @@ -49,8 +49,10 @@ } double noise = 1e-3 * featureSize; - d += noise; - sum += noise; + if (m_params.noise == AddNoise) { + d += noise; + sum += noise; + } if (sum == 0) { return 0; diff -r b990fa45cb1f -r b79151bb75af src/DistanceMetric.h --- a/src/DistanceMetric.h Thu Jan 22 17:20:11 2015 +0000 +++ b/src/DistanceMetric.h Thu Jan 22 17:25:24 2015 +0000 @@ -36,14 +36,26 @@ NormaliseDistanceToLogSum, }; + enum NoiseAddition { + + /** Don't add noise. */ + NoNoise, + + /** Add a constant noise term. This can help avoid + * mis-tracking when one file contains a lot of silence. */ + AddNoise, + }; + struct Parameters { Parameters() : - norm(NormaliseDistanceToLogSum) + norm(NormaliseDistanceToLogSum), + noise(AddNoise) {} /** Normalisation for distance metrics. */ DistanceNormalisation norm; + NoiseAddition noise; }; DistanceMetric(Parameters params);