45 return result > 1.0f ? 1.0f : result;
51 virtual const char*
name() = 0;
57 const float twoPi = 6.28318531f;
59 const float sixPi = 18.84955593f;
81 const char*
name()
override {
82 static char buffer[80] =
"Buffered ";
123 if (idx < 0 || idx >=
i_samples)
return 0;
126 const char*
name() {
return "Rectange"; }
139 return 0.54f - (0.46f * cos(
twoPi *
ratio(idx)));
141 const char*
name() {
return "Hamming"; }
153 const char*
name() {
return "Hann"; }
158 return 0.5f * (1.0f - cos(
twoPi *
ratio(idx)));
171 const char*
name() {
return "Triangle"; }
173 return 1.0f - ((2.0f * fabs((idx - 1) -
174 (
static_cast<float>(
i_samples - 1) / 2.0f))) /
189 const char*
name()
override {
return "Nuttall"; }
191 float r =
ratio(idx);
192 return 0.355768f - (0.487396f * (cos(
twoPi * r))) +
193 (0.144232f * (cos(
fourPi * r))) - (0.012604f * (cos(
sixPi * r)));
207 const char*
name()
override {
return "Blackman"; }
209 float r =
ratio(idx);
210 return 0.42323f - (0.49755f * (cos(
twoPi * r))) +
211 (0.07922f * (cos(
fourPi * r)));
224 const char*
name()
override {
return "BlackmanNuttall"; }
226 float r =
ratio(idx);
227 return 0.3635819f - (0.4891775f * (cos(
twoPi * r))) +
228 (0.1365995f * (cos(
fourPi * r))) - (0.0106411f * (cos(
sixPi * r)));
241 const char*
name()
override {
return "BlackmanHarris"; }
243 float r =
ratio(idx);
244 return 0.35875f - (0.48829f * (cos(
twoPi * r))) +
245 (0.14128f * (cos(
fourPi * r))) - (0.01168f * (cos(
sixPi * r)));
258 const char*
name()
override {
return "FlatTop"; }
260 float r =
ratio(idx);
261 return 0.2810639f - (0.5208972f * cos(
twoPi * r)) +
262 (0.1980399f * cos(
fourPi * r));
275 const char*
name()
override {
return "Welch"; }
279 return 1.0f - (tmp * tmp);