Il browser ha un sintetizzatore integrato: la Web Audio API. Il punto di partenza è l'AudioContext, il motore che genera e connette i suoni.
const ctx = new AudioContext();
const osc = ctx.createOscillator();
osc.type = "sine"; // onda sinusoidale
osc.frequency.value = 440; // La (A4)
osc.connect(ctx.destination);
osc.start();
osc.stop(ctx.currentTime + 1); // spegni dopo 1 secondo
Crei nodi e li connetti in un grafo: un oscillatore produce un'onda, la colleghi a destination (le casse) e parte. Per sicurezza l'AudioContext va avviato dopo un gesto dell'utente (un click), altrimenti il browser lo tiene sospeso.
È lo stesso concetto di Sonic Pi, ma dentro una pagina web.