Antes de la aparición de la versión 5 de HTML, si se deseaba incluir audio en una página web, no quedaban muchas opciones aparte de utilizar la tecnología Flash, propietaria de Adobe. Con HTML5 se introducen nuevas etiquetas que anuncian la incorporación de audio y vídeo en la web, sin necesidad de ningún tipo de plug-in, ya que el navegador es capaz de entenderlas. Pero ¿hasta qué punto es cierto?
La etiqueta audio
La especificación de HTML5 introduce el tag o etiqueta audio, de modo análogo a la etiqueta video, juntamente con funcionalidades básicas de reproducción de archivos de audio pregrabado y consulta de atributos sencillos, como la duración. Gracias a este hecho, efectivamente ya no se necesita ningún plug-in para manejar sonido (darle al play y al stop, por ejemplo) en la página web.
¿Es suficiente?
Con las funcionalidades asociadas a la etiqueta audio, plantearse realizar, por ejemplo, un piano que suene en tiempo real sobre el propio navegador deviene una tarea que, si bien es resoluble, no es trivial. La idea es llevarlo a cabo a partir de ficheros de sonido cortos, ya sea preconstruidos o construyéndolos mientras se ejecuta la página web (http://codebase.es/riffwave/). Esta técnica se quedaba corta en otro tipo de tareas, como la aplicación de filtros o efectos personalizados al sonido que se esté captando con el micrófono, por ejemplo, ya que no se puede partir de un archivo pregrabado y concatenar en forma de archivos cortos el audio que va llegando por el micrófono, esto no daba buenos resultados (http://acko.net/blog/javascript-audio-synthesis-with-html-5/).
Con el objetivo de expandir las funcionalidades del trabajo con sonido a través del navegador, el W3C crea el Audio Working Group (http://www.w3.org/2011/audio/) en marzo del 2011. Este grupo tiene en cuenta el trabajo llevado a cabo por el equipo de Mozilla, que desarrolló la Audio Data API (https://wiki.mozilla.org/Audio_Data_API), una especificación no estándar para su navegador Firefox. Un primer resultado del Audio Working Group ha sido la creación de la Web Audio API (http://www.w3.org/TR/webaudio/), en desarrollo en la actualidad y disponible en Chrome a partir de la versión 14 y previa activación del flag correspondiente (activar «Entrada de audio web» introduciendo about:flags en la barra de direcciones del navegador Chrome). Esta especificación permite procesar y sintetizar audio desde el propio navegador.
Librerías asociadas
Hay una librería de código abierto, Audiolet (http://oampo.github.com/Audiolet/), que simplifica el uso de las dos anteriores API de audio, al integrarlas en unas mismas instrucciones y simplificar su uso. Como toda simplificación, se pierde cierta libertad de creación, pero se gana en velocidad de desarrollo.
Más librerías pueden encontrarse en la web de Mozilla (https://wiki.mozilla.org/Audio_Data_API#JavaScript_Audio_Libraries), así como ejemplos demostrativos (en este caso, ligados a la Audio Data API de Mozilla).
Estándar no cerrado
La Web Audio API es una especificación en borrador. No está terminada y no todos los navegadores la aceptan. De hecho, únicamente Chrome y Safari la entienden. Mozilla tiene su Audio Data API y Explorer no se pronuncia, por citar algunos navegadores. De este modo, únicamente las posibilidades básicas definidas por la etiqueta audio están disponibles de forma generalizada.
Aún así, se desarrolla
A pesar de no haber un estándar cerrado ni acabado, existen diferentes ejemplos de síntesis de audio a través del navegador (Chrome o Safari), http://chromium.googlecode.com/svn/trunk/samples/audio/index.html o los ejemplos citados en la web de Audiolet http://oampo.github.com/Audiolet/.
Es un desarrollo costoso, ya que un cambio en la especificación implica cambiar el propio desarrollo para hacerlo compatible con las versiones actualizadas de los navegadores que soportan dicha especificación.
Para saber más
Se puede consultar información completa y extensa sobre el estado de definición de la Web Audio API para manejar el sonido en http://www.w3.org/TR/webaudio/.
Un buen artículo que explica las posibilidades de la Web Audio API puede encontrarse en http://www.html5rocks.com/en/tutorials/webaudio/intro/?redirect_from_locale=es.