Change the linear ramp to something more natural
This commit is contained in:
parent
8ef598bb7d
commit
a71b5c3bb5
2 changed files with 4 additions and 3 deletions
|
|
@ -538,8 +538,8 @@ namespace _internals {
|
||||||
template <class T>
|
template <class T>
|
||||||
inline void snippetRampLinear(T*& output, T& value, T step)
|
inline void snippetRampLinear(T*& output, T& value, T step)
|
||||||
{
|
{
|
||||||
value += step;
|
|
||||||
*output++ = value;
|
*output++ = value;
|
||||||
|
value += step;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -461,7 +461,7 @@ float sfz::linearRamp<float, true>(absl::Span<float> output, float value, float
|
||||||
while (unaligned(out) && out < lastAligned)
|
while (unaligned(out) && out < lastAligned)
|
||||||
_internals::snippetRampLinear<float>(out, value, step);
|
_internals::snippetRampLinear<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);
|
auto mmStep = _mm_set_ps(step + step + step + step, step + step + step, step + step, step);
|
||||||
|
|
||||||
while (out < lastAligned) {
|
while (out < lastAligned) {
|
||||||
|
|
@ -471,7 +471,8 @@ float sfz::linearRamp<float, true>(absl::Span<float> output, float value, float
|
||||||
out += TypeAlignment;
|
out += TypeAlignment;
|
||||||
}
|
}
|
||||||
|
|
||||||
value = _mm_cvtss_f32(mmValue);
|
value = _mm_cvtss_f32(mmValue) + step;
|
||||||
|
|
||||||
while (out < output.end())
|
while (out < output.end())
|
||||||
_internals::snippetRampLinear<float>(out, value, step);
|
_internals::snippetRampLinear<float>(out, value, step);
|
||||||
return value;
|
return value;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue