El sintetizador Casio VL-1

Cuando era pequeño, heredé un Casio VL-1 que siempre consideré un "piano de juguete". Lo que nunca supe es que tenía entre mis manos el primer sintetizador digital que se comercializó en la historia.

Un piano Casio VL-1

El VL-1 era un piano, secuenciador y calculadora unidos en uno. Tenía seis presets de sonido: piano, fantasy, violín, flauta, guitarra y ADSR. Nunca supe muy bien qué era ADSR, ya que llegó a mis manos sin instrucciones.

Pese a que era un piano monofónico (sólo podía reproducir un tono al mismo tiempo), permitía poner bases de fondo, ajustar el tempo e incluso afinarlo ajustando una rueda con un destornillador.

Siempre me pareció sorprendente que un piano tan simple tuviera tantas funcionalidades. Tal vez por eso cada cierto tiempo identificaba su peculiar sonido en alguna canción, como es el caso de Da Da Da.

En efecto, el cantante lleva un VL-1 en un bolsillo de la chaqueta.

Como todas las notas se correspondían con algún número o signo de la calculadora, que venía rotulado en el piano, fui transcribiendo muchas de las melodías a un cuaderno usando esa notación.

Además, descubrí que al guardar un número en la calculadora el sonido del instrumento ADSR cambiaba. Pasé muchas tardes probando códigos al azar y anotando mis resultados en el mismo cuaderno.

Theremin     3 9 9 9 9 9 5 4
Oboe         6 1 0 7 9 1 3 0
Voz humana   0 0 1 2 3 1 2 3
Banjo        2 0 3 4 2 0 0 0

Cuando tuve internet en casa conseguí descargarme el manual, y por fin comprendí la lógica que había tras estos códigos. Se trataba de un sintetizador digital que permitía tomar un instrumento base y modificar sus parámetros, algo que nunca antes se había hecho de forma comercial.

Páginas sobre ADSR del manual del Casio VL-1

La forma de aunar tantas funcionalidades en algo tan simple y tosco en apariencia han convertido a este instrumento de Casio en un objeto de culto, de forma parecida a su clásico reloj de pulsera F-91W.

Hoy en día es posible encontrar incontables guías para modificar el sintetizador, emuladores para software musical o covers de canciones. Y es que este pequeño piano, no tan de juguete como aparenta, ha influenciado enormemente los sintetizadores modernos.

Imagen del OP-1 en el videoclip de One (Your Name)

3 comentarios

Arctic Code Vault

Hoy me he enterado de que el código de algunos de mis proyectos está impreso en una película fotográfica y enterrado en el ártico. Y si has contribuido a proyectos públicos de Github, seguramente el tuyo también.

Rollo de película del Artic Code Vault

Nuestros sistemas de almacenamiento son mucho menos duraderos de lo que solemos creer. Los CDs tienen una vida útil de unos 10 años, mientras que los discos duros convencionales aguantan 8 años de media, o algo menos en el caso de los SSD. Y si tienes algún disquete por casa, seguramente ya esté desmagnetizado.

Existen formatos más duraderos como el Blu-ray M-DISC, que según aseguran sus creadores tiene una durabilidad de 1000 años. Aunque si ya resulta difícil encontrar sitios donde revelar carretes de fotos, nadie nos asegura que para entonces siga habiendo lectores de CDs.

Por eso Github ha lanzado la iniciativa Artic Code Vault, que tiene como objetivo preservar el mayor repositorio de código de la humanidad en el Artic World Archive. Esta instalación está enterrada en una montaña del ártico a 250 metros de profundidad, suficiente para evitar los daños provocados por armas nucleares o pulsos EM.

Entrada al Arctic World Archive

El objetivo de este búnker es preservar la información necesaria para reconstruir la humanidad en caso de colapso global. La isla en la que se sitúa es parte de Svalbard, un archipiélago al norte de Noruega que está considerado zona desmilitarizada por 42 países.

La información se almacena en carretes transparentes usando una tinta magnética legible con una lupa, que se espera que aguante entre 500 y 1000 años. Y en caso de apagón, el propio frío de la montaña mantendría la temperatura y humedad en un rango razonable durante décadas.

El 2 de febrero de este año, Github hizo un snapshot de los proyectos públicos para convertirlos a este formato. Un total de 21TB de código que representa algunas de las contribuciones más importantes de los últimos años, desde lenguajes de programación a sistemas operativos completos.

Para saber si tu código también está en este búnker, sólo tienes que irte a tu perfil de Github y buscar el badge Arctic Code Vault Contributor.

1 comentario

Xenobots y la emergencia

Hace cosa de un mes la Universidad de Vermont publicó una investigación sobre los Xenobots, unos "robots vivientes" capaces de desplazarse en una dirección y autorepararse si son dañados.

