Música en una línea de código

¿Qué tiene que ver la música con el código fuente de un programa? Desde hace tiempo hay gente que, en contraposición con las grandes producciones audiovisuales que consumen montones de memoria y ciclos de procesador, “compite” por generar programas capaces de realizar animaciones o reproducir música con el mínimo número de memoria posible. Estamos hablando de programas de entre 4K y 64 K de memoria que tienen como objetivo conseguir las representaciones audiovisuales lo más completas posible. Las técnicas de programación se fueron perfeccionando con el tiempo, y se llegaron a conseguir resultados francamente impresionantes con mucha menos memoria. El siguiente video es un ejemplo de este tipo de programas, que en este caso sólo ocupa 256 bytes.

[youtube http://www.youtube.com/watch?v=R35UuntQQF8]

Una vez conseguido este reto, muchos programadores proclamaron que los “256 bytes son los nuevos 4K” y se lanzaron a desarrollar programas con mucha menos memoria, con el objetivo de llegar a los 16 bytes de memoria. Para llegar a este límite se suelen utilizar plataformas como el Commodore 64, que permiten generar ficheros ejecutables sin apenas cabeceras y con muy poco código superfluo. Un ejemplo de programa de 23 bytes es el siguiente video, que no resulta tan atractivo visualmente como el anterior, pero sí consigue generar ciertos patrones de sonidos.

[youtube http://youtu.be/7lcQ-HDepqk]

Pues bien, hace algún tiempo, un programador finlandés decidió dar un pequeño paso más allá, consistente en generar música con una sola línea de código C. Un programa tan simple como for(;;) putchar(t++) produce una señal en forma de diente de sierra de 31.25 Hz de frecuencia. Basta multiplicar por 2 la t (t++*2) para que suene una octava más alto y a partir de ahí sólo queda experimentar.

El siguiente video muestra varios ejemplos de lo que se puede hacer con sólo una línea de código:

[youtube http://www.youtube.com/watch?v=GtQdIYUtAHg]

También se pueden ver la segunda y la tercera parte del video con más ejemplos todavía.

Este tipo de sonidos tienen un ritmo que no nos resulta extraño debido a que en la música occidental los compases binarios son muy habituales. En particular, lo sintetizadores suelen utilizar este tipo de estructuras por simplicidad, y así es normal encontrarse con que cuatro pulsaciones formen un compás, y cuatro compases un patrón. Un ejemplo muy gráfico de cómo este tipo de estructura binarias son capaces de generar ritmos que nos resultan familiares es el siguiente video:

[vimeo http://vimeo.com/1639345]

Si quieres experimentar un poco sin necesidad de compilador ni nada por el estilo, prueba esta herramienta javascript en la que basta con introducir el código que se quiere probar y ella ya se encarga de generar el sonido correspondiente. Un código tan simple como t&t>>8 ya es capaz de producir un patrón rítmico bastante interesante. Otro ejemplo que merece la pena probar es:

t>>6^t&0x25|t+(t^t>>11) -t*((t%24?2:6)&t>>11)^t<<1 &(t&0x256?t>>4:t>>10)

El proceso hasta el momento se basa en ensayo-error, y aunque los resultados pueden llegar a ser sorprendentes, falta todavía encontrar un método más sistemático que permita no trabajar a ciegas.

(Vía: Countercomplex)

La orquesta flotante

Una aplicación musical para el iPhone y un curioso mecanismo es lo que ha desarrollado la compañía londinense Poietic Studio.

Se trata de 19 pelotas como de ping-pong que flotan en el aire controladas desde el iPhone gracias a la aplicación desarrollada. Cada una de las pelotas se corresponde con un instrumento musical, y la altura a la que flote representa el volumen de dicho instrumento.

Desde la propia empresa esperan que en futuras versiones el dispositivo se maneje utilizando sensores de movimiento en lugar de el iPhone. Desgraciadamente hay muy poca información sobre el mecanismo de funcionamiento o sobre la aplicación, pero hay que reconocer que como idea conceptual no deja de ser curiosa.

[vimeo http://vimeo.com/29307511]

En este otro video se puede ver el mismo dispositivo en una versión anterior:

[vimeo http://vimeo.com/13059978]

(Visto en PSFK)