65 return std::clamp(sample, -ceiling, ceiling);
67 return ceiling * std::tanh(sample / ceiling);
70 constexpr T
halfPi =
static_cast<T
>(std::numbers::pi * 0.5);
75 constexpr T phi =
static_cast<T
>(1.6180339887498948482);
76 const T threshold = ceiling / phi;
77 const T absSample = std::abs(sample);
78 if (absSample <= threshold)
80 const T sign = std::copysign(T(1), sample);
85 const auto limits = clipperLinearLimits<Curve>(ceiling);
86 const T threshold = sample >= T(0) ? limits[1] : -limits[0];