diff --git a/src/sfizz/MathHelpers.h b/src/sfizz/MathHelpers.h index bab1c0bd..a8c97be6 100644 --- a/src/sfizz/MathHelpers.h +++ b/src/sfizz/MathHelpers.h @@ -124,8 +124,8 @@ inline float midiNoteFrequency(const int noteNumber) template constexpr T clamp( T v, T lo, T hi ) { - v = std::min(v, hi); - v = std::max(v, lo); + v = min(v, hi); + v = max(v, lo); return v; } @@ -148,18 +148,19 @@ constexpr ValueType linearInterpolation(ValueType left, ValueType right, ValueTy return left * leftCoeff + right * rightCoeff; } -template -constexpr Type pi { static_cast(3.141592653589793238462643383279502884) }; -template -constexpr Type twoPi { static_cast(2) * pi }; -template -constexpr Type piTwo { pi / static_cast(2) }; -template -constexpr Type piFour { pi / static_cast(4) }; -template -constexpr Type sqrtTwo { static_cast(1.414213562373095048801688724209698078569671875376948073176) }; -template -constexpr Type sqrtTwoInv { static_cast(0.707106781186547524400844362104849039284835937688474036588) }; +constexpr double dPi { 3.141592653589793238462643383279502884}; +constexpr double dTwoPi { dPi * 2 }; +constexpr double dPiTwo { dPi / 2 }; +constexpr double dPiFour { dPi / 4 }; +constexpr double dSqrtTwo { 1.414213562373095048801688724209698078569671875376948073176 }; +constexpr double dSqrtTwoInv { 0.707106781186547524400844362104849039284835937688474036588 }; + +constexpr float fPi { 3.141592653589793238462643383279502884}; +constexpr float fTwoPi { fPi * 2 }; +constexpr float fPiTwo { fPi / 2 }; +constexpr float fPiFour { fPi / 4 }; +constexpr float fSqrtTwo { 1.414213562373095048801688724209698078569671875376948073176 }; +constexpr float fSqrtTwoInv { 0.707106781186547524400844362104849039284835937688474036588 }; /** @brief A fraction which is parameterized by integer type diff --git a/src/sfizz/OnePoleFilter.h b/src/sfizz/OnePoleFilter.h index b9c6d805..46791ef4 100644 --- a/src/sfizz/OnePoleFilter.h +++ b/src/sfizz/OnePoleFilter.h @@ -26,7 +26,7 @@ public: template static Type normalizedGain(Type cutoff, C sampleRate) { - return std::tan(cutoff / static_cast(sampleRate) * pi); + return std::tan(cutoff / static_cast(sampleRate) * fPi); } OnePoleFilter(Type gain) diff --git a/src/sfizz/SIMDHelpers.h b/src/sfizz/SIMDHelpers.h index d466933c..253c125a 100644 --- a/src/sfizz/SIMDHelpers.h +++ b/src/sfizz/SIMDHelpers.h @@ -748,7 +748,7 @@ namespace _internals { int i = 0; for (; i < panSize; ++i) - pan[i] = std::cos(i * (piTwo / (panSize - 1))); + pan[i] = std::cos(i * (dPiTwo / (panSize - 1))); for (; i < static_cast(pan.size()); ++i) pan[i] = pan[panSize - 1]; diff --git a/src/sfizz/Voice.cpp b/src/sfizz/Voice.cpp index 8f75c25c..d74c8964 100644 --- a/src/sfizz/Voice.cpp +++ b/src/sfizz/Voice.cpp @@ -479,7 +479,7 @@ void sfz::Voice::fillWithGenerator(AudioSpan buffer) noexcept auto bends = tempSpan2.first(buffer.getNumFrames()); auto phases = tempSpan2.first(buffer.getNumFrames()); - const float step = baseFrequency * twoPi / sampleRate; + const float step = baseFrequency * fTwoPi / sampleRate; fill(jumps, step); if (region->bendStep > 1) @@ -496,8 +496,8 @@ void sfz::Voice::fillWithGenerator(AudioSpan buffer) noexcept copy(leftSpan, rightSpan); // Wrap the phase so we don't loose too much precision on longer notes - const auto numTwoPiWraps = static_cast(phase / twoPi); - phase -= twoPi * static_cast(numTwoPiWraps); + const auto numTwoPiWraps = static_cast(phase / fTwoPi); + phase -= fTwoPi * static_cast(numTwoPiWraps); } }