meyda
Version:
Real-time feature extraction for the web audio api
30 lines (25 loc) • 557 B
text/typescript
export default function ({
ampSpectrum,
sampleRate,
}: {
ampSpectrum: Float32Array;
sampleRate: number;
}): number {
if (typeof ampSpectrum !== "object") {
throw new TypeError();
}
var ampspec = ampSpectrum;
//calculate nyquist bin
var nyqBin = sampleRate / (2 * (ampspec.length - 1));
var ec = 0;
for (var i = 0; i < ampspec.length; i++) {
ec += ampspec[i];
}
var threshold = 0.99 * ec;
var n = ampspec.length - 1;
while (ec > threshold && n >= 0) {
ec -= ampspec[n];
--n;
}
return (n + 1) * nyqBin;
}