Skip to content

Sonido con JavaScript: cómo fabricar sonidos sin un solo archivo de audio

Publicado el · Joaquín Dati

Si entrás a la intro de mi portfolio con el sonido activado, vas a escuchar un meteorito que pasa zumbando, un ambiente espacial que respira, radios con estática y hasta las “voces” de los personajes. Lo curioso es que no hay ni un solo archivo de audio detrás: todo se fabrica en el navegador, en tiempo real, con JavaScript.

La idea: el navegador como sintetizador

Los navegadores traen una herramienta llamada Web Audio. Funciona como un estudio de sonido en miniatura: hay generadores de tono (osciladores), generadores de ruido, filtros que dejan pasar graves o agudos y controles de volumen. Conectándolos como cables en una consola, se puede crear casi cualquier sonido.

Un ejemplo para probar

Abrí la consola del navegador (F12), pegá esto y apretá Enter:

const ctx = new AudioContext();
const tono = ctx.createOscillator();
const vol = ctx.createGain();
tono.frequency.value = 440;
tono.connect(vol).connect(ctx.destination);
vol.gain.setValueAtTime(0.3, ctx.currentTime);
vol.gain.exponentialRampToValueAtTime(0.001, ctx.currentTime + 1);
tono.start();
tono.stop(ctx.currentTime + 1);

Vas a escuchar un “piiin” que se apaga en un segundo. Cambiá el 440 por 110 y suena grave; cambiá el tipo de onda con tono.type = "square" y suena a videojuego retro. Así, de a poco, se arman instrumentos.

Las recetas de la intro

Cada sonido del portfolio es una receta de estas piezas:

  • El meteorito: ruido filtrado cuyo tono baja mientras se aleja, imitando el efecto que escuchás cuando pasa una ambulancia.
  • El ambiente del espacio: tres tonos graves apenas desafinados entre sí y un filtro que se abre y se cierra lento, para que “respire”.
  • Las voces de los personajes: una síntesis que imita las vocales humanas, sin palabras reales, al estilo de los personajes de los juegos clásicos.

Además, los sonidos se ubican en el espacio 3D: si un objeto está a tu izquierda, lo escuchás a la izquierda.

Por qué hacerlo así

Los sonidos fabricados en el momento no pesan nada para descargar, pueden cambiar según lo que pasa en pantalla y nunca suenan exactamente igual dos veces. Es una forma de darle vida a una web que muy pocos sitios aprovechan.