| Name | Message | Date |
|---|---|---|
| 📄 audioSelector.ts | 1 month ago | |
| 📄 CurveRenderer.ts | 1 month ago | |
| 📄 main.ts | 1 month ago | |
| 📄 style.css | 1 month ago |
📄
audioSelector.ts
import { CurveRenderer } from "./CurveRenderer";
let source: AudioBufferSourceNode | null = null;
const input = document.querySelector("#input input") as HTMLInputElement;
input?.addEventListener("input", async () => {
if (input.files?.length !== 1) {
return;
}
const file = input.files.item(0);
if (file == null) {
return;
}
const audioContext = new AudioContext();
const audioBuffer = await audioContext.decodeAudioData(await file?.arrayBuffer());
source?.stop();
source = audioContext.createBufferSource();
source.buffer = audioBuffer;
source.loop = true;
source.connect(audioContext.destination);
const analyserNode = audioContext.createAnalyser();
analyserNode.fftSize = 128;
source.connect(analyserNode);
analyserNode.connect(audioContext.destination);
CurveRenderer.audioAnalyser = analyserNode;
source.start();
});