.

No he hincado el diente a SuperCollider como dije que me gustaría, en parte porque la lista de cosas que me gustaría hacer crece pero mi tiempo disponible es el mismo. Bueno, realmente es menos cada vez pero me refiero a tiempo disponible a lo largo de un día.

Como suele ser habitual en la pila de cosas que llaman mi atención para las que no tengo tiempo, me topo en Hacker News con pippi:

Pippi is a library of computer music modules for python.

It includes a few handy data structures for music like SoundBuffer & Wavetable, which are operator-overloaded to make working with sounds and control structures simpler.

It also includes a lot of useful methods for doing common and not-so-common transformations to sounds and control structures.

It comes with several oscs[… and] many built-in effects and transformations[…, as] well as support for pitch and harmony transformations and non-standard tuning systems[… and] basic graphing functionality[… as] well as other neat stuff like soundfont rendering support via tinysf!

(Normalmente suelo traducir estos párrafos pero hoy estoy algo apurado y sólo me da tiempo a hacer un corta-pega.)

El proyecto parece interesante en sí mismo pero me llamó la atención otro proyecto del mismo autor que extiende el anterior para programar música en directo, Astrid for pippi:

Astrid is an interactive workstation and performance interface for pippi (a DAW & an instrument)

In development! At the moment I’m still just dogfooding this as alpha software, but it should install and run fine in a normal linux audio environment with JACK.

Logotipo de Python.

Para los interesados en la idea de programar música de manera interactiva, he visto que algunas personas mencionan Sonic Pi aunque es otro proyecto más que no he probado. Está disponible para Linux, Mac, RasPi y Windows, lo que me hace recordar que en algún momento tengo que probar a replicar de forma casera el procesador de efectos para guitarra hecho con Guitarix sobre una RasPi.

.

Me sigo considerando un aficionado a los videojuegos aunque últimamente les dedico menos tiempo del que me gustaría. Aún no jugando tanto como antes me siguen llamando la atención casi todos los temas relacionados con esa actividad, que es por lo que acabé leyendo la explicación de un proyecto de Nolan Nicholson que vi en Hacker News:

Programé un script de Python que te permite poner ficheros .mp3 en bucle, sin cortes, contínuamente, basándose en un punto de repetición determinado automáticamente. Esto quiere decir que ahora puedes escuchar tu música de videojuego favorita en repetición, contínuamente, sonando como lo hace en el juego.

Incluso si no lo fuera a utilizar me parecería una idea interesante y es de agradecer que no sólo haya publicado el código, con licencia MIT, sino que también haya descrito el proceso implementado por las 177 líneas de código de su script.

Imagen que acompaña al texto Nolan Nicholson explicando su programa.

Ahora tendré que probarlo con la banda sonora de DOOM.

.

Ben Frederickson, un desarrollador de software que vive en Vancouver, ha publicado un par de entradas en su blog sobre cómo calcular la similitud entre dos artistas en términos de distancia. Para ello hace uso de un conjunto de datos sacados de last.fm en 2008 para plantear y desarrollar distintos métodos.

En la primera entrada parte de un criterio de similitud sencillo: el número de usuarios que dos artistas tienen en común. Rápidamente identifica como problema que los grupos más populares los tendrán casi todos los usuarios, con lo que la métrica no resulta especialmente fiable. La solución más sencilla que propone es calcular el coeficiente de Jaccard, aunque también menciona el coeficiente de Sørensen–Dice y el coeficiente de Ochiai. Después explica cómo tratar el problema como uno geométrico, con sus beneficios y penalizaciones, para pasar a comentar y mostrar las ventajas de usar TF-IDF y, finalmente, Okapi BM25.

La segunda entrada se centra en el uso de factorización de matrices para reducir la dimensionalidad de los datos antes de calcular la similitud entre dos artistas. Partiendo de la descomposición en valores singulares para hacer análisis de semántica latente, pasa a explicar e implementar el método descrito en «Collaborative Filtering for Implicit Feedback Datasets».

Para el desarrollo ha usado python, acompañando los resultados de gráficos interactivos hechos con D3.js, lo que hace la lectura aún más interesante.

.

Veo el otro día en Hacker News una reseña de un proyecto denominado Pianette / “Sound Fighter”, cuya descripción abreviada es:

Transformamos dos pianos de pared en controladores para una Playstation 2 utilizando piezos adaptados, Raspberry Pi B+ y varias Arduino Uno, y creando un firmware específico en Python 3 para asociar un estilo clásico de tocar el piano a acciones de Street Fighter Alpha 3, incluyendo combos y cosas por el estilo.

Este resumen no hace justicia al trabajo que han realizado. También es cierto que se pueden tener opiniones bastante dispares sobre el resultado pero no deja de ser un proyecto interesante. Además, me recuerda un tanto a un diseño de camiseta que vi hace unos años.

También trae a la memoria el Tekken Piano [03m28s] visto en Geekologie hace algo más de un año, aunque este era un proyecto menos elaborado:

El piano envía una señal MIDI que es transferida a una Arduino. Según la señal, la Arduino dispara transistres que, a su vez, disparan las entradas en un PCB Paewang (el circuito impreso de un joystick). El Paewang está conectado a una Xbox360 (también lo puedes usar en una PS3).

Como precisaban en su momento en N2G, el juego es Tekken Tag Tournament 2 y el circuito salió de un Datel/Joytron Paewang Revolution.

Pero no son casos únicos.

Ambos proyectos tienen características en común con otro visto en Gamasutra a finales de 2013 denominado Doom Piano [01m33s]. Estuvo expuesto en la Eurogamer Expo 2013 y se presentó en el Virgin Media Game Space de Londres, siendo uno de sus organizadores co-autor del experimento. Según un mensaje en su cuenta de twitter el juego está “controlado por un piano, tres I-PAC y un montón de cableado.

.

Armada con un par de lenguajes de programación, un editor de audio, una impresora 3D y un tanto de tesón, Amanda Ghassaei ha encontrado una manera de convertir grabaciones digitalizadas en discos de 33rpm caseros. La calidad sonora de los resultados es algo escasa, a pesar de lo cual la pista de sonido sigue siendo identificable.

[…], the records have a sampling rate of 11kHz (a quarter of typical mp3 audio) and 5-6 bit resolution (less than one thousandth of typical 16 bit resolution). […]

Con todo, tanto la idea como el proceso me parecen interesantes. Usa Audacity para aumentar el volumen del audio y compensar posteriores pérdidas de nivel. Con ayuda de Python extrae la información que necesita desde ficheros WAV y la conforma, guardando el resultado en un fichero de texto. Tras esto, con un script en Processing, genera un fichero STL para poder pasárselo a la impresora 3D.

Los detalles, con algunos ejemplos, se pueden ver y oír en el artículo 3D Printed Record de Instructables.