Tenemos el siguiente código que quiero volverlo un sintetizador:
{Blip.ar(400, 10, 0.5)}.scope
/*400, 10 y 0.5 son argumentos respectivamente para freq, numero de armonicos y mul, o sea amplitud*/
(
SynthDef("manzana",/*le doy cualquier nombre al sintetizador*/
{|altura,armonicos,volumen|
var suena;
suena =Blip.ar(altura,armonicos,volumen);
Out.ar(1,suena)}
).send(s)/*0 es a la izquierda y 1 a la derecha*/
)
/*defino argumentos, tambien les pongo cualquier nombre, pero preferiblemente que tengan relacion, si todo está bien te debe decir en el postwindow: a SynthDef */
/*Otro ejemplo, puedo poner valores de una vez a los argumentos que funcionarán como valores default*/
(SynthDef("pera",{|altura=300,volumen= 1|
var suena;
suena =Saw.ar(altura,EnvGen.ar(Env.sine(0.5,1)));
Out.ar(0,suena)}).send(s)
)
/*Así lo hago sonar, dándole valores, si quiero verlo en scope llamo al scope aparte con s.scope*/
Synth("manzana",[\altura,1000,\armonicos,5,\volumen,0.1])
s.scope
/*como "pera" tiene valores default lo puedo llamar sin darle nada*/
Synth("pera")
/*Es importante que los argumentos sólo son números, no Ugens o variables*/
Para manejar los sintes es bueno identificarlos con una variable. (Recuerda evitar la s)
a=Synth("manzana",[\altura,1000,\armonicos,5,\volumen,0.1])
/*Ya luego puedes simplemente cambiarle los valroes al sinte usando .set. Deja el anterior sonando y dale a*/
a.set(\altura,560)
puedes usar variables del ambiente (Importante el tilde)
~manzana=Synth("manzana",[\altura,1000,\armonicos,5,\volumen,0.1])
~manzana.set(\altura,2560)
~manzana.free
Puedo usar en vez de frecuencia en Hertz números midi
~manzana=Synth("manzana",[\altura,99.48.midicps,\armonicos,5,\volumen,0.1])
~manzana.set(\altura,69.midicps)
~manzana.free
~pollitos = Synth("pera",[\altura,60.midicps,\vel,2])
~pollitos = Synth("pera",[\altura,62.midicps])
~pollitos = Synth("pera",[\altura,64.midicps])
~pollitos = Synth("pera",[\altura,65.midicps])
~pollitos = Synth("pera",[\altura,67.midicps])
~pollitos.free
/*si incluimos EnvGen y el sonido se acaba ya no podemos usar el .set y les dirá FAILURE /n_set Node not found*/
(SynthDef("cebolla",{|alt,arm1,arm2,tiempo,vol,pos|
var suena,total;
suena =Blip.ar(alt,XLine.kr(arm1,arm2,tiempo),vol);
total =Pan2.ar(suena,SinOsc.kr(pos),vol);
Out.ar(0,total)}).send(s)
)
/*esto sería como una partitura, a medida que vas bajando vas tocando, tambien puedes devolverte*/
z=Synth("cebolla",[\alt,rrand(100,1000),\arm1,10,\arm2,70,\tiempo,15,\vol,0.9,\pos,1])
z.set(\alt,rrand(30,50))
z.set(\pos,5)
z.set(\pos,1)
z.set(\tiempo,25)
z.free
s.scope
/*Tarea 5-partitura*/
Has una partitura usando "cebolla" y da indicaciones de cómo te moverías en ella, devolviéndote o siguiendo todo el tiempo hacia adelante.
/*Tarea 5-Sinte*/
Has un sintetizador (SynthDef) a partir del siguiente código de Anabel.
(
{var linea,todo, moviendose;
linea = XLine.ar(10,70,7);
todo = SinOsc.ar(Saw.ar(10,100,1000),0,Blip.ar(linea,10,0.2),0.5);
moviendose = Pan2.ar(todo, SinOsc.kr(3))}.scope
)
/*y sugiere diferentes valores para los argumentos*/
hola profe esta es mi tarea
ResponderSuprimir(SynthDef("cebolla",{|alt,arm1,arm2,tiempo,vol,pos|
var suena,total;
suena =Blip.ar(alt,XLine.kr(arm1,arm2,tiempo),vol);
total =Pan2.ar(suena,SinOsc.kr(pos),vol);
Out.ar(0,total)}).send(s)
)
z=Synth("cebolla",[\alt,rrand(100,1000),\arm1,10,\arm2,70,\tiempo,15,\vol,0.9,\pos,1])
z.set(\alt,rrand(30,50))
z.set(\pos,45)
z.set(\pos,8)
z.set(\pos,20)
z.set(\pos,55)
z.set(\pos,16)
z.set(\tiempo,25)
z.free
s.scope
hola profe esto fue lo q hice para la tarea
ResponderSuprimir(SynthDef("cebolla",{|alt,arm1,arm2,tiempo,vol,pos|
var suena,total;
suena =Blip.ar(alt,XLine.kr(arm1,arm2,tiempo),vol);
total =Pan2.ar(suena,SinOsc.kr(pos),vol);
Out.ar(0,total)}).send(s)
)
r=Synth("cebolla",[\alt,rrand(90,10),\arm1,5,\arm2,57,\tiempo,15,\vol,0.9,\pos,1])
r.set(\alt,rrand(30,50))
r.set(\pos,2)
r.set(\pos,5.3)
r.set(\pos,9)
r.set(\pos,4)
r.set(\pos,1)
r.set(\tiempo,5)
r.free
s.scope
Profe esta es mi tarea
ResponderSuprimir(SynthDef("cebolla",{|alt,arm1,arm2,tiempo,vol,pos|
var suena,total;
suena =Blip.ar(alt,XLine.kr(arm1,arm2,tiempo),vol);
total =Pan2.ar(suena,SinOsc.kr(pos),vol);
Out.ar(0,total)}).send(s)
)
z=Synth("cebolla",[\alt,rrand(100,1000),\arm1,50,\arm2,90,\tiempo,27,\vol,10,\pos,5])
z.set(\alt,rrand(30,50))
z.set(\pos,30)
z.set(\pos,60)
z.set(\pos,90)
z.set(\pos,120)
z.set(\pos,150)
z.set(\pos,180)
z.set(\pos,210)
z.set(\pos,240)
z.set(\pos,270)
z.set(\tiempo,300)
z.free
s.scope
Tarea nro5
ResponderSuprimir(SynthDef("cebolla",{|alt,arm1,arm2,tiempo,vol,pos|
var suena,total;
suena =Blip.ar(alt,XLine.kr(arm1,arm2,tiempo),vol);
total =Pan2.ar(suena,SinOsc.kr(pos),vol);
Out.ar(0,total)}).send(s)
)
m=Synth("cebolla",[\alt,rrand(50,300),\arm1,5,\arm2,90,\tiempo,10,\vol,0.7,\pos,1])
m.set(\alt,rrand(90,100))
m.set(\pos,1)
m.set(\pos,5)
m.set(\pos,4)
m.set(\pos,1)
m.set(\pos,2)
m.set(\tiempo,20)
m.free
s.scope
(SynthDef("cebolla",{|alt,arm1,arm2,tiempo,vol,pos|
ResponderSuprimirvar suena,total;
suena =Blip.ar(alt,XLine.kr(arm1,arm2,tiempo),vol);
total =Pan2.ar(suena,SinOsc.kr(pos),vol);
Out.ar(0,total)}).send(s)
)
~cebolla=Synth("cebolla",[\alt,50,\arm1,10,\arm2,180,\tiempo,15,\pos,0,\vol,0.5])
~cebolla.set(\alt,100)
~cebolla.set(\alt,60)
~cebolla.set(\alt,110)
~cebolla.set(\alt,70)
~cebolla.set(\alt,120)
~cebolla.set(\alt,80)
~cebolla.set(\alt,130)
~cebolla.set(\alt,90)
Para Fran, cómo vas a tener vol en 10!!! repite el ejercicio
ResponderSuprimir(
ResponderSuprimirSynthDef("Anabel",{|os=10,fr=100,no=1000,ha=10,mu=0.5,pa=3|
var linea,todo,paneo;
linea= XLine.ar(10,70,7);
todo= SinOsc.ar(Saw.ar(os,fr,no),0,Blip.ar(linea,ha,0.2),mu);
paneo= Pan2.ar(todo, SinOsc.kr(pa));
Out.ar(0,paneo)}).send(s)
)
a= Synth("Anabel")
a.set([\os,50,\fr,150,\no,2500,\ha,30,\mu,0.8,\pa,2])
a.set([\os,180,\fr,300,\no,5000,\ha,50,\mu,1,\pa,1])
a.free
Aqui esta la ultima parte de la tarea, perdon que no la postee antes (a decir verdad pense que ya no podia por lo que me dijo antes de salir en laultima clase, no se si cuente pero igual aqui esta).
No toque el Xline porque como hablamos en la ultima clase no hay diferencia si uno cambia el Xline a medida que corre el Synth.
Los valores originales los use como Default del Synth.
hola profe esta es mi tarea de sintetizador usando el codigo de anabel
ResponderSuprimir(
SynthDef("Anabel",{|os=10,fr=100,no=1000,ha=10,mu=0.5,pa=3|
var linea,todo,moviendose;
linea= XLine.ar(10,70,7);
todo= SinOsc.ar(Saw.ar(os,fr,no),0,Blip.ar(linea,ha,0.2),mu);
moviendose= Pan2.ar(todo, SinOsc.kr(pa));
Out.ar(0,moviendose)}).send(s)
)
a= Synth("Anabel")
a.set([\os,45,\fr,200,\no,1500,\ha,45,\mu,0.8,\pa,2])
a.set([\os,80,\fr,150,\no,1000,\ha,60,\mu,1,\pa,1])
a.set([\os,90,\fr,150,\no,2500,\ha,75,\mu,1,\pa,2])
a.free
Hola profe.. esta la parte de b de la tarea 5
ResponderSuprimir(
SynthDef("Anabel",{|os=10,fr=100,no=1000,ha=10,mu=0.5,pa=3|
var linea,todo,moviendose;
linea= XLine.ar(10,70,7);
todo= SinOsc.ar(Saw.ar(os,fr,no),0,Blip.ar(linea,ha,0.2),mu);
moviendose= Pan2.ar(todo, SinOsc.kr(pa));
Out.ar(0,moviendose)}).send(s)
)
a= Synth("Anabel")
a.set([\os,66,\fr,100,\no,1500,\ha,55,\mu,0.8,\pa,1])
a.set([\os,30,\fr,150,\no,3000,\ha,45,\mu,0.9,\pa,1])
a.set([\os,66,\fr,300,\no,2000,\ha,85,\mu,1,\pa,2])
a.set([\os,23,\fr,250,\no,3000,\ha,80,\mu,0.9,\pa,1])
a.set([\os,90,\fr,200,\no,1500,\ha,80,\mu,1,\pa,1])
a.free
ya le cambie el vol profe al otro ejercicio aqui esta
ResponderSuprimir(SynthDef("cebolla",{|alt,arm1,arm2,tiempo,vol,pos|
var suena,total;
suena =Blip.ar(alt,XLine.kr(arm1,arm2,tiempo),vol);
total =Pan2.ar(suena,SinOsc.kr(pos),vol);
Out.ar(0,total)}).send(s)
)
z=Synth("cebolla",[\alt,rrand(100,1000),\arm1,20,\arm2,50,\tiempo,27,\vol,0.9,\pos,1])
z.set(\alt,rrand(30,50))
z.set(\pos,30)
z.set(\pos,60)
z.set(\pos,90)
z.set(\pos,120)
z.set(\pos,150)
z.set(\pos,180)
z.set(\pos,210)
z.set(\pos,240)
z.set(\pos,270)
z.set(\tiempo,300)
z.free
s.scope
Tarea n5
ResponderSuprimir(
{var linea,todo, moviendose;
linea = XLine.ar(10,70,7);
todo = SinOsc.ar(Saw.ar(10,100,1000),0,Blip.ar(linea,10,0.2),0.5);
Pan2.ar(todo, SinOsc.kr(3))}.scope
)
(
SynthDef("anabel",{|lados=1,altura=100,tiempo=3,vol=0.4|
var linea,todo,moviendose;
linea = XLine.ar(10,70,tiempo);
todo = SinOsc.ar(Saw.ar(altura,100,1000),0,Blip.ar(linea,10,0.2),0.5);
moviendose =Pan2.ar(todo,SinOsc.kr(lados));
Out.ar(0,moviendose)}).send(s)
)
x=Synth("anabel")
x.set([\lados,-1,\altura,300,\tiempo,8,\vol,0.9])
x.set([\lados,0,\altura,200,\tiempo,5,\vol,0.7])
x.set([\lados,1,\altura,220,\tiempo,5,\vol,0.6])
x.set([\lados,0,\altura,260,\tiempo,4,\vol,0.8])
x.set([\lados,-1,\altura,100,\tiempo,7,\vol,0.9])
x.free
Tarea. Israel Di Barros.
ResponderSuprimir(SynthDef("cebolla",{|alt,arm1,arm2,tiempo,vol,pos|
var suena,total;
suena =Blip.ar(alt,XLine.kr(arm1,arm2,tiempo),vol);
total =Pan2.ar(suena,SinOsc.kr(pos),vol);
Out.ar(0,total)}).send(s)
)
z=Synth("cebolla",[\alt,rrand(200,1300),\arm1,8,\arm2,68,\tiempo,15,\vol,0.8,\pos,1])
z.set(\alt,rrand(40,60))
z.set(\pos,35)
z.set(\pos,9)
z.set(\pos,25)
z.set(\pos,35)
z.set(\pos,18)
z.set(\tiempo,10)
z.free
s.scope
Este comentario ha sido eliminado por el autor.
ResponderSuprimirIsrael
ResponderSuprimirel programa te dice: ERROR: Variable 'moviendose' not defined y paneo no esta definida. Repitelo.
Este comentario ha sido eliminado por el autor.
ResponderSuprimirMireles, en la parte dePan2.ar(todo,SinOsc.kr(lados))
ResponderSuprimirEl segundo argumento es la posición en la panorámica, entre -1 y 1, pero si metes Sinosc.kr lo mueve continuamente entre esos números (-1 y 1) y lo que vas a meter en "lados" es a la velocidad a la que se mueve en esos rangos.
REPITELO
PARAMETRO DE TIEMPO EN EL CODIGO DE ANABEL,NO ES MODIFICAble HABLAMOS DE ESO MAÑANA EN CLASES.
ResponderSuprimirAlex, repítelo sin que haga click al comenzar.
ResponderSuprimirAndros, repitelo sin que haga click al comenzar y terminar.
ResponderSuprimirIsrael Di Barros
ResponderSuprimir(
SynthDef("Anabel",{|os=10,fr=100,no=1000,ha=10,mu=0.5,pa=3|
var linea,todo,moviendose;
linea= XLine.ar(10,70,7);
todo= SinOsc.ar(Saw.ar(os,fr,no),0,Blip.ar(linea,ha,0.2),mu);
moviendose= Pan2.ar(todo, SinOsc.kr(pa));
Out.ar(0,moviendose)}).send(s)
)
a= Synth("Anabel")
a.set([\os,55,\fr,90,\no,2000,\ha,60,\mu,1,\pa,2])
a.set([\os,40,\fr,120,\no,1500,\ha,50,\mu,0.8,\pa,1])
a.set([\os,50,\fr,280,\no,2500,\ha,75,\mu,1,\pa,1])
a.set([\os,30,\fr,220,\no,3000,\ha,90,\mu,0.6,\pa,1])
a.free
Este comentario ha sido eliminado por el autor.
ResponderSuprimirTarea n5 / Corregida Con nuevos parametros!!
ResponderSuprimir(
{var linea,todo, moviendose;
linea = XLine.ar(10,70,7);
todo = SinOsc.ar(Saw.ar(10,100,1000),0,Blip.ar(linea,10,0.2),0.5);
Pan2.ar(todo, SinOsc.kr(3))}.scope
)
(
SynthDef("anabel",{|lados=1,altura=100,tiempo=5,vol=0.4|
var linea,todo,moviendose;
linea = XLine.ar(10,70,tiempo);
todo = SinOsc.ar(Saw.ar(altura,100,1000),0,Blip.ar(linea,10,0.2),0.5);
moviendose =Pan2.ar(todo,SinOsc.kr(lados));
Out.ar(0,moviendose)}).send(s)
)
x=Synth("anabel")
x.set([\lados,2,\altura,300,\vol,0.9])
x.set([\lados,10,\altura,200,\vol,0.7])
x.set([\lados,3,\altura,220,\vol,0.6])
x.set([\lados,5,\altura,90,\vol,0.8])
x.set([\lados,10,\altura,100,\vol,0.9])
x.free