L'AnalyserNode ti dà i dati grezzi del suono in tempo reale: la forma d'onda e lo spettro delle frequenze. È il ponte tra audio e grafica.
const analyser = ctx.createAnalyser();
analyser.fftSize = 2048;
source.connect(analyser);
analyser.connect(ctx.destination);
const dati = new Uint8Array(analyser.frequencyBinCount);
function disegna() {
requestAnimationFrame(disegna);
analyser.getByteFrequencyData(dati); // riempi con lo spettro attuale
// ...disegna 'dati' su un <canvas> come barre
}
disegna();
getByteFrequencyData riempie un array con l'intensità di ogni banda di frequenza; getByteTimeDomainData ti dà invece la forma d'onda. Leggi questi valori dentro un loop di requestAnimationFrame e li disegni su un canvas.
Bassi a sinistra, alti a destra: ecco lo spettro che pulsa a ritmo. È il classico visualizer, e sono meno di venti righe. L'audio smette di essere invisibile.