Estos organismos están compuestos de dos piezas distintas: células del miocardio —el tejido muscular del corazón— que se contraen periódicamente de forma involuntaria y células de la piel con una función puramente estructural. Ambas fueron obtenidas a partir de embriones de ranas.

Un grupo de investigadores informáticos de esta universidad usaron un supercomputador para encontrar las configuraciones capaces de desplazarse distancias más largas en un periodo de 10 segundos. Cada una de las configuraciones era un mosaico tridimensional de estas células, cuyo resultado ya no es una rana.

Figura sobre el ensamblado de Xenobots

De momento es una primera prueba lejos de la manufactura a gran escala, y las configuraciones más efectivas fueron replicadas a mano por un cirujano con pinzas y electrodos en miniatura. Sin embargo, los autores imaginan que conforme avance la bioimpresión podrían tener muchas aplicaciones.

En el futuro se podrían usar criaturas de este tipo para limpiar plástico de los océanos, eliminar contaminación radioactiva o llevar medicamentos a partes específicas del cuerpo. Pero sobre todo es un primer paso hacia entender su comportamiento colectivo.

Aunque han sido entrenados con el objetivo de moverse hacia delante, esto ha permitido modelar su comportamiento individual. Sin embargo, cuando muchas de estas criaturas interaccionan entre sí, emergen comportamientos que no se pueden predecir con facilidad, como dar vueltas en círculo.

Este fenómeno que se conoce como emergencia ha suscritado la inquietud de la comunidad científica. Los comportamientos emergentes, tan difíciles de predecir, son un tema muy recurrente en la ciencia ficción.

MicroBenders autoreplicados (Futurama 6x17)

Existe un escenario de catástrofe global muy popular que se conoce gray goo. En este supuesto, el desarrollo de cierta tecnología capaz de autoreplicarse se descontrola hasta agotar todos los recursos del planeta.

En este caso no tenemos por qué preocuparnos, ya que la forma en que se han diseñado los xenobots los priva de muchas funciones necesarias para mantenerse vivos más de una semana. O al menos eso parece.

No hay comentarios

Diseño paramétrico con OpenSCAD

Cada vez que diseño algo con un editor 3D como Blender, mi programador interior me susurra una y otra vez: "si luego tienes que modificar eso que estás haciendo, ajustarlo todo va a ser un infierno".

Y no le falta razón. Si no estamos diseñando algo puramente artístico, un error al principio del diseño implica mucho esfuerzo de corrección más adelante y muchos clicks de ratón. Es por eso que existen lenguajes de programación especializados en diseño paramétrico como OpenSCAD.

Render 3D de los coronadados

Este set de dados del coronavirus que diseñé hace poco está compuesto de 81,454 vértices, pero su código fuente consiste en apenas 140 líneas. Y si quisiera modificar algún parámetro como el tamaño de las patas o el texto de alguna de sus caras sólo tendría que cambiar el valor de una variable.

Los lenguajes paramétricos no son una novedad y casi todos los editores 3D permiten programar modelos de una u otra forma. Lo que hace a OpenSCAD especial es la simpleza de su sintaxis y la velocidad con la que se puede diseñar cualquier pieza.

Este lenguaje consiste en unos pocos comandos básicos para crear volúmenes y aplicarles operaciones. De hecho, la especificación completa de OpenSCAD cabe en este cheatsheet tan apañado con enlaces a ejemplos de uso de cada función en la wiki oficial.

Como demostración de su potencia, voy a explicar cómo diseñar un modelo sencillo paso a paso. Si quieres ir probando a programarlo al mismo tiempo puedes instalar OpenSCAD, que ocupa unos 20MB. El modelo que he escogido es una pera, que aunque no tiene mucha utilidad es bastante ilustrativa.

Empezaremos por crear una esfera de 20mm de radio. Sería suficiente con llamar a sphere(20), pero es mejor guardar todas las medidas en variables al principio del código para hacer más cómodo el ajuste. Todas las líneas deben acabar en ; o se considerarán parte de la siguiente línea.

r = 20;

sphere(r);
Primer paso: una esfera simple.

Al pulsar F5 se renderizará la esfera que aparece a la derecha. Ahora vamos a crear una segunda esfera más pequeña a la que le aplicaremos una transformación de tipo translate([x, y, z]) para elevarla un poco. Las transformaciones se aplican al siguiente objeto de una misma línea. En este caso, al no haber ;, se aplicará a la esfera de la línea siguiente.

r = 20;

sphere(r);

translate([0, 0, r*1.5])
sphere(r/4);
Segundo paso: Una segunda esfera pequeña más arriba.

