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á....
Suscribirse a:
Enviar comentarios (Atom)
SuperCollider
SuperCollider es una plataforma de síntesis de audio y composición algorítmica, originalmente publicado en 1996 por James McCartney, ut...
-
En el articulo anterior , creamos un guion que generaba un arpegio aleatoriamente, que con ciertos cambios va a ser más utilizable. En vez d...
-
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 permit...
No hay comentarios:
Publicar un comentario