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á....


No hay comentarios:

Publicar un comentario

SuperCollider

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