UNPKG

sound-visualizer

Version:
34 lines (32 loc) 941 B
// 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 };