meyda
Version:
Real-time feature extraction for the web audio api
15 lines (14 loc) • 677 B
JavaScript
export default function (_a) {
var ampSpectrum = _a.ampSpectrum, chromaFilterBank = _a.chromaFilterBank;
if (typeof ampSpectrum !== "object") {
throw new TypeError("Valid ampSpectrum is required to generate chroma");
}
if (typeof chromaFilterBank !== "object") {
throw new TypeError("Valid chromaFilterBank is required to generate chroma");
}
var chromagram = chromaFilterBank.map(function (row, i) {
return ampSpectrum.reduce(function (acc, v, j) { return acc + v * row[j]; }, 0);
});
var maxVal = Math.max.apply(Math, chromagram);
return maxVal ? chromagram.map(function (v) { return v / maxVal; }) : chromagram;
}