.

Gracias a esta reseña en CSS-Tricks llego a un artículo en CodePen de Greg Hovanesyan titulado «Recreating legendary 8-bit games music with Web Audio API».

La música 8-bit o chiptunes es música electrónica sintetizada con ordenadores, consolas o máquinas recreativas antiguas. Es parte de una cultura para personas que crecieon a finales de los años 70 y en los años 80, y todavía es muy popular entre los geeks. El sonido era producido por el PSG (Programmable Sound Generator), un chip de sonido que sintetizaba varias formas de onda y a menudo ruidos. El generador podía producir […] formas de onda simples: pulso, cuadrada, triangular y sierra. También tenía un generador de ruido pseudo-aleatorio (PRNG). Hay un vídeo muy interesante del 8-Bit Guy, How Oldschool Sound/Music worked, donde habla de cómo el sonido se generaba en los distintos sistemas, y cómo distintas aproximaciones y trucos permitían a los desarrolladores de juegos crear música legendaria con hardware muy limitado. Recomiendo encarecidamente ver el vídeo, si se quiere entender como se crea la música 8-bit. Fue muy interesante para mí, así que decidí investigar algo más e intentar emular la música de juegos de 8-bit legendarios utilizando el Web Audio API.

El texto completo está lleno de ideas y recursos sencillos pero efectivos que consiguen un resultado, cuando menos, interesante. Se puede ver también en CodePen, por si alguien quiere curiosear en el código resultante, algo que yo mismo cuando tenga un rato.

Demostración del proyecto de Greg Hovanesyan para recrear música de vídeojuegos clásicos en el navegador.

.

Hace una temporada Adam “Ad-Rock” Horovitz revelaba por qué ya no escucha nueva música en una entrevista donde, de paso, mencionaba que fue uno de los primeros de su círculo en tener una 808 [29m14s] que guardaba en los estudios Chung King, refiriéndose a la Roland TR-808 con la que grabarían Licensed to Ill.

Ahora veo en Engadget que existe un proyecto de Vincent Riemer denominado iO-808 que trae la mítica caja de ritmos al navegador usando la Web Audio API. Aunque la interfaz puede ser poco intuitiva, el autor también ha creado un manual básico para familiarizarse con su funcionamiento.

Este proyecto no es único: como señalan en FACT Magazine, existen sitios como Acid Machine, una aproximación a la TB-303; o HTML5 Drum Machine que ofrece tanto la TR-808 como la TR-909 (emulada también en HTML-909), junto con la Machinedrum de Elektron y la LinnDrum, además de una batería acústica.

.

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.

.

Repasando la entrada de antesdeayer día sobre la interacción con el sonido me he dado cuenta que tenía perdida una entrada relacionada, así que aprovecho para dejarla por aquí ahora a pesar de que el artículo original en Soundstep tiene ya más de dos años y la reseña en Badass JavaScript, que es donde lo vi, tiene más de uno:

Magic Xylophone es una demostración del uso conjunto de getUserMedia y el Web Audio API que permite controlar un xilófono virtual con el movimiento […]. Dibuja una imagen de las teclas del xilófono sobre un vídeo en tiempo real desde la cámara, ejecuta la detección de movimiento con el vídeo y detecta cuando la imagen cruza cualquiera de las teclas al mismo tiempo.

Hay un artículo en Adobe Developer Connection donde se da una explicación más pormenorizada de la programación tras este pequeño experimento. Y, mientras tomo notas, aprovecharé para hacer mi famosa interpretación al xilófono virtual de “Frantic Disembowelment” de Cannibal Corpse:

.

dancer.js es una API de audio de alto nivel, utilizable tanto con la Audio Data API de Mozilla como con la Web Audio API de Webkit con compatibilidad inversa usando Flash, diseñado para hacer dulces visualizaciones.

Visto en Daily JS hace unos meses pero sin tiempo hasta la fecha de echarle un ojo.