From b79a14e33ade7285d7309ef544d89c60f3d5b3ec Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Wed, 14 May 2014 16:52:21 +0200 Subject: Make lower limit to 'width' (ie. stddev) of normal distribution function. --- src/powerlist.cc | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/powerlist.cc b/src/powerlist.cc index 1888733..96f2c9b 100644 --- a/src/powerlist.cc +++ b/src/powerlist.cc @@ -32,6 +32,14 @@ #include +/** + * Minimum sample set size. + * Smaller means wider 'velocity groups'. + * Limited by sample set size, ie. only kicks in if sample set size is smaller + * than this number. + */ +#define MIN_SAMPLE_SET_SIZE 10 + // Enable to calculate power on old samples without power attribute //#define AUTO_CALCULATE_POWER @@ -213,8 +221,12 @@ Sample *PowerList::get(level_t level) float power_span = power_max - power_min; + // Width is limited to at least 10. Fioxes problem with instrument with a + // sample set smaller than MIN_SAMPLE_SET_SIZE. + float width = fmax(samples.size(), MIN_SAMPLE_SET_SIZE); + // Spread out at most 1.5 samples away from center - float stddev = power_span / samples.size() * 1.5; + float stddev = power_span / width * 1.5; // Cut off mean value with stddev/2 in both ends in order to make room for // downwards expansion on velocity 0 and upwards expansion on velocity 1. -- cgit v1.2.3