43 pan_ = std::clamp(
pan, SampleType{-1.0f}, SampleType{1.0f});
46 SampleType
pan()
const {
return pan_; }
59 StereoSample
process(SampleType input)
const {
60 return {input * l_gain_, input * r_gain_};
80 SampleType& l_gain = l_gain_;
81 SampleType& r_gain = r_gain_;
82 constexpr SampleType kHalfPi = SampleType{1.57079632679489661923f};
83 const SampleType position =
84 (pan_ + SampleType{1.0f}) * SampleType{0.5f};
85 const SampleType theta = position * kHalfPi;
88 l_gain = SampleType{1.0f} - position;
92 l_gain = pan_ <= SampleType{0.0f}
94 : (SampleType{1.0f} - pan_);
95 r_gain = pan_ >= SampleType{0.0f}
97 : (SampleType{1.0f} + pan_);
100 l_gain = std::cos(theta);
101 r_gain = std::sin(theta);
106 const SampleType
c = std::max(SampleType{0.0f}, std::cos(theta));
107 const SampleType
s = std::max(SampleType{0.0f}, std::sin(theta));
108 l_gain = std::pow(
c, SampleType{1.5f});
109 r_gain = std::pow(s, SampleType{1.5f});
113 l_gain = std::cos(theta) * std::cos(theta);
114 r_gain = std::sin(theta) * std::sin(theta);
117 l_gain = std::sqrt(SampleType{1.0f} - position);
118 r_gain = std::sqrt(position);
124 l_gain = std::pow(SampleType{1.0f} - position, SampleType{0.75f});
125 r_gain = std::pow(position, SampleType{0.75f});
130 SampleType pan_ = SampleType{0.0f};
132 SampleType l_gain_ = SampleType{0.0f};
133 SampleType r_gain_ = SampleType{0.0f};