| 750 | } |
| 751 | |
| 752 | float Reactive::computeRMS(const fl::vector<fl::i16>& samples) { |
| 753 | if (samples.empty()) return 0.0f; |
| 754 | |
| 755 | float sumSquares = 0.0f; |
| 756 | for (const auto& sample : samples) { |
| 757 | float f = static_cast<float>(sample); |
| 758 | sumSquares += f * f; |
| 759 | } |
| 760 | |
| 761 | return sqrtf(sumSquares / samples.size()); |
| 762 | } |
| 763 | |
| 764 | // SpectralFluxDetector implementation |
| 765 | SpectralFluxDetector::SpectralFluxDetector() |