Así podemos concatenar varias transformaciones a un mismo objeto que se pueden leer como "traslada a esta posición la esfera con este radio". Además de las transformaciones, también podemos realizar operaciones sobre más de un objeto al mismo tiempo, como es el caso de hull, que aplicaremos para obtener la envolvente de nuestras dos esferas.

r = 20;

hull() {
    sphere(r);

    translate([0, 0, r * 1.5])
    sphere(r / 4);
}
Tercer paso: operación hull para dar forma de pera.

Al usar las llaves hemos aplicado la operación hull a un conjunto de cuerpos, dando como resultado otro objeto al que también podemos aplicar transformaciones. En este caso le aplicaremos la transformación color para darle color de pera. Y ya de paso vamos a modificar la variable especial $fn —fragments number— para aumentar la calidad del renderizado.

$fn = 64;
r = 20;

color("#de3") hull() {
    sphere(r);
    translate([0, 0, r * 1.5])
    sphere(r / 4);
}
Cuarto paso: Más resolución y color.

Esta forma de programar volúmenes va moldeando nuestra forma de pensar en el diseño. Al reducirlo todo a formas básicas e ir añadiendo operaciones y transformaciones poco a poco, vamos construyendo nuestros modelos de forma incremental. El siguiente incremento será usar la operación de difference para restarle una esfera a toda la pera, que haga las veces de mordisco.

$fn = 64;
r = 20;
difference() {
    // color("#de3") hull()...
    color("#cea")
    translate([r * 3/4, 0, r / 2])
    sphere(r * 3/4);
}
Quinto paso: Diferencia con otra esfera para hacer un bocado.

Ya sólo nos falta el rabillo de la pera. Podemos definir unas cuantas variables con las que crear un cilindro, inclinarlo un poco, trasladarlo a la punta de la pera y darle un color marrón. Como no hemos usado cylinder hasta ahora, podemos echar un vistazo a su sintaxis en el cheatsheet.

sa = 10;
sr = 2;
sh = 10;

color("#632")
translate([0, 0, r * 7/4])
rotate([sa, sa, 0])
cylinder(r=sr, h=sh);
Sexto paso: rabillo de la pera.

Y ya podríamos dar esta pera por terminada. Sin embargo, las variables que hemos usado no tienen unos nombres demasiado significativos. OpenSCAD nos permite usar comentarios para darles un nombre y un rango de valores válido sin hacer nuestro código más complejo.

// Model quality (fragments number)
$fn = 64;  // [32,64,128,256]
// Pear radius
r = 20;  // [1:.1:100]
// Stalk angle
sa = 10;  // [0:360]
// Stalk radius
sr = 2;  // [1:.1:10]
// Stalk height
sh = 10;  // [1:20]

Al usar esta sintaxis, el propio software nos generará un panel de ajustes que sólo nos dejará modificar las variables en los rangos definidos. Esto también es útil para decirle a otros usuarios cuáles son los rangos más seguros en los que ajustar un parámetro sin destrozar el modelo.

Parámetros customizables

He subido a la web el código completo del ejemplo. Tiene muchos números mágicos por mantenerlo sencillo, aunque en un diseño real es aconsejable no usar ningún número que no esté definido en una variable, para hacer el modelo lo más paramétrico y fácil de ajustar posible.

Si quieres ver algunos ejemplos reales, puedes echar un vistazo a algunas de mis creaciones, como estos especieros minimalistas o esta base con césped para poner macetas.

2 comentarios

Radios del mundo

Radio Garden es una especie de Google Earth de emisoras de radio con la que puedes explorar los sonidos en directo de otras partes del planeta.

Vista de radio.garden centrada en Europa

Este proyecto empezó en 2016 como una prueba conceptual para un proyecto de investigación holandés con una idea sencilla: tomar los streams online de radios AM/FM de todo el mundo y colocarlos en un globo terráqueo.

Como cualquiera puede añadir una emisora, el mapa ha crecido rápidamente. Aunque sigue habiendo mucha más densidad de emisoras en Europa, se pueden encontrar algunas en los lugares más remotos del planeta.

Es muy visual e invita a explorar los sonidos del mundo de la misma forma que Street View invita a perderse por las calles de otros países. Hay una lista de emisoras favoritas a la que añadir las que vayamos encontrando.

Con el tiempo he ido añadiendo a esta lista algunas radios musicales que suelo escuchar, aunque también hay muchas radios convencionales que pueden estar bien para practicar un idioma.

Si encontráis alguna otra radio interesante, podéis dejarla en los comentarios. Sigo buscando alguna emisora de lofi que reemplace a ese vídeo de YouTube con las mismas 8 horas de música en bucle.

No hay comentarios

🍪 ¿Cookies?

Esta web usa cookies para identificar qué contenido es interesante y escribir más contenido similar. Puedes obtener más información aquí.