Вы находитесь на странице: 1из 12

Msica por computadora

Ernesto Romero y Hernani Villaseor


Centro Multimedia 2012
Sesin 19
Secuenciadores
Un secuenciador es un dispositivo en el que acomodamos eventos sonoros en dos ejes: altura
y tiempo El secuenciador viene de la tecnolo!"a de los primero sinteti#adores$ y toma como
modelo la estructura musical$ entonces la altura est% &asada en tonos y el tiempo en ritmo
musical
'ri!inalmente los secuenciadores (unciona&an a partir de pasos$ o sea escaos donde
acomodar en evento$ la distancia entre cada escao era sim)trica de tal (orma que con 1*
pasos se (orma&a un comp%s de + cuartos su&dividido en + dieciseisavos pr cuarto$ o sea 1*
pasos
,osteriormente con el protocolo M-.-$ esta resoluci/n de 1* pasos se 0i#o m%s compleja$ y la
posi&ilidad de acomodar alturas qued/ determinada por los 1 &its del protocolo$ lo que di/ 121
lu!ares para acomodar notas$ m%s de las que tiene un piano convencional$ as" las notas se
asi!naron a un n2mero del 0 al 123 donde *0 es el do central y cada n2mero 0acia arri&a o
0acia a&ajo representa un semitono
s&oot
4
5ynt0.e(46!ac0o$ 78(req9100$ dur902:$ amp90:$ add91$ (m;req90$ d90$ out9*0$ pan908
var si!$ env<

si!9Mi=4R>,;ar45a?ar4(req@A1$100:B@>;Coise1Dr4A001$0011B$001$1E@5in'scDr4(m;req$0$d$a
ddE$ampE$>;Coise2Dr4001F$:000$12000E$001EE<
si!9>,;ar4si!$1200$amp@2EG5in'scar4(req@A1$1*B$0$amp@A03:$002:BE<
env9EnvHenDr4Envperc4002$durE$doneIction:2E<
'utar4out$,an2ar4si!$ panE@envE<
JEsend4sE<
E<
1
K@
5ynt046!ac0o$ A6dur$ 10BE
@K
4
5ynt0.e(46!ac0oRev$ 78mi=90:$ room903$ !ate918
var si!$ env<
si!9;reeVer&ar4-nar4*0$2E$mi=$roomE<
env9EnvHenDr4Envasr4001$1$+E$!ate$doneIction:2E<
'utar40$si!@envE<
JEsend4sE<
E<
K@
L!ac0oRev95ynt046!ac0oRev$ A6mi=$ 0111:$ 6room$ 01*:+1MB$ addIction: 6addI(terE
L!ac0oRevset46mi=$ 0111:$ 6room$ 01*:+1ME
@K
Lnotas9A0$2$F$2$:$F$3$12$3$F$:$:$F$2B
Lritmo9A0$2$:$3$1B
5e puede 0acer un secuenciador tam&i)n con el m)todo s?itc0 dentro de un Nde( Usamos el
ar!umento i del in(do para crear un contador y lo limitamos a 1 pasos con el modulo O1
Esco!emos despues en que numero de la cuenta 0a&r% un evento y lo encerremos en una
(unci/n
4
Nde(46sec5?itc0$ 7
in(do78i8
s?itc04ias-nte!erO1$ 0$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 1BEJ$
2$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ ::BEJ$
F$ 75ynt046!ac0o$ A6dur$ 01BEJ$
:$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ P:midiratioBEJ
E<
02?ait<
J
JEquantQ40E
E
4
Nde(46sec5?itc0Eplay<
Nde(46sec5?itc0Estop
E
2
,odemos meter varios s?itc0 dentro del mismo Nde( usando di(erentes m/dulos
4
Nde(46sec5?itc0$ 7
in(do78i8
s?itc04ias-nte!erO1$ 0$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 1BEJ$
2$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ ::BEJ$
F$ 75ynt046!ac0o$ A6dur$ 01BEJ$
:$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ P:midiratioBEJ
E<

s?itc04ias-nte!erO1*$ 0$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ 12midiratioBEJ$
+$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ 11midiratioBEJ$
3$ 75ynt046!ac0o$ A6dur$ 01$ 6(rec$ 100@ FmidiratioBEJ$
11$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ 2midiratioBEJ$
12$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ 1midiratioBEJ$
1+$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 2BEJ$
1:$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ 1FmidiratioBEJ
E<

02?ait<
J
JEquantQ40E
E
4
Nde(46sec5?itc0Eplay<
Nde(46sec5?itc0Estop
E
'tro ejemplo con despla#amientos r"tmicos usando m/dulo 3 y 1
4
Nde(46sec5?itc0$ 7
in(do78i8
s?itc04ias-nte!erO1$ 0$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ P:midiratioBEJ$
2$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ P+midiratioBEJ$
F$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ PFmidiratioBEJ$
:$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ 0midiratioBEJ
E<

s?itc04ias-nte!erO3$ 0$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ 12midiratioBEJ$
1$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ 11midiratioBEJ$
+$ 75ynt046!ac0o$ A6dur$ 01$ 6(rec$ 100@ FmidiratioBEJ$
F
*$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ 2midiratioBEJ
E<

02?ait<
J
JEquantQ40E
E
4
Nde(46sec5?itc0Eplay<
Nde(46sec5?itc0Estop
E
'tra t)cnica$ mas poderosa es 0acer arrays con valores espec"(icos para cada evento En el
si!uiente ejemplo tenemos un array cuyos elementos son arrays con pares de valores para
altura y duraci/n
Lsec9AA0$1K1*B$A0$1K1*B$A0$1K1*B$A0$1K1*B$ A12$1K+B$A0$1K1B$A0$1K1B$ A12$1K+BB<
L(und9*0midicps<
4
Nde(46secuenciador$ 7var altura$ dur<
in(do78i8
altura9LsecAiOLsecsi#eBA0Bmidiratio<
dur9LsecAiOLsecsi#eBA1B@2<

5ynt046!ac0o$ A6(req$ altura@L(und$ 6dur$ durBE<

dur?ait<
J
JEquantQ40E<
E<
K@
Nde(46secuenciadorEplay<
Nde(46secuenciadorEstop<
@K
Lsec29AA1$1K2B$A1$1K+B$A3$1K+B$A:$1B$ A3$2B$A1$1K2B$A1$1K+B$A3$1K+B$A:$1B$ A0$2BB<
L(und9*0midicps<
4
Nde(46secuenciador2$ 7var altura$ dur<
+
in(do78i8
altura9Lsec2AiOLsec2si#eBA0Bmidiratio<
dur9Lsec2AiOLsec2si#eBA1B@2<

5ynt046!ac0o$ A6(req$ altura@L(undK+$ 6dur$ dur@2BE<

dur?ait<
J
JEquantQ40E<
E<
K@
Nde(46secuenciador2Eplay<
Nde(46secuenciador2Estop<
@K
K@
4
Nde(46secuenciadorEplay<
Nde(46secuenciador2Eplay<
E
4
Nde(46secuenciadorEstop<
Nde(46secuenciador2Estop<
E
@K
5e pueden a!re!ar tam&i)n valores especiales para eventos en particular El si!uiente array
incluye el strin! R(R en al!unos de sus elementos El Nde( usa una condicionante i( para detectar
si e=iste una modulaci/n
Lsec9AAP10$1K1*B$A0$1K1*B$APM$1K1*B$A0$1K1*B$ A12$1K+$ R(RB$A1$1K1B$A0$1K1B$ A2+$1K+$ R(RBB<
L(und9*0midicps<
4
Nde(46secuenciador$ 7var altura$ dur<
in(do78i8
altura9LsecAiOLsecsi#eBA0Bmidiratio@L(und<
dur9LsecAiOLsecsi#eBA1B@+<
i(4LsecAiOLsecsi#eBA2B99nil$7
5ynt046!ac0o$ A6(req$ altura$ 6dur$ dur@01$ 6amp$ 0+$ 6pan$ 0:BE<
J$
7
5ynt046!ac0o$ A6(req$ altura$ 6dur$ dur$ 6(m;req$ 1$ 6d$ 0:$ 6pan$ 0:BE<
J
:
E<
dur?ait<
J
JEquantQ40E<
E<
K@
Nde(46secuenciadorEplay<
Nde(46secuenciadorEstop<
@K
I0ora veamos como crear arrays independientes de alturas y duraciones para despu)s unirlos
en un array que los a!rupe por pares en arrays m%s pequeos de altura y duraci/n
Lnotas9Irrayrand412$0$12E<
Ldur9Irrayrand412$0$10Enormali#e5um@+<
Lsec9ALnotas$LdurB(lop<
K@
Nde(46secuenciadorEplay<
Nde(46secuenciadorEstop<
@K
I!re!uemos la posi&ilidad de 0acer cam&ios en el tempo mediante una ci(ra metron/mica &mp
4&its por minutoE
L&pm9*0
4
Nde(46secuenciador$ 7var altura$ dur<
in(do78i8
altura9LsecAiOLsecsi#eBA0Bmidiratio@L(und<
dur9LsecAiOLsecsi#eBA1B@44*0@+EKL&pmE<
5ynt046!ac0o$ A6(req$ altura$ 6dur$ dur@2$ 6amp$ 0*:$ 6pan$ P0:BE<
dur?ait<
J
JEquantQ40E<
E<
K@
Nde(46secuenciadorEplay<
Nde(46secuenciadorEstop<
@K
*
S por 2ltimo a!re!uemos otra vo# con otro secuenciador
Lnotas29Irrayrand412$0$12E P12<
Ldur29Irrayrand412$0$10Enormali#e5um@1*<
Lsec29ALnotas2$Ldur2B(lop<
4
Nde(46secuenciador2$ 7var altura$ dur<
in(do78i8
altura9Lsec2AiOLsec2si#eBA0Bmidiratio@L(und<
dur9Lsec2AiOLsec2si#eBA1B@44*0@+EKL&pmE<
5ynt046!ac0o$ A6(req$ alturaK2$ 6dur$ dur@2$ 6amp$ 0*:$ 6pan$ P0:BE<
dur?ait<
J
JEquantQ40E<
E<
K@
Nde(46secuenciador2Eplay<
Nde(46secuenciador2Estop<
@K
K@
4
Nde(46secuenciadorEplay<
Nde(46secuenciador2Eplay<
E
4
Nde(46secuenciadorEstop<
Nde(46secuenciador2Estop<
E
4
Ldur9A1K1*T1$ 1K1T+$ 1K+T2$1K2B(latscram&le<
Lnotas9Irrayrand4Ldursi#e$0$12E<
Lsec9ALnotas$LdurB(lop<
Ldur29A1K1*T1$ 1K1T+$ 1K+T2$1K2B(latscram&le<
Lnotas29Irrayrand4Ldur2si#e$0$12E P12<
Lsec29ALnotas2$Ldur2B(lop<
E
@K
3
Mquina de Estados Finitos
Es un modelo de comportamiento de un sistema donde la seal de salida depende de una
seal de entrada m%s sus estados anteriores
>a m%quina de estados (initos 5e compone de una serie de estados En cada estado se tienen
di(erentes opciones para moverse a otros estados ,or ejemplo$ ima!inemos que tenemos +
estados en los que podemos estar ,artimos de un estado inicial$ sea el 0 .el 0 podr"amos ir al
estado 1 o al 2 5i vamos al estado 1 podemos ir al estado 2 5i vamos al estado 2
encontramos que de a0i podriamos ir de re!reso al estado 0 o ir al estado F 5i estamos en el
estado F ya aca&amos
Empie#as en 0
5i estas en 0 puedes ir a 1 o 2
5i estas en 1 puedes ir a 2
5i estas en 2 puedes ir a 0 o F
5i estas en F ya aca&aste
Hacer el recorrido una ve#
Este es solo un caso 0ipot)tico >a cantidad de estados y las opciones a donde se puede diri!ir
en cada estado son determinadas por quien disea la m%quina
En 5C e=iste el patr/n llamado ,s(m Pattern Finite State Machine$ para llevar aca&o este tipo
de secuencias
Pfsm(lista, repeticiones)
Cada estado consiste de un art"culo y un Irray de "ndices enteros de posi&les estados
pr/=imos El art"culo inicial se esco!e de manera aleatoria del Irray que representa los estados
de entrada$ ese estado que aca&a de ser esco!ido se re!resa y el si!uiente estado es esco!ido
de los posi&les estados pr/=imos Cuando el 2ltimo estado es esco!ido$ a0" termina el (lujo de
estados
,(sm4A
UAestados iniciales posi&lesB$
estadoQ1$ UAestados a los que se puede irB$
estadoQ2$ UAestados a los que se puede irB$
estadoQF$ UAestados a los que se puede irB$



ultimoQestado$ nil
B$
1
cantidadQdeQrepeticiones
E


Ha!amos un ejemplo lineal para empe#ar En este caso solo podemos empe#ar en el estado 0
.el estado 0 solo podemos ir al 1$ del 1 solo al 2 y del 2 solo al F
Lme(9,(sm4
A
UA0B$
0$ UA1B$
1$ UA2B$
2$ UAFB$
F$ nil
B$1Eas5tream


Cecesitamos mandar el mensaje as5tream al ,(sm para poder pedir sus resultados ,ara pedir
los resultados usamos el mensaje ne=t

Lme(ne=t
5i declaramos varias veces Lme(ne=t nos arrojar% los n2meros 0$ 1$ 2 y F .espu)s de esto
nos marcar% error por que el ,(sm 0a terminado de 0acer su recorrido y solo le pedimos que lo
0iciera una ve#

I0ora 0a!amos el caso 0ipot)tico que planteamos al inicio

Esto:
Empie#as en 0
5i estas en 0 puedes ir a 1 o 2
5i estas en 1 puedes ir a 2
5i estas en 2 puedes ir a 0 o F
5i estas en F ya aca&aste
Hacer el recorrido una ve#
5e convierte en esto:
Lme(9,(sm4
A
UA0B$
0$ UA1$ 2B$
1$ UA2B$
M
2$ UA0$ FB$
F$ nil
B$1Eas5tream

>a m%quina de estados (initos es per(ecta para esta&lecer recorridos arm/nicos o&edeciendo
las re!las cadenciales de la armon"a cl%sica Estas re!las en pala&ras son:
Nenemos los si!uientes acordes:
i 9 primer !rado
ii 9 se!undo !rado
iv 9 cuarto !rado
v 9 quinto !rado
vi 9 se=to !rado
>as re!las de conducci/n cadencial son las si!uientes:
Empie#as en i
5i estas en i puedes ir a ii$ iv o a v
5i estas en ii puedes ir a v
5i estas en iv puedes ir a i o a v
5i estas en v puedes ir a i$ vi
5i estas en vi puedes ir a iv
-mplementado en un ,(sm queda as":
Lme(9,(sm4
A
UA0B$
1$ UA1$ 2$ FB$ KK 0
2$ UAFB$KK 1
+$ UA0$ FB$ KK 2
:$ UA0$ +B$ KK F
*$ UA2B$ KK +
B$in(Eas5tream
4
5ynt0.e(46cadencias$ 78(req9UA200$F00$+00$+:0B$ !ate918
var si!$ env<
si!95in'scar4(req$0$1KFEmean<
env9EnvHenDr4Envasr401$1$2E$!ate$ doneIction:2E<
'utar40$si!@envE<
JEsend4sE<
E
10
4
5ynt0.e(46cadencias2$ 78(req9200$ !ate918
var si!$ env<
si!95in'scar4(req$0$1KFE<
env9EnvHenDr4Envasr401$1$2E$!ate$ doneIction:2E<
'utar40$si!@envE<
JEsend4sE<
E
Lsynt095ynt046cadencias$ A6(req$ A0$+$3$12Bmidiratio@200BE
Con un Nde( evaluamos el Lme(ne=t y de(inimos di(erentes (unciones para cada estado en
estas (unciones estamos esta&leciendo las notas de los di(erentes acordes
L?ait91<
4
Nde(46cadencias$ 7
in(do7
s?itc04Lme(ne=tpostln$ 1$ 7Lacorde9A0 P12$+$3$12BJ$
2$ 7Lacorde9A2 P12$:$M$1+BJ$
+$ 7Lacorde9AP3 $:$M$12BJ$
:$ 7Lacorde9AP: P12$:$3$11BJ$
*$ 7Lacorde9APF P12$+$M$12BJ
E<
Lsynt0set46(req$ Lacordemidiratio@200E<
L?ait?ait<
JJEquantQ40E<
E
Nde(46cadenciasEplay
Nde(46cadenciasEstop
Lsynt0set46!ate$ 0E
Lsynt0295ynt046cadencias2$ A6(req$ A0$2$+$:$3$M$11$12Bc0oosemidiratio@200BE
Lsynt02set46(req$ A0$2$+$:$3$M$11$12Bc0oosemidiratio@200E
Lsynt02set46!ate$ 0E
4
Nde(46melodia$ 7
in(do7
11
Lsynt02set46(req$ A0$2$+$:$3$M$11$12Bc0oosemidiratio@200E<
4L?ait@A1K+$1K2$1Bc0ooseE?ait<
JJEquantQ40E<
E
Nde(46melodiaEplay
Nde(46melodiaEstop
Esta o&ra est% sujeta a la licencia Ittri&utionPConCommercialP50areIliDe F0 Unported de
Creative Commons ,ara ver una copia de esta licencia$ visite
0ttp:KKcreativecommonsor!KlicensesK&yPncPsaKF0K o envie una carta a Creative Commons$ +++
Castro 5treet$ 5uite M00$ Mountain Vie?$ Cali(ornia$ M+0+1$ U5I
12

Вам также может понравиться