diff --git a/resampler.hh b/resampler.hh index 3fade0d..725bb71 100644 --- a/resampler.hh +++ b/resampler.hh @@ -35,13 +35,13 @@ public: void operator ()(IO *output, const IO *input, TYPE diff, int samples, int stride = 1) { TYPE ratio = rate / (rate + diff); - TYPE recip = TYPE(1) / ratio; for (int i = 0; i < samples - TAPS; ++i) { IO sum = 0; - int s0 = nearbyint(i * ratio); + TYPE x = i * ratio; + int s0 = nearbyint(x); int s1 = s0 + TAPS; for (int s = s0; s < s1; ++s) { - TYPE k = s * recip - i; + TYPE k = s - x; sum += lpf(k) * input[s * stride]; } output[(i + (TAPS - 1) / 2) * stride] = sum;