import { AnalysisBase } from './AnalysisBase.mjs';
/**
* Class representing an acoustic "total power" analysis algorithm.
*
* Total power analysis determines the total cumulative spectral power present across all
* frequencies within an audio signal.
*
* @extends AnalysisBase
*/
export class TotalPower extends AnalysisBase {
/**
* Constructs a new {@link TotalPower} analysis object.
*/
constructor() {
super();
}
/**
* Performs a total power spectral analysis on the passed-in buffer containing audio
* frequency content. The resulting value will be between [0, 1], where 0 represents
* silence and 1 represents the maximum representable power.
*
* @param {Uint8Array} frequencyContent - {@link https://developer.mozilla.org/en-US/docs/Web/API/Uint8Array Uint8Array} containing audio frequency data
* @returns {number} Total power content across all frequencies in the specified frequency data as a value between [0, 1]
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Uint8Array Uint8Array}
*/
static analyze(frequencyContent) {
const frequencyTotal = frequencyContent.reduce(function(a, b) { return a + b; });
return frequencyTotal / (frequencyContent.length * 255);
}
}