.

Con años de retraso, leo el artículo The First Computer Musician de R. Luke Dubois:

En 1957 un ingeniero de 30 años llamado Max Mathews consigió una computadora IBM 704 en los laboratorios Bell Telephone de Murray Hill, Nueva Jersey, para generar 17 segundos de música, que después grabó para la posteridad. Aunque no fue la primera persona en producir sonidos con una computadora, Max fue el primero en hacerlo con una combinación replicable de hardware y software que permitía al usuario especificar qué tonos quería oír. Esta pieza de música, llamada «The Silver Scale» y compuesta por un colega en los laboratorios Bell llamado Newman Guttman, no pretendía ser una obra maestra. Era una prueba de concepto, y puso los cimientos para un avance revolucionario en la música, un hecho cuyos ecos pueden sentirse en todas partes hoy en día.

El texto completo merece la pena ser leído y en la Wikipedia hay más datos de este ingeniero. Entre esto y la charla de Chris Wilson que vi el otro día uno podría sentirse motivado a hacer algo creativoy ver si realmente se tiene ese talento.

Max Mathews, 2011. Imagen vista en Wikimedia Commons.

.

No tengo mucho tiempo para seguir las sesiones de Google I/O 2014, aunque algunas parecen especialmente interesantes. Una de ellas es la de Chris Wilson, titutlada Making Music with the Web Platform:

Making Music with the Web Platform [07m51s]

El vídeo no detalla los aspectos técnicos de las posibilidades que esboza, lo que le permite cubrir bastantes temas. Sólo un problema concreto, el de la sincronzación, ya da para un artículo bastante extenso en HTML5 Rocks del propio Wilson. Al final la charla se me hace algo corta y me deja queriendo saber más, aunque supongo que esa es parte de la misión de estos vídeos. También es verdad que ya acumulo unas cuantas entradas de programación en JavaScript, con más temas de los que puedo explorar como me gustaría. Así que me apunto esto también, para cuando tenga tiempo.

.

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:

.

Hacía tiempo que no le echaba un ojo a Make y, poniendo fin a esa racha, he visto un par de artefactos en reseñas relativamente recientes que me han llamado la atención.

Por un lado está esta variante de un tubo de Kundt:

Lo que se ve en funcionamiento [01m14s] es, según su constructor y el artículo de MAKE, un Arduino generando dos tonos que se llegan primero a un amplificador y luego a dos altavoces en lados opuestos del cacharro: uno fijo a A220 y otro ajustable mediante un mando hasta aproximadamente medio tono por encima y por debajo de A220. La interferencia entre dos tonos similares produce un batimiento que determina la posición de los nodos y antinodos de la onda estacionaria, reflejándose en los abalorios de plástico flurescentes levitados acústicamente.

El sonido dentro de la caja es bastante alto, por lo que está bien sellada, pero me pregunto si llevando los tonos a unos cascos a un volumen aceptable se podrían apreciar pulsos binaurales.

Por otro lado está Sand Noise Device, una “caja de arena musical de realidad aumentada”:

En este caso, tal como cuenta en el artículo de MAKE, el sonido y la presentación son generados en tiempo real a la orografía de la arena en la caja y a la posición de determinados objetos en ella:

La interfaz consiste en una caja de la altura de una mesa, rellena de arena; un Kinect de Microsoft, provista de una cámara RGB y sensores de profundidad; un proyector y varios objetos tangibles iluminados. El Kinect se usa para detectar la posición de los objectos, su color y la topografía de la arena. El proyector da realimentación visual, mientras que el sonido proviene de un sistema de altavoces multi-canal instalado alrededor de la caja. Los distintos parámetros que determinan la funcionalidad del sistema que genera la música del dispositivo están influenciados por las interacciones del usuario con el paisaje de arena y los objetos tangibles provistos.

Verlo en acción [03m48s] por alguna razón hizo que me acordarse de Audible Color, aunque la única similitud aparente es el uso de la detección de los colores como parámetro de entrada.

.

Hace algo más de un año me apunté una reseña en Hacker News para cuando tuviera algo más de tiempo libre. Viendo el tiempo pasado, mejor lo dejo por aquí antes de que la tecnología involucrada esté obsoleta o haya evolucionado tanto que no sea reconocible:

Shiny Happy WebAudio MIDI-fied Drum Machine es una caja de ritmos que utiliza dos APIs en estado Working Draft de la W3C, el de Web Audio y el de Web MIDI. El primero lo había visto antes pero el segundo, al no tratar habitualmente con dispositivos MIDI, no me resulta familiar:

[…] The Web MIDI API is intended to enable direct access to devices that respond to MIDI – external synthesizers or lighting systems, for example, or even the software synthesizers that are built in to many common operating systems. The Web MIDI API is also explicitly designed to enable a new class of applications on the web that can respond to MIDI controller inputs – using external hardware controllers with physical buttons, knobs and sliders (as well as musical controllers like keyboard, guitar or wind instrument controllers) to control web applications.[…]