Un'eco nasce da un'idea semplice: ritardare il suono e rimandarne una parte all'ingresso. In Web Audio è un DelayNode con un anello di feedback.

const delay = ctx.createDelay();
delay.delayTime.value = 0.3;      // 300 ms di ritardo

const feedback = ctx.createGain();
feedback.gain.value = 0.4;        // quanto rimandare indietro

// l'anello: uscita del delay -> feedback -> di nuovo nel delay
source.connect(delay);
delay.connect(feedback);
feedback.connect(delay);          // <- il loop che crea gli echi
delay.connect(ctx.destination);
source.connect(ctx.destination);  // segnale diretto

Il cuore è l'anello: l'uscita del delay torna al suo ingresso attraverso un gain. Ogni giro il suono si ripete più debole (perché il gain è < 1), creando echi che svaniscono.

Attenzione al valore del feedback: sotto 1 gli echi decadono, ma a 1 o più l'anello si auto-alimenta all'infinito e il volume esplode. Tienilo tra 0.3 e 0.6 per un'eco musicale.

Cambia delayTime a ritmo di beat e l'eco diventa parte del groove: è l'effetto che dà spazio e movimento a un synth altrimenti secco.