| 880 | } |
| 881 | |
| 882 | void BeatDetectors::detectBeats(span<const float, 16> frequencyBins, Data& audioData) { |
| 883 | // Calculate current band energies |
| 884 | mBassEnergy = (frequencyBins[0] + frequencyBins[1]) / 2.0f; |
| 885 | mMidEnergy = (frequencyBins[6] + frequencyBins[7]) / 2.0f; |
| 886 | mTrebleEnergy = (frequencyBins[14] + frequencyBins[15]) / 2.0f; |
| 887 | |
| 888 | // Simple threshold-based detection using per-band energy deltas. |
| 889 | audioData.bassBeatDetected = (mBassEnergy > mPreviousBassEnergy * 1.3f) && (mBassEnergy > 0.1f); |
| 890 | audioData.midBeatDetected = (mMidEnergy > mPreviousMidEnergy * 1.25f) && (mMidEnergy > 0.08f); |
| 891 | audioData.trebleBeatDetected = (mTrebleEnergy > mPreviousTrebleEnergy * 1.2f) && (mTrebleEnergy > 0.05f); |
| 892 | |
| 893 | // Update previous energies |
| 894 | mPreviousBassEnergy = mBassEnergy; |
| 895 | mPreviousMidEnergy = mMidEnergy; |
| 896 | mPreviousTrebleEnergy = mTrebleEnergy; |
| 897 | } |
| 898 | |
| 899 | void BeatDetectors::setThresholds(float bassThresh, float midThresh, float trebleThresh) { |
| 900 | #if SKETCH_HAS_LARGE_MEMORY |
no outgoing calls
no test coverage detected