From d74777280abf4b73df3ac2c5ce0b23a6661dc9b0 Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Mon, 10 Feb 2020 19:35:40 +0100 Subject: [PATCH] Changed the signature of the pan/width/position snippets --- src/sfizz/SIMDHelpers.h | 30 +++++++++++++++++------------- src/sfizz/SIMDSSE.cpp | 12 ++++++++---- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/sfizz/SIMDHelpers.h b/src/sfizz/SIMDHelpers.h index 7aa93750..77c220e4 100644 --- a/src/sfizz/SIMDHelpers.h +++ b/src/sfizz/SIMDHelpers.h @@ -751,21 +751,21 @@ namespace _internals { } template - inline void snippetPan(const T*& pan, T*& left, T*& right) + inline void snippetPan(T pan, T& left, T& right) { - T p = ((*pan++) + T{1.0}) * T{0.5}; - p = clamp(p, 0, 1); - *left++ *= panLookup(p); - *right++ *= panLookup(1 - p); + pan = (pan + T{1.0}) * T{0.5}; + pan = clamp(pan, 0, 1); + left *= panLookup(pan); + right *= panLookup(1 - pan); } template - inline void snippetWidth(const T*& width, T*& mid, T*& side) + inline void snippetWidth(const T& width, T& mid, T& side) { - T w = std::abs(*width) * T{0.5}; + T w = std::abs(width) * T{0.5}; w = clamp(w, 0, 1); - *mid++ *= panLookup(w); - *side++ *= *width++ > 0 ? panLookup(1 - w) : -panLookup(1 - w); + mid *= panLookup(w); + side *= width > 0 ? panLookup(1 - w) : -panLookup(1 - w); } } @@ -789,8 +789,10 @@ void pan(absl::Span panEnvelope, absl::Span leftBuffer, absl::Span @@ -805,8 +807,10 @@ void width(absl::Span widthEnvelope, absl::Span midBuffer, absl::Spa auto* mid = midBuffer.begin(); auto* side = sideBuffer.begin(); auto* sentinel = width + min(widthEnvelope.size(), midBuffer.size(), sideBuffer.size()); - while (width < sentinel) - _internals::snippetWidth(width, mid, side); + while (width < sentinel) { + _internals::snippetWidth(*width, *mid, *side); + incrementAll(width, mid, side); + } } /** diff --git a/src/sfizz/SIMDSSE.cpp b/src/sfizz/SIMDSSE.cpp index 8b541657..3093fcdf 100644 --- a/src/sfizz/SIMDSSE.cpp +++ b/src/sfizz/SIMDSSE.cpp @@ -594,8 +594,10 @@ void sfz::pan(absl::Span panEnvelope, absl::Span); @@ -613,8 +615,10 @@ void sfz::pan(absl::Span panEnvelope, absl::Span(pan, left, right); } - while (pan < sentinel) - _internals::snippetPan(pan, left, right); + while (pan < sentinel){ + _internals::snippetPan(*pan, *left, *right); + incrementAll(pan, left, right); + } } template <>