La Web Audio API è potente ma verbosa. Tone.js ci costruisce sopra un livello musicale: sintetizzatori, effetti e un "trasporto" con un tempo, pronti all'uso.
import * as Tone from "tone";
const synth = new Tone.PolySynth().toDestination();
// una sequenza sincronizzata al tempo globale
const seq = new Tone.Sequence((time, note) => {
synth.triggerAttackRelease(note, "8n", time);
}, ["C4", "E4", "G4", "B4"], "4n");
Tone.Transport.bpm.value = 120;
Tone.Transport.start();
seq.start(0);
Tone.Transport è un orologio musicale globale al quale agganci tutto; le durate le scrivi in notazione musicale ("8n" = un ottavo). Il timing preciso al campione, che con la Web Audio nuda dovresti gestire a mano, qui è automatico.
Se la Web Audio API è l'assembly del suono nel browser, Tone.js è il linguaggio ad alto livello. Perfetto quando vuoi comporre, non reimplementare uno scheduler.