| 107 | } |
| 108 | |
| 109 | float DropDetector::getBassEnergy(const fft::Bins& fft) const { |
| 110 | // Bass = first 25% of bins (sub-bass and bass) |
| 111 | int endBin = fl::max(1, static_cast<int>(fft.raw().size() / 4)); |
| 112 | float energy = 0.0f; |
| 113 | |
| 114 | for (int i = 0; i < endBin; i++) { |
| 115 | energy += fft.raw()[i]; |
| 116 | } |
| 117 | |
| 118 | return energy / static_cast<float>(endBin); |
| 119 | } |
| 120 | |
| 121 | float DropDetector::getMidEnergy(const fft::Bins& fft) const { |
| 122 | // Mid = middle 50% of bins (midrange frequencies) |
no test coverage detected