| ... | ... |
@@ -611,10 +611,11 @@ int32_t Channel::Interpolate() |
| 611 | 611 |
double kernel[LANCZOS_WIDTH * 2], kernel_sum = 0.0; |
| 612 | 612 |
int i = LANCZOS_WIDTH, shift = static_cast<int>(std::floor(ratio * LANCZOS_RESOLUTION)); |
| 613 | 613 |
int step = this->reg.sampleIncrease > 1.0 ? static_cast<int>(LANCZOS_RESOLUTION / this->reg.sampleIncrease) : LANCZOS_RESOLUTION; |
| 614 |
+ int shift_adj = shift * step / LANCZOS_RESOLUTION; |
|
| 614 | 615 |
for (; i >= -static_cast<int>(LANCZOS_WIDTH - 1); --i) |
| 615 | 616 |
{
|
| 616 | 617 |
int pos = i * step; |
| 617 |
- kernel_sum += kernel[i + LANCZOS_WIDTH - 1] = this->lanczos_lut[std::abs(shift - pos)]; |
|
| 618 |
+ kernel_sum += kernel[i + LANCZOS_WIDTH - 1] = this->lanczos_lut[std::abs(shift_adj - pos)]; |
|
| 618 | 619 |
} |
| 619 | 620 |
double sum = 0.0; |
| 620 | 621 |
for (i = 0; i < static_cast<int>(LANCZOS_WIDTH * 2); ++i) |
| ... | ... |
@@ -42,7 +42,7 @@ public: |
| 42 | 42 |
|
| 43 | 43 |
unsigned XSFConfig::initSampleRate = 44100; |
| 44 | 44 |
std::wstring XSFConfig::commonName = L"NCSF Decoder"; |
| 45 |
-std::wstring XSFConfig::versionNumber = L"1.7"; |
|
| 45 |
+std::wstring XSFConfig::versionNumber = L"1.7.1"; |
|
| 46 | 46 |
unsigned XSFConfig_NCSF::initInterpolation = 5; |
| 47 | 47 |
std::wstring XSFConfig_NCSF::initMutes = L"0000000000000000"; |
| 48 | 48 |
|