sound-visualizer
Version:
34 lines (32 loc) • 941 B
JavaScript
// src/helpers/impure.ts
var activeAnalysers = /* @__PURE__ */ new Map();
function startAnalysis(audio) {
let activeAnalyser = activeAnalysers.get(audio.id);
if (!activeAnalyser) {
const audioContext2 = new window.AudioContext();
activeAnalyser = {
audioContext: audioContext2,
analyser: audioContext2.createAnalyser()
};
activeAnalysers.set(audio.id, activeAnalyser);
}
const { audioContext, analyser } = activeAnalyser;
const dataArray = new Uint8Array(analyser.frequencyBinCount);
const source = audioContext.createMediaStreamSource(audio);
source.connect(analyser);
function analyse() {
analyser.getByteTimeDomainData(dataArray);
return dataArray;
}
function disconnect() {
source.disconnect();
analyser.disconnect();
audioContext.close().then(() => {
activeAnalysers.delete(audio.id);
});
}
return { analyse, disconnect };
}
export {
startAnalysis
};