multiplicativeRamp behaves like linearRamp
This commit is contained in:
parent
12cb0b5b43
commit
5412593da9
3 changed files with 5 additions and 5 deletions
|
|
@ -566,8 +566,8 @@ namespace _internals {
|
|||
template <class T>
|
||||
inline void snippetRampMultiplicative(T*& output, T& value, T step)
|
||||
{
|
||||
value *= step;
|
||||
*output++ = value;
|
||||
value *= step;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -487,7 +487,7 @@ float sfz::multiplicativeRamp<float, true>(absl::Span<float> output, float value
|
|||
while (unaligned(out) && out < lastAligned)
|
||||
_internals::snippetRampMultiplicative<float>(out, value, step);
|
||||
|
||||
auto mmValue = _mm_set1_ps(value);
|
||||
auto mmValue = _mm_set1_ps(value / step);
|
||||
auto mmStep = _mm_set_ps(step * step * step * step, step * step * step, step * step, step);
|
||||
|
||||
while (out < lastAligned) {
|
||||
|
|
@ -497,7 +497,7 @@ float sfz::multiplicativeRamp<float, true>(absl::Span<float> output, float value
|
|||
out += TypeAlignment;
|
||||
}
|
||||
|
||||
value = _mm_cvtss_f32(mmValue);
|
||||
value = _mm_cvtss_f32(mmValue) * step;
|
||||
while (out < output.end())
|
||||
_internals::snippetRampMultiplicative<float>(out, value, step);
|
||||
return value;
|
||||
|
|
|
|||
|
|
@ -539,7 +539,7 @@ TEST_CASE("[Helpers] Multiplicative Ramp")
|
|||
const float start { 1.0f };
|
||||
const float v { fillValue };
|
||||
std::array<float, 6> output;
|
||||
std::array<float, 6> expected { v, v * v, v * v * v, v * v * v * v, v * v * v * v * v, v * v * v * v * v * v };
|
||||
std::array<float, 6> expected { start, start * v, start * v * v, start * v * v * v, start * v * v * v * v, start * v * v * v * v * v };
|
||||
sfz::multiplicativeRamp<float, false>(absl::MakeSpan(output), start, v);
|
||||
REQUIRE(approxEqual<float>(output, expected));
|
||||
}
|
||||
|
|
@ -549,7 +549,7 @@ TEST_CASE("[Helpers] Multiplicative Ramp (SIMD)")
|
|||
const float start { 1.0f };
|
||||
const float v { fillValue };
|
||||
std::array<float, 6> output;
|
||||
std::array<float, 6> expected { v, v * v, v * v * v, v * v * v * v, v * v * v * v * v, v * v * v * v * v * v };
|
||||
std::array<float, 6> expected { start, start * v, start * v * v, start * v * v * v, start * v * v * v * v, start * v * v * v * v * v };
|
||||
sfz::multiplicativeRamp<float, true>(absl::MakeSpan(output), start, v);
|
||||
REQUIRE(approxEqual<float>(output, expected));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue