.

El mes pasado me topé con “Beat Detection Algorithms”, un texto en dos partes (1 y 2) sobre la implementación en Scala de un par de algoritmos sencillos con el objetivo titular. Aparte de la explicación de la teoría tras estas implementaciones se puede encontrar el resultado integrado en el código fuente de un proyecto del autor.

Recuerdo haber echado un ojo a este tipo de análisis matemático (aunque sin llegar a aplicarlo) a finales de la década de los 90, en la estela de la demoscene y con el ascenso de WinAmp y sus complementos de visualización. Remontándome sólo al año pasado, tenía apuntado un artículo sobre detección de pulsaciones usando Web Audio, encontrado a través de EchoJS, nuevamente sin llevarlo a la práctica por mi parte.

Grimes – Go: Peaks with a lowpass, highpass, and bandpass filter, respectively.

Este último enlace lo tenía apuntado junto con otra reseña en EchoJS de un proyecto denominado WaveGL, cuyo objetivo era «generar audio en la GPU y transmitirlo a la tarjeta de audio» y del que señalaban uno de varios ejemplos. Con tantos proyectos de programación que he visto recientemente no estaría mal sacar un poco de tiempo para programar por gusto en lugar de por compromiso.

.

ThreeAudio.js es una librería JavaScript creada por Steven Wittens que permite crear visualizaciones en Three.js, exponiendo los datos del audio como shaders GLSL. Puede leer de una fuente de sonido y proveer datos de tiempo y frecuencia en forma de texturas, al igual que valores derivados de volumen, bajos, medios y agudos. Incluye además un detector de pulsos en tiempo real basado en autocorrelación. Usa MicroEvent.js y DSP.js. Un ejemplo de lo que permite hacer se puede ver en su demo aunque sólo funciona en Google Chrome.

Hace una temporada señalaba un artículo donde se explicaba cómo visualizar sonidos con WebGL, para el que pueda tener interés en este tipo de ejercicios.

.

Ya que estamos con bichos haciendo bailes chorras, recupero una reseña vista en PlayWebGL.com a principios de año:

After reaching the billion views on Youtube, Gangnam style keeps its conquest within the games. Doom 3 mobs can’t resist to show you there new style in a WebGl version.

Dance with us.

Quizás no sea tan entretenido como el Quake II GWT Port pero no deja de tener su gracia.

.

Los que tengan algún interés por hacer cosas como lo que aparecía por aquí ayer disponen de bastantes recursos para informarse y formarse. A falta de tiempo, yo sólo he podido echar un vistazo rápido a un artículo en Learning Three.js con un ejemplo sencillo de visualización de sonidos con WebGL:

This post is about producing a 3D Vuemeter for real time sound. We gonna walk thru the code of a webaudio.js example. This example will show you how to create a WebGL vuemetter with webaudio.js. It should be simple to understand, only 40-lines of javascript. webaudio.js is a web audio library for game. We gonna use it to reach Web Audio API. We gonna use tQuery to reach three.js 3D engine.

Sí, el inglés podría estar algo más pulido pero el contenido parece interesante.

.

Euphony, de Xueqiao Xu, es descrito sucintamente como un «reproductor y visualzador MIDI web» con licencia MIT. Lo cierto es que no sólo es una aplicación curiosa, que a mí me recuerda a un carrillón, también es un trabajo de programación e integración interesante. Entre las librerías que utiliza se cuentan: three.js, MIDI.js, jasmid, base642binary.js, async.js , spin.js, javascript-state-machine, jQuery, jQuery Easing Plugin y nanoScrollerJS.

Si queréis ver qué pinta tiene podéis echarle un vistazo (sólo en Chrome), por ejemplo, a la reproducción de la tocata y fuga en re (menor, BWV 565).