Creación de partituras algorítmicas

La composición algorítmica con lenguajes de programación suele funcionar como una serie de procesos que inician, evolucionan y terminan sonidos, ya sean sintetizados directamente dentro del código, o secuenciados en un software externo. Un aspecto de la composición algorítmica que suele ser olvidado es la creación de partituras para instrumentos acústicos con métodos algorítmicos. Esto en parte por que la creación de partituras programáticas requiere el uso de sistemas como Lilypond, el cual es un ambiente muy bueno para escribir música, sin embargo no ofrece métodos para la creación de procesos, como lo hacen SuperCollider, PureData, Csound, chuck entre otros.

El día de hoy les compartiré un pequeño tutorial de cómo exportar partituras para instrumentos acústicos directamente de supercollider.

Requerimientos – Descargar los siguientes programas

Una vez que instalemos SuperCollider (SC) y FOMUS, es necesario agregar la librería SuperFomus a las librerías de SC. Para saber en qué carpeta debe colocarse esta librería debemos ejecutar el siguiente comando en SC seleccionandola y presionando Ctrl + enter (en mac CMD + enter)

 Platform.userExtensionDir 

Esto nos imprimirá en la consola el directorio donde debemos copiar la librería, en mi caso me aparece:

C:\Users\Cristian\AppData\Local\SuperCollider\Extensions

En algunas computadoras, la carpeta AppData está oculta, basta con ir a las propiedades de la carpeta y seleccionar la opción de mostrar carpetas ocultas. El siguiente paso es copiar la carpeta descomprimida de superfomus a este directorio, abrir SuperCollider e iniciar el servidor, presionando Ctrl + B (Cmd + B en Mac)

Una vez que tenemos todo instalado, pasemos a lo divertido, la creación de partituras. Comencemos con un ejemplo sencillo, para pasar a secuencias más jugosas.

Un Pbind en supercollider es un objeto que nos sirve para secuenciar eventos (próximamente haremos un tutorial de secuenciación avanzada), donde podemos indicar: notas, duraciones, amplitudes, paneo, entre otros. En el siguiente ejemplo tenemos dos bloques de código, uno donde definimos la secuencia que queremos crear (0 en este caso es do central) y el segundo donde ejecutamos fomus para crear la partitura. Intenta copiar y ejecutar el siguiente código, presionando Ctrl + B en cada bloque.

// Ejemplo 1
(
p=Pbind(
	\note, Pseq([0,4,7,5],inf),
	\dur,0.5
);
p.play;
)

(
f = Fomus(p.asStream,24);
f.xml;
)

Como resultado, en el escritorio te debe aparecer un archivo llamado SCfomus.xml, si lo abres con MuseScore o tu editor favorito, tendrás la partitura para la secuencia que definimos en el Pbind, debes obetener algo como la siguiente imágen:

ejemplo1

En el anterior teníamos un patrón de notas que se repite, si queremos hacer algo aleatorio entonces podemos usar un Pwhite, a continuación muestro su código y partitura resultante


// Ejemplo 2
(
p=Pbind(
 \note, Pwhite(-12,12,inf),
 \dur, Prand([0.5,0.5,0.5,1,2],inf)
);
p.play;
)

(
f = Fomus(p.asStream,24);
f.xml;
)

ejemplo2

Una funcionalidad muy buena de trabajar con SuperCollider +  Fomus es que identifica automáticamente los intervalos microtonales y asigna la notación adecuada. En el siguiente ejemplo una variación del anterior donde a Pwhite se le introducen números flotantes, es decir con decimales, por lo que el resultado serán notas microtonales, con lo que obtenemos la siguiente partitura.


// Ejemplo 3
(
p=Pbind(
 \note, Pwhite(0.0,12.0,inf),
 \dur, 1/3
);
p.play;
)

(
f = Fomus(p.asStream,24);
f.xml;
)

ejemplo3

Para introducir acordes, basta crear nuestro arreglo de Pseq como un arreglo de arreglos, es decir, que cada entrada del mismo sea un conjunto de notas. Fomus automáticamente lo identificará y convertirá a acorde, como vemos a continuación.


// Ejemplo 4
(
p=Pbind(
 \note, Prand([[0,5],[2,4],[8,1], [-2, 5]],inf),
 \dur, Prand([0.25,0.25,0.5,1],inf)
);
p.play;
)
(
f = Fomus(p.asStream,24);
f.xml;
)

ejemplo4

Por último les muestro un ejemplo de cómo generar acordes aleatorios, con un número indefinido de notas y la partitura generada.


// Ejemplo 5
(
p=Pbind(
 \note, Pfunc({({12.rand})!(5.rand);},inf),
 \dur, Prand([0.25,0.25,0.5,1],inf)
);
p.play;
)

(
f = Fomus(p.asStream,24);
f.xml;
)

ejemplo5

===========================================================

Aquí sólo mostramos  una fracción de lo que se puede hacer con SuperCollider + Fomus + MuseScore. Se pueden generar incluso partituras orquestales muy complejas, sólo requiere adentrarse un poco más en la documentación. Lo que queremos mostrarles es una ventanita de lo que es posible hacer y que no es necesario que siempre la música algorítmica sea sintetizada, sino que podemos crear partituras para instrumentos acústicos. Aprovecho para hacer una auto promoción descarada, de una partitura que hice con estas técnicas Estudio algorítmico No.1 para cuarteto de cuerdas.

Espero que este pequeño tutorial les sea de uso e interesante, que tengan buena semana. Saludos y ¡liberemos a Armstrong!

Holomorfo

 

Anuncios

4 pensamientos en “Creación de partituras algorítmicas

  1. A la hora de ver dónde se ubica el superfomus ingreso el código y aparece esto….

    -> nil
    ERROR: Variable ‘plataform’ not defined.
    in file ‘selected text’
    line 1 char 9:

    plataform.userExtensionDir

    ———————————–
    -> nil

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s