lunes, 14 de agosto de 2017

SuperCollider

    SuperCollider es una plataforma de síntesis de audio y composición algorítmica, originalmente publicado en 1996 por James McCartney, utilizada por músicos, artistas e investigadores que trabajan con sonido. Permite la síntesis de audio en tiempo real y composición algorítmica. Es un software libre y de código abierto disponible para Windows, macOS y Linux.

     SuperCollider cuenta con tres componentes principales: Scsynth, un servidor de audio en tiempo real, forma el núcleo de la plataforma. Cuenta con más de 400 generadores de unidades ("UGens") para análisis, síntesis y procesamiento.

    Su granularidad permite la combinación fluida de muchas técnicas de audio conocidas y desconocidas, moviéndose entre síntesis aditiva y sustractiva, FM, síntesis granular, FFT y modelado físico. Puedes escribir tus propios UGens en C ++, y los usuarios ya han contribuido varios cientos más al repositorio sc3-plugins. Sclang, un lenguaje de programación interpretado.

    Se centra en el sonido, pero no se limita a ningún dominio específico. Sclang controla scsynth a través de Open Sound Control. Puede utilizarlo para la composición algorítmica y la secuenciación, encontrar nuevos métodos de síntesis de sonido, conectando su aplicación a hardware externo incluyendo controladores MIDI, música en red, GUIs de escritura y pantallas visuales, o para sus experimentos de programación diaria.

    Scide es un editor para sclang con un sistema de ayuda integrado.

     Se puede descargar desde :

 http://supercollider.github.io/download.html 

   Manuales y Ayuda en Castellano : 

Taller de Audio
Manual Principiantes, pdf
Supercolliderspanish.blogspot.com.es

lunes, 19 de junio de 2017

Melodía Generada por Ordenador

En artículos anteriores expliqué como se puede generar melodías aleatorias mediante Python, utilizando los módulos alsaseq y alsamidi.

Eran guiones sencillos que generaban arpégios, pero se pueden hacer guiones que realicen trabajos mas exigentes, tales como generar melodía con un cierto criterio. Un ejemplo de esto, es la melodía incluida en el video adjunto.

El guion en este caso generó la música de todos los instrumentos



Arpégio aleatorio con alsaseq ( parte II )

En el articulo anterior, creamos un guion que generaba un arpegio aleatoriamente, que con ciertos cambios va a ser más utilizable. En vez de crear solo un arpegio, van a ser dos, uno que simule un acorde Do mayor y otro que simule un acorde Fa mayor. Por otra parte se añaden unas lineas de código que permiten interactuar con una fuente que va a disparar la ejecución de los arpegios, manteniendo la duración de cada uno de ellos igualmente en cuatro compases de 120 pulsos por minuto.

import alsaseq
import alsamidi
import time
import random

alsaseq.client('linux_jonico',1,1, True)
alsaseq.start()

arpdo=[60,62,64,67,69]
arpfa=[65,67,69,72,74]



def secuencia_arpegio(arp) :
    random.shuffle(arp)
    for i in range (8):
        for ii in range (5):
        nota=alsamidi.noteonevent(0,arp[ii],100)
        alsaseq.output(nota)
        time.sleep(0.20)
        nota=alsamidi.noteoffevent(0,arp[ii],100)
        alsaseq.output(nota)

   
   

while 1 :
   
    notaonoff=alsaseq.input()
    nof=notaonoff[7][1]
    if notaonoff[0]== 6 and nof == 48 :
        secuencia_arpegio(arpdo)
    if notaonoff[0]== 6 and nof == 53 :
        secuencia_arpegio(arpfa)
    if notaonoff[0]== 6 and nof == 59 :
        print " Programa Finalizado "
        break

   


Podemos guardar por ejemplo como arp_do_fa.py y ejecutar de la forma habitual mediante terminal ( python arp_do_fa.py ). Para utilizarlo, se puede usar cualquier secuenciador que permita conexiones midi in y midi out, en este caso yo utilizaré LMMS de la siguiente forma:

1.- Creo una pista de instrumento que va a disparar el arpegio Do o FA durante 4 compases y la conecto al midi in del servidor que hemos creado con el guión.
2.- Creo una pista de instrumento que va a reproducirlo y la conecto al midi out del servidor que hemos creado con el guión.

Silencio la pista que dispara el arpegio, y con el editor midi, creo la partitura, en este caso C3 va a disparar el arpegio Do y F3 va a disparar el arpegio Fa. La silencio porque no queremos que suene, solo que dispare el arpegio. El guión acaba cuando recibe la nota B3 o con control + c.


jueves, 15 de junio de 2017

Arpégio aleatorio con alsaseq ( parte I )

Vamos a crear nuestro primer guion Python con alsaseq, un arpegiador, pero a diferencia de otras aplicaciones que también lo realizan, la secuencia arpegiada va a ser aleatoria. Evidentemente solo utilizaremos aquellas notas que sean de la tonalidad o acorde que queremos recrear, y a diferencia de otros arpegidores, la aleatoriedad nos brinda un plus, que el arpegio al variar, no resulta tan monótono.

Comenzamos importando los módulos necesarios:

import alsaseq
import alsamidi
import time
import random


Los dos primeros alsaseq y alsamidi, son los que vamos a utilizar para recibir y enviar notas a los diferentes clientes, mientras que los otros dos módulos, los utilizaremos para control de tiempo ( time ) y para generar las notas aleatoriamente ( random ).

alsaseq.client('linux_jonico',1,1, True)
alsaseq.start()


Creamos el cliente con un puerto midi de entrada y un puerto midi de salida, y lo ponemos en funcionamiento. En este primer guion no vamos a definir unas conexiones predeterminadas, ya que las estableceremos más adelante, las instrucciones para ello son:

alsaseq.connectfrom ( puerto propio , cliente de entrada , puerto cliente de entrada )
alsaseq.connectto   ( puerto propio, cliente  de salida, puerto cliente de salida )


Pero en este guion no las vamos a utilizar.

Ahora hemos de definir las notas que vamos a utilizar en el arpegio, en este caso voy a utilizar las cinco notas de la escala pentatónica de Do mayor (do,re,mi,sol,la), pero con los valores midi adecuados, en este caso (60,62,64,67,69)

arp=[60,62,64,67,69]

Una vez definido la variable que vamos a utilizar, en este caso la variable arp, definimos las funciones necesarias. Para este ejemplo voy a generar arpégios de las cinco notas, de manera que suene ese arpégio cuatro veces en el mismo compás, cambiando el arpégio en el compás siguiente y/o siguientes. Como referencia del tiempo del compás, en este caso va a ser 120, por lo que cada nota va a sonar 0.20 segundos.


def secuencia_arpegio(arp) :
    random.shuffle(arp)
    for i in range (8):
        for ii in range (5):
        nota=alsamidi.noteonevent(0,arp[ii],100)
        alsaseq.output(nota)
        time.sleep(0.20)
        nota=alsamidi.noteoffevent(0,arp[ii],100)
        alsaseq.output(nota)



Y ahora vamos a ejecutar esto 50 veces, pero dejamos un tiempo para conectar el cliente con el secuenciador


time.sleep(10)

for j in range (50) :

    secuencia_arpegio()


Y ahora el código completo :

import alsaseq
import alsamidi
import time
import random

alsaseq.client('linux_jonico',1,1, True)
alsaseq.start()
#alsaseq.connectfrom( 0 , 14 , 0 ) # entrada 0
#alsaseq.connectto( 1 , 14 , 0 )  # salida 1

arp=[60,62,64,67,69]

def secuencia_arpegio(arp) :
    random.shuffle(arp)
    for i in range (8):
        for ii in range (5):
        nota=alsamidi.noteonevent(0,arp[ii],100)
        alsaseq.output(nota)
        time.sleep(0.20)
        nota=alsamidi.noteoffevent(0,arp[ii],100)
        alsaseq.output(nota)
time.sleep(10)

for j in range (50) :
    secuencia_arpegio()d


Y podemos guardar el guión como archivo de texto con la extensión .py

Puedes oir un fragmento de 10 segundos





Continuará....


Instalando Alsaseq ( Módulo Python )

A lo largo de los siguientes artículos, voy a utilizar el modulo Python Alsaseq.


Alsaseq es un módulo de Python 3 y Python 2 que permite interactuar con los clientes del secuenciador de ALSA. Puede crear un cliente de ALSA, conectarse con otros clientes, enviar y recibir eventos de ALSA de inmediato a una hora programada utilizando una cola de secuenciador. Proporciona un subconjunto de las capacidades del secuenciador de ALSA en un modelo simplificado. Se implementa en lenguaje C y con licencia bajo la licencia Gnu GPL versión 2 o posterior.

Alsaseq permite, por ejemplo, crear un guion que genere aleatoriamente una
secuencia midi, y que la envíe a un secuenciador, por ejemplo LMMS.


También puede recibir datos midi de clientes, procesarlos y enviarlos al mismo u otros clientes. Un ejemplo podría ser recibir una nota del teclado vmpk por el canal 1, y enviarla por el canal 2 a LMMS como nota armonizada ( ej. recibe la nota re y envía las notas re y fa#).

Se puede descargar desde : http://pp.com.mx/python/alsaseq/

Allí igualmente encontraras documentación básica, que iremos ampliando en los artículos siguientes.


SuperCollider

    SuperCollider es una plataforma de síntesis de audio y composición algorítmica, originalmente publicado en 1996 por James McCartney, ut...