De regreso después de un año de no postear en este blog, sin embargo 2012 fue un año de mucha actividad para el liveCoding y el desarrollo audio visual en México y que culmino en /*VIVO*/ 2012
rel links:
http://vivo2012.cenart.tv
http://toplap.org/vivo-live-coding-festival-wow/
http://www.pawfal.org/dave/blog/2012/11/mexican-livecoding-style/
http://www.mixfuckedup.net/index.php/coding/82-live-coding-vivo-2012
Este primer Post del 2013 es una muestra en video de 2 patches: sc+fluxus.
//
"crudoritmia" - supercollider + fluxus
//
////supercollider code:
//// fluxus code:
blog que tiene como única cuestión el publicar funciones relacionadas con #SuperCollider, divagaciones de código o códigos de la divagacion, piezas sueltas, noticias o simplemente mantener activo el aprendizaje del lenguaje
martes, 22 de enero de 2013
domingo, 4 de diciembre de 2011
Remix de un Live Coding con ProxySpace
//ejemplo sonoro: track: marchOfIndetermination
:::click:descarga el audio:::
////escrito en Gedit sobre Ubuntu 10.04
/////////////codigo:////////////////
domingo, 10 de julio de 2011
hackpact mx
codigo por Eduardo H Obieta, reBlogeado de http://hackpact.laad.com.mx #hackPactMx jul 01 -- jul 31 2011
/////////////////////////////
Hackpact Day#4 LAAd from Eduardo H Obieta (LAAd)
/////////////////////////////
////escrito en supercollider sobre OSX
//estudiando un poco mas acerca de la comunicación OSC de SuperCollider y Fluxus
//código SuperCollider
/////////////////////////////
Hackpact Day#4 LAAd from Eduardo H Obieta (LAAd)
/////////////////////////////
////escrito en supercollider sobre OSX
//estudiando un poco mas acerca de la comunicación OSC de SuperCollider y Fluxus
//código SuperCollider
s.boot;//código "fluxus"
f=Server("fluxus", NetAddr("127.0.0.1", 4444));
(
(SynthDef(\synth0,{|wmul=0.5, wsfreq=0.1, wsmul=2000, wsadd=2600, lmul=0.035, pan=0|
var son, son1, son2, paneo, freq1, mul1;
son=HPF.ar(WhiteNoise.ar(wmul,0),SinOsc.kr(wsfreq,0,wsmul,wsadd),lmul,0);
son=son+Dust.ar(15);
paneo=Pan2.ar(son,pan);
Out.ar(0,paneo);
}).send(s)
);
(SynthDef(\synth1, {|freq=120, mul=0.5, pan=0|
var env, paneo, son1, dem;
son1=SinOsc.ar(freq,0,mul)+SinOsc.ar(freq*2,0,0.1);
paneo=Pan2.ar(son1,pan);
env=EnvGen.kr(Env.perc(0.005, 0.2, 1, -4),doneAction:2);
Out.ar(0,paneo);
}).send(s)
);
(SynthDef(\synth2, {|freq=40, dur=0.2, mul=0.55, amp=1|
var sig, env;
sig=SinOsc.ar(freq,pi/2,mul)+Saw.ar(freq,0.121)!2;
env=EnvGen.kr(Env.perc(0.05,dur,1,-8),doneAction:2);
Out.ar(0,sig*env*1*amp);
}).send(s)
);
(SynthDef(\synth3, {|freq=80, dur=0.4, amp=1, factor=1.2, ampB=0.3, durB=0.05|
var sig, env;
sig=Pan2.ar(Mix(SinOsc.ar(XLine.kr(freq*factor,freq,dur)*[1,1.1,1.25],pi/2,amp/3)),0);
sig=sig+EnvGen.ar(Env([1,0],[0.05]));
sig=sig+(BrownNoise.ar(ampB)*EnvGen.kr(Env.perc(0.01,durB)));
env=EnvGen.kr(Env.perc(0.01,dur),doneAction:2);
Out.ar(0,sig*env)
}).send(s)
);
(SynthDef(\synth4, {|freq=12000, mul=0.5, pan=0, rel=0.2|
var sig, env;
sig=HPF.ar(WhiteNoise.ar,freq,mul,0);
sig=Pan2.ar(sig,pan);
env=EnvGen.kr(Env.perc(0.01,rel,0.7,-8),doneAction:2);
Out.ar(0,sig*env);
}).send(s);
);
(SynthDef(\synth5, {|freq=120, mul=0.5, pan=0|
var env, paneo, son1;
son1=Saw.ar(freq*0.25, mul, 0)*SinOsc.ar(60.midicps);
paneo=Pan2.ar(son1,pan);
env=EnvGen.kr(Env.perc(0.01, 1, 0.75, -10),doneAction:2);
Out.ar(0,paneo*env);
}).send(s)
);
)
//TDEF
(
(j=Pseq([Pseq([60,64,67,69],8),Pseq([63,68,72,75],8)],inf).asStream;
k=Pseq([0.2,0.2,0.4,0.2,0.4,0.2,0.2,0.2],inf).asStream;
a=Tdef(\fluxus, {
inf.do {
k.next.wait;
Synth(\synth1,[\freq, j.next]);
f.sendMsg("/uno", j.next);
}}));
(l=Pseq([60,65,69,72,60,65,69,75,60,65,69,72],inf).asStream;
m=Prand([0.4,0.2],inf).asStream;
b=Tdef(\fluxus2, {
inf.do {
m.next.wait;
Synth(\synth2, [\freq, l.next]);
f.sendMsg("/dos", l.next);
}}));
(n=Pseq([15,30,45,60],inf).asStream;
o=Pseq([0.1,0.2,0.1,0.4,0.2,0.2,0.2,0.1,0.2,0.4],inf).asStream;
c=Tdef(\fluxus3, {
inf.do {
o.next.wait;
Synth(\synth3,[\freq, 1.5*n.next]);
f.sendMsg("/tre", n.next);
}}));
(p=Pseq([12000,14000,17000],inf).asStream;
q=Pseq([0.1,0.1,0.1,0.1,0.05,0.05,0.1,0.1,0.05],inf).asStream;
d=Tdef(\fluxus4, {
inf.do {
q.next.wait;
Synth(\synth4,[\freq, p.next]);
f.sendMsg("/cua", p.next);
}}));
(
u=Pseq([0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.1,0.5],inf).asStream;
e=Tdef(\fluxus5, {
inf.do {
u.next.wait;
t=([84,89,93,96,101,103,105]).choose;
Synth(\synth5,[\freq, t.midicps]);
f.sendMsg("/cin", t.next);
}}));
)
z=Synth(\synth0).play;
a.play
b.play
c.play
d.play
e.play
a.stop
b.stop
c.stop
d.stop
e.stop
z.free
s.quit;
(clear)
(osc-source "4444")
(define rotx 0)
(define roty 0)
(define rotz 0)
(define esc1 0)
(define esc2 0)
(define (hackpact)
(clear-colour (* 0.25 (flxrnd)))
(with-state
(rotate (vector (+ (* 5 (time)) (* 0.2 esc1)) (* 45 (time)) 0))
(cond ((osc-msg "/tre")
(set! esc1 (osc 0))))
(scale (vector 1 (* 0.5 esc1) 0.01))
(push)
(translate (vector -21 0 -180))
(for ((n (in-range 20)))
(translate (vector 2 0 0))
(draw-cube))
(pop)
)
(with-state
(cond ((osc-msg "/cin")
(set! esc2 (* 0.5 (osc 0)))))
(scale (vector 1 0.2 0.2))
(push)
(hint-none)
(hint-wire)
(rotate (vector -70 0 0))
(translate (vector 0 -40 0))
(for ((n (in-range 60)))
(scale (vector (* 0.025 esc2) 1 0.2))
(translate (vector 0 2 0))
(draw-cube))
(pop))
(with-state
(push)
(hint-wire)
(cond ((osc-msg "/uno")
(set! rotx (osc 0))))
(cond ((osc-msg "/dos")
(set! roty (osc 0))))
(cond ((osc-msg "/tre")
(set! rotz (osc 0))))
(scale (vector 4 (* 0.03 rotx) 5))
(colour (vector (* (* 0.02 rotx) (sin (time)))
(* (* 0.02 roty) (cos (time)))
(* (* 0.02 rotz) (sin (time)))))
(rotate (vector (* 0.2 (* (sin (time)) rotx)) (* roty (* 0.5 (cos (time)))) rotz))
(draw-cube)
(pop)))
(every-frame (hackpact))
lunes, 4 de julio de 2011
hackpact dia #3
codigo reBlogeado de http://hackpact.laad.com.mx #hackPactMx jul 01 -- jul 31 2011
//ejemplo sonoro: track: hp-03jul11
:::click:descarga el audio:::
////escrito en Gedit sobre PureDyne 9.11
/////////////codigo:////////////////
////hackpact mx #03jul11
s.boot;
s.scope;
s.meter;
/////
(//<------evalua todo de una vez*****
TempoClock.default.tempo=58/60;
(///timbres
(
SynthDef(\bass,{|out,gate=1,amp,nota|
var vas,env;
vas=GVerb.ar(RLPF.ar((SinOsc.ar(nota.midicps,mul:0.75)+
Pulse.ar(2+nota.cpsmidi,mul:0.45))*
SinOsc.ar(nota.midicps)*
Pulse.ar(2+nota.cpsmidi),
Line.kr(12000,40,0.4),0.25),
7,1,0.01);
env=EnvGen.ar(Env.asr(0.05,1,0.1),gate,doneAction:2);
Out.ar(out,Pan2.ar(vas*env,[1,-1])*amp);
}).add
);
(
SynthDef(\bombo,{|out,gate=1,amp|
var kick,env;
kick=SinOsc.ar(60)+Saw.ar(Pulse.ar(2,0.3,60,75));
env=EnvGen.ar(Env.perc(0.01,0.3),gate,doneAction:2);
Out.ar(out,Pan2.ar(kick*env,[0.95,-1])*amp);
}).add
);
(
SynthDef(\tarola,{|out,gate=1,amp,deltime|
var tar,env;
tar=BPF.ar(Saw.ar([440,880,1600,3200],mul:0.5)+WhiteNoise.ar(0.85),2040,0.75);
tar=CombC.ar(tar,0.5,deltime,0.5);
env=EnvGen.ar(Env.perc(0.01,0.25),gate,doneAction:2);
Out.ar(out,Pan2.ar(tar*env,[0.75,-0.75])*amp);
}).add
);
(
SynthDef(\hhts,{|out,gate=1,amp|
var hats,env;
hats=RHPF.ar(WhiteNoise.ar(0.25),2000,0.25);
hats=CombC.ar(hats,0.5,0.02,4);
env=EnvGen.ar(Env.perc(0.025,0.05),gate,doneAction:2);
Out.ar(out,Pan2.ar(hats*env,[1,-1])*amp);
}).add
);
);
(////////secuencias
(
Pdef(\bassec,(
Pbind(\instrument, \bass,
\dur, Pxrand([Pseq([0.25,0.25,0.5,0.75,0.25],1),
Pseq([0.5,0.5,0.25,0.75],1),
Pseq([0.75,0.25,1],1),
Pseq([0.75,0.5,0.25,0.5],1)],inf),
\nota, Prand([61,66,70,73,78]-24,inf),
\amp, Pseq([0.25,0],inf),
\out, 0
)
))
);
(
Pdef(\bombsec,(
Pbind(\instrument, \bombo,
\dur, Pxrand([Pseq([0.25,0.25,0.5,0.75,0.25],1),
Pseq([0.5,0.5,0.25,0.75],1),
Pseq([0.75,0.25,1],1),
Pseq([0.75,0.5,0.25,0.5],1)],inf),
\amp, Pseq([0.65,0],inf),
\out, 0
)
))
);
(
Pdef(\tarsec,(
Pbind(\instrument, \tarola,
\dur, Pseq([Pseq([0.5,0.5,0.75,0.25],2),
Pseq([0.5,0.5,0.5,0.125,0.125,0.25],2),
Pseq([0.5,0.5,0.5,0.5],2),
Pseq([0.5,0.5,0.5,0.125,0.125,0.125,0.125],2)],inf),
\amp, Pseq([0,0.75],inf),
\deltime, Pwrand([0,0.02,0.04,0.05,0.075,0.08,0.01],[0.3,0.17,0.19,0.05,0.03,0.01,0.15],inf),
\out, 0
)
))
);
(
Pdef(\hatsec,(
Pbind(\instrument, \hhts,
\dur, Pseq([Pseq([0.125,0.125,0.25,0.25,0.25],4),
Pseq([0.5,0.25,0.25,0.125,0.125,0.25,0.5],4),
Pseq([0.5,0.125,0.5,0.125,0.25,0.25],4),
Pseq([0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125],1)],inf),
\amp, 0.25,
\out, 0
)
))
);
);
);
/////controles
(//todos a la vez
Pdef(\bassec).play;
Pdef(\bombsec).play;
Pdef(\tarsec).play;
Pdef(\hatsec).play;
);
Pdef(\bassec).stop;
Pdef(\bombsec).stop;
Pdef(\tarsec).stop;
Pdef(\hatsec).stop;
///
s.record
s.stopRecording
//ejemplo sonoro: track: hp-03jul11
:::click:descarga el audio:::
////escrito en Gedit sobre PureDyne 9.11
/////////////codigo:////////////////
////hackpact mx #03jul11
s.boot;
s.scope;
s.meter;
/////
(//<------evalua todo de una vez*****
TempoClock.default.tempo=58/60;
(///timbres
(
SynthDef(\bass,{|out,gate=1,amp,nota|
var vas,env;
vas=GVerb.ar(RLPF.ar((SinOsc.ar(nota.midicps,mul:0.75)+
Pulse.ar(2+nota.cpsmidi,mul:0.45))*
SinOsc.ar(nota.midicps)*
Pulse.ar(2+nota.cpsmidi),
Line.kr(12000,40,0.4),0.25),
7,1,0.01);
env=EnvGen.ar(Env.asr(0.05,1,0.1),gate,doneAction:2);
Out.ar(out,Pan2.ar(vas*env,[1,-1])*amp);
}).add
);
(
SynthDef(\bombo,{|out,gate=1,amp|
var kick,env;
kick=SinOsc.ar(60)+Saw.ar(Pulse.ar(2,0.3,60,75));
env=EnvGen.ar(Env.perc(0.01,0.3),gate,doneAction:2);
Out.ar(out,Pan2.ar(kick*env,[0.95,-1])*amp);
}).add
);
(
SynthDef(\tarola,{|out,gate=1,amp,deltime|
var tar,env;
tar=BPF.ar(Saw.ar([440,880,1600,3200],mul:0.5)+WhiteNoise.ar(0.85),2040,0.75);
tar=CombC.ar(tar,0.5,deltime,0.5);
env=EnvGen.ar(Env.perc(0.01,0.25),gate,doneAction:2);
Out.ar(out,Pan2.ar(tar*env,[0.75,-0.75])*amp);
}).add
);
(
SynthDef(\hhts,{|out,gate=1,amp|
var hats,env;
hats=RHPF.ar(WhiteNoise.ar(0.25),2000,0.25);
hats=CombC.ar(hats,0.5,0.02,4);
env=EnvGen.ar(Env.perc(0.025,0.05),gate,doneAction:2);
Out.ar(out,Pan2.ar(hats*env,[1,-1])*amp);
}).add
);
);
(////////secuencias
(
Pdef(\bassec,(
Pbind(\instrument, \bass,
\dur, Pxrand([Pseq([0.25,0.25,0.5,0.75,0.25],1),
Pseq([0.5,0.5,0.25,0.75],1),
Pseq([0.75,0.25,1],1),
Pseq([0.75,0.5,0.25,0.5],1)],inf),
\nota, Prand([61,66,70,73,78]-24,inf),
\amp, Pseq([0.25,0],inf),
\out, 0
)
))
);
(
Pdef(\bombsec,(
Pbind(\instrument, \bombo,
\dur, Pxrand([Pseq([0.25,0.25,0.5,0.75,0.25],1),
Pseq([0.5,0.5,0.25,0.75],1),
Pseq([0.75,0.25,1],1),
Pseq([0.75,0.5,0.25,0.5],1)],inf),
\amp, Pseq([0.65,0],inf),
\out, 0
)
))
);
(
Pdef(\tarsec,(
Pbind(\instrument, \tarola,
\dur, Pseq([Pseq([0.5,0.5,0.75,0.25],2),
Pseq([0.5,0.5,0.5,0.125,0.125,0.25],2),
Pseq([0.5,0.5,0.5,0.5],2),
Pseq([0.5,0.5,0.5,0.125,0.125,0.125,0.125],2)],inf),
\amp, Pseq([0,0.75],inf),
\deltime, Pwrand([0,0.02,0.04,0.05,0.075,0.08,0.01],[0.3,0.17,0.19,0.05,0.03,0.01,0.15],inf),
\out, 0
)
))
);
(
Pdef(\hatsec,(
Pbind(\instrument, \hhts,
\dur, Pseq([Pseq([0.125,0.125,0.25,0.25,0.25],4),
Pseq([0.5,0.25,0.25,0.125,0.125,0.25,0.5],4),
Pseq([0.5,0.125,0.5,0.125,0.25,0.25],4),
Pseq([0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125],1)],inf),
\amp, 0.25,
\out, 0
)
))
);
);
);
/////controles
(//todos a la vez
Pdef(\bassec).play;
Pdef(\bombsec).play;
Pdef(\tarsec).play;
Pdef(\hatsec).play;
);
Pdef(\bassec).stop;
Pdef(\bombsec).stop;
Pdef(\tarsec).stop;
Pdef(\hatsec).stop;
///
s.record
s.stopRecording
martes, 28 de junio de 2011
HardCore kicks
just harshNoise trip!
//ejemplo sonoro: track: HxCkcks
:::click:descarga el audio:::
////escrito en Gedit sobre PureDyne 9.11
/////////////codigo:////////////////
s.boot;
s.quit;
s.scope;
FreqScope.new;
//
p=ProxySpace.push(s);
p.fadeTime=10//0.001
//p.pop
/////
~o.play
///
~bombo={Pan2.ar(Limiter.ar(LFTri.ar(Pulse.ar(Demand.kr(Impulse.kr(4),0,Dseq([1,2,3,4],inf)),0.5,60,65),0,0.9),0.25),[1,-1])};
~bombo1={Pan2.ar(Pulse.ar(Pulse.ar([2,4],Demand.kr(Impulse.kr(1),0,Drand([0.1,0.2,0.3,0.4,0.5],inf)),60,65),Demand.kr(Impulse.kr(1),0,Drand([0.1,0.2,0.3,0.4,0.5],inf)),0.15),[0.9,-0.8])};
~bombo2={Pulse.ar(Pulse.ar([2,4],Demand.kr(Impulse.kr(1),0,Drand([0.1,0.2,0.3,0.4,0.5],inf)),60,65),Demand.kr(Impulse.kr(1),0,Drand([0.1,0.2,0.3,0.4,0.5],inf)),0.15)};
~bombo3={Pan2.ar(Limiter.ar(Pulse.ar(/*Saw*/Pulse.ar(Demand.kr(Impulse.kr(Demand.kr(Impulse.kr(2),0,Drand([0.5,1,1.5,2,3,4,6,8],inf))),0,Dseq([1,2,3,4],inf)),Demand.kr(Impulse.kr(1),0,Drand([0.1,0.2,0.3,0.4,0.5],inf)),60,65),Demand.kr(Impulse.kr(1),0,Drand([0.1,0.2,0.3,0.4,0.5],inf)),0.5),0.15),[0.8,-0.7])};
~filtro={RLPF.ar(~bombo3.ar,Demand.kr(Impulse.kr(2),0,Dxrand([120,400,800,1600,3200,6400,12800],inf)),MouseY.kr(0.01,1),0.5)};//Demand.kr(Impulse.kr(2),0,Prand([50,100,200,400,800,1600,3200],inf))//;
~filtro1={RLPF.ar(~bombo3.ar,MouseX.kr(20,12000),MouseY.kr(0.01,1),0.5)};
~lata={|t_trig=0|EnvGen.ar(Env.perc(0.01,0.5),t_trig)*Pan2.ar(FreeVerb.ar(PinkNoise.ar(0.45),0.65,0.45,0.01),[1,-1])};
(
t=Pwrand([2,4,8],[0.13,0.13,0.73],inf).asStream;
r=Pxrand([1,1.5,2,2.5,3,3.5],inf).asStream;
v=Prand([5],inf).asStream;
Tdef(\tarsec,{
inf.do{
~lata.set(\t_trig,1);
~vlata.set(\room,r.next.value.postln);
~vlata.set(\vtim,v.next.value.postln);
t.next.wait;
}
})
);
~vlata={|room=5,vtim=6|GVerb.ar(~lata.ar,room,vtim,0.15,mul:0.85)};
~sint={|nota=48,t_trig=0,att,dec|EnvGen.ar(Env.perc(att,dec),t_trig)*Pulse.ar(nota.midicps,0.2,0.05)};
(
u=Pwrand([16,6,4,8],[0.05,0.15,0.2,0.6],inf).asStream;
n=Pseq([48,43,51,60],inf).asStream;
Tdef(\sintsec,{
inf.do{
~sint.set(\t_trig,1);
~sint.set(\nota,n.next);
~sint.set(\att,0.9);
~sint.set(\dec,4);
u.next.wait;
}
})
);
~vsint={GVerb.ar(~sint.ar,10,15,0.05,mul: 1.1)};
////////////control
Tdef(\tarsec).play;
Tdef(\sintsec).play;
~o=~vsint//~vlata;
~o=~bombo+~vsint//~vlata;
~o=~vsint+~vlata
~o=~bombo1+~vlata+~vsint;
~o=~bombo2+~vlata+~vsint;
~o=~bombo3//+~vlata+~vsint;
~o=~filtro1+~vlata;
~o=~filtro1+~vsint+~vlata;
~o=~filtro1+~bombo1+~vsint+~vlata//~filtro
~o=~vlata
~o=0;
Tdef(\tarsec).stop
Tdef(\sintsec).stop
//////////
s.record;
s.stopRecording;
s.meter;
//ejemplo sonoro: track: HxCkcks
:::click:descarga el audio:::
////escrito en Gedit sobre PureDyne 9.11
/////////////codigo:////////////////
s.boot;
s.quit;
s.scope;
FreqScope.new;
//
p=ProxySpace.push(s);
p.fadeTime=10//0.001
//p.pop
/////
~o.play
///
~bombo={Pan2.ar(Limiter.ar(LFTri.ar(Pulse.ar(Demand.kr(Impulse.kr(4),0,Dseq([1,2,3,4],inf)),0.5,60,65),0,0.9),0.25),[1,-1])};
~bombo1={Pan2.ar(Pulse.ar(Pulse.ar([2,4],Demand.kr(Impulse.kr(1),0,Drand([0.1,0.2,0.3,0.4,0.5],inf)),60,65),Demand.kr(Impulse.kr(1),0,Drand([0.1,0.2,0.3,0.4,0.5],inf)),0.15),[0.9,-0.8])};
~bombo2={Pulse.ar(Pulse.ar([2,4],Demand.kr(Impulse.kr(1),0,Drand([0.1,0.2,0.3,0.4,0.5],inf)),60,65),Demand.kr(Impulse.kr(1),0,Drand([0.1,0.2,0.3,0.4,0.5],inf)),0.15)};
~bombo3={Pan2.ar(Limiter.ar(Pulse.ar(/*Saw*/Pulse.ar(Demand.kr(Impulse.kr(Demand.kr(Impulse.kr(2),0,Drand([0.5,1,1.5,2,3,4,6,8],inf))),0,Dseq([1,2,3,4],inf)),Demand.kr(Impulse.kr(1),0,Drand([0.1,0.2,0.3,0.4,0.5],inf)),60,65),Demand.kr(Impulse.kr(1),0,Drand([0.1,0.2,0.3,0.4,0.5],inf)),0.5),0.15),[0.8,-0.7])};
~filtro={RLPF.ar(~bombo3.ar,Demand.kr(Impulse.kr(2),0,Dxrand([120,400,800,1600,3200,6400,12800],inf)),MouseY.kr(0.01,1),0.5)};//Demand.kr(Impulse.kr(2),0,Prand([50,100,200,400,800,1600,3200],inf))//;
~filtro1={RLPF.ar(~bombo3.ar,MouseX.kr(20,12000),MouseY.kr(0.01,1),0.5)};
~lata={|t_trig=0|EnvGen.ar(Env.perc(0.01,0.5),t_trig)*Pan2.ar(FreeVerb.ar(PinkNoise.ar(0.45),0.65,0.45,0.01),[1,-1])};
(
t=Pwrand([2,4,8],[0.13,0.13,0.73],inf).asStream;
r=Pxrand([1,1.5,2,2.5,3,3.5],inf).asStream;
v=Prand([5],inf).asStream;
Tdef(\tarsec,{
inf.do{
~lata.set(\t_trig,1);
~vlata.set(\room,r.next.value.postln);
~vlata.set(\vtim,v.next.value.postln);
t.next.wait;
}
})
);
~vlata={|room=5,vtim=6|GVerb.ar(~lata.ar,room,vtim,0.15,mul:0.85)};
~sint={|nota=48,t_trig=0,att,dec|EnvGen.ar(Env.perc(att,dec),t_trig)*Pulse.ar(nota.midicps,0.2,0.05)};
(
u=Pwrand([16,6,4,8],[0.05,0.15,0.2,0.6],inf).asStream;
n=Pseq([48,43,51,60],inf).asStream;
Tdef(\sintsec,{
inf.do{
~sint.set(\t_trig,1);
~sint.set(\nota,n.next);
~sint.set(\att,0.9);
~sint.set(\dec,4);
u.next.wait;
}
})
);
~vsint={GVerb.ar(~sint.ar,10,15,0.05,mul: 1.1)};
////////////control
Tdef(\tarsec).play;
Tdef(\sintsec).play;
~o=~vsint//~vlata;
~o=~bombo+~vsint//~vlata;
~o=~vsint+~vlata
~o=~bombo1+~vlata+~vsint;
~o=~bombo2+~vlata+~vsint;
~o=~bombo3//+~vlata+~vsint;
~o=~filtro1+~vlata;
~o=~filtro1+~vsint+~vlata;
~o=~filtro1+~bombo1+~vsint+~vlata//~filtro
~o=~vlata
~o=0;
Tdef(\tarsec).stop
Tdef(\sintsec).stop
//////////
s.record;
s.stopRecording;
s.meter;
miércoles, 18 de mayo de 2011
melodicBox
Esta vez nos encontramos en un paisaje sonoro con un conjunto de melodías secuenciadas con Pdef y Pbind, pero que parten de un solo SynthDef, esto es; un solo sintetizador corriendo tres instancias a manera de voces (bajo,tenor,mezo) el cual a su vez es ruteado por los canales estéreo 30,32 y 34 hacia otros 3 synthdef los cuales hacen la función de efectos, recibiendo la señal con el objeto In.ar.
El resultado es una una de casi infinitas posibilidades y aun contiene muchos parámetros modulables, la secuencia de las notas se encuentra en la tonalidad de "C" así que es un patch que puede tocar por horas melodías agradables al oído y con variaciones ricas en su timbre, fuerza y velocidad.
//ejemplo sonoro: track: m_melbx
:::click:descarga el audio:::
////escrito en Gedit sobre PureDyne 9.11
/////////////codigo:////////////////
s.boot;
s.quit
s.scope;
/////
TempoClock.default.tempo=72/60//..10/60
///
(
(
SynthDef(\mastfx2,{|gate=1,amp=0.9,tes=1,out=34|
var fx,env;
fx=PitchShift.ar(In.ar(32),0.75,tes);
env=EnvGen.ar(Env.adsr(0.01,0.25,0.98,0.01),gate,doneAction: 2);
Normalizer.ar(Out.ar(out,Pan2.ar(fx*env,[0.95,-0.82])),amp);
}).add;
);
(
SynthDef(\mastfx,{|gate=1,amp=0.9,deltime=0.1,out=0|
var fx,env;
fx=Limiter.ar(In.ar(30),0.98);
fx=CombC.ar(fx,0.5,deltime,0.5);
fx=FreeVerb.ar(fx,0.35,0.9,0.01);
env=EnvGen.ar(Env.adsr(0.01,0.25,0.98,0.01),gate,doneAction: 2);
Normalizer.ar(Out.ar(out,Pan2.ar(fx*env,[0.95,-0.82])),amp);
}).add;
);
(
SynthDef(\rev,{|gate=1,amp=1|
var fx,env;
fx=In.ar(34);
fx=DelayC.ar(fx,0.25,0.15);
fx=FreeVerb.ar(fx,0.65,0.95,0.01,1.5);
env=EnvGen.ar(Env.adsr(0.01,0.25,0.98,0.01),gate,doneAction: 2);
Normalizer.ar(Out.ar(0,Pan2.ar(fx*env,[0.95,-0.82])),amp);
}).add;
);
(//sinte
SynthDef(\timbre,{|gate=1,nota=60,amp=0.95,irdist=0.25,amp2=0.85,panl=1,rel=2,panr= -1,out=0|
var tono,tono2,env;
tono=Mix([LFTri.ar(nota.midicps,0,0.6)*LFPulse.ar(LFNoise0.ar(nota.midicps,0.5,0.26),0.6),
Saw.ar(nota.midicps,0.5,0.6)],Saw.ar(nota.midicps,0,0.75));
tono=InRange.ar(tono,0,irdist);
tono=FreeVerb.ar(tono,0.85,0.9,0.01);
tono=RLPF.ar(tono,Line.kr(120,3350,0.25),0.95);
tono=CombC.ar(tono,1,0.25,2);
tono2=FreeVerb.ar(SinOsc.ar(nota.midicps,0,amp2),0.3,0.85,0.75);
env=EnvGen.ar(Env.perc(0.15,rel),gate,doneAction: 2);
Normalizer.ar(Limiter.ar(Out.ar(out,Pan2.ar(Mix.new([tono,tono2])*env,[panl,panr])*amp),0.05),0.85)
}).add
);
///secuencias voces
(///FX
Pdef(\fxseq,
Pbind(\instrument, \mastfx,
\dur, Pwrand([0.5,0.25,0.75,1],[0.7,0.2,0.075,0.025],inf),
\deltime, Prand([0.01,0.02,0.03,0.04,0.05,0.07,0.09,1],inf),
\amp, Pn([1,1],inf),
\out, Pn([[0,34],[0,34]],inf)
)
)
);
(///FX2
Pdef(\fxseq2,
Pbind(\instrument, \mastfx2,
\dur, Prand([1,0.5,2],inf),
\amp, Pseq([0.95,1],inf),
\tes, Prand([1,1.5,2,2.7,3.3],inf),
\out, Prand([34,0],inf)
)
)
);
(///bajo
Pdef(\secuenciaescala,
Pbind(\instrument, \timbre,
\dur, Pwrand([2,3,0.5,1]*1/*este valor altera la velocidad de la duracion*/,[0.3,0.3,0.05,0.35],inf),
\nota, Prand([60,62,64,65,67,69,71,72]-24,inf),
\amp2, Pseq([0.35,0.46],inf),
\amp, Pseq([0.35],inf),
\rel, Pwrand([1,1.5,2],[0.2,0.3,0.5],inf),
\irdist, Prand([0.25,0.32,0.4],inf),
\out, Pseq([[0,30,34],[34]],inf)//[0,32,34]//[0,32]//30
)
)
);
(//segunda voz
Pdef(\secuenciaescala2,
Pbind(\instrument, \timbre,
\dur, Pwrand([1,2]/2,[0.6,0.4]*1,inf),
\nota, Prand([60,62,64,65,67,69,71,72],inf),
\panl, Prand([-0.2, -0.5, -1],inf),
\panr, Pseq([0.8,0.6,0.2],inf),
\amp2, Pseq([0.5,0.45],inf),
\rel, Pwrand([0.5,0.75,1,1.25],[0.2,0.3,0.45,0.05],inf),
\irdist, Prand([0.23,0.45,0.55],inf),
\out, Prand([[32,34],[30,0]],inf)//[32,34]//30
)
)
);
(////3er voz
Pdef(\secuenciaescala3,
Pbind(\instrument, \timbre,
\dur, Pwrand([0.5,0.25,0.75,1]*2,[0.3,0.4,0.2,0.1],inf),
\nota, Prand([60,64,67,72]+7,inf),
\panl, Pseq([0.1,0.3,0.5,0.7,0.9],inf),
\panr, Pseq([-1, -0.8, -0.6, -0.4, -0.2],inf),
\amp2, Pseq([0.35,0.4],inf),
\rel, Pwrand([3,2.5,2,1],[0.2,0.3,0.35,0.1],inf),
\irdist, Prand([0.35,0.4,0.5,0.6],inf),
\out, Pwrand([[0,34],[0,32,34],[0,30,34],[30,34]],[0.5,0.1,0.2,0.2],inf)//[0,34,32]//[0,30,32]//0
)
)
);
);
//////declarar primero los efectos
Synth(\rev)//fx
Pdef(\fxseq).play;//fx
Pdef(\fxseq2).play;//fx
(
Pdef(\secuenciaescala3).play;
Pdef(\secuenciaescala2).play;
Pdef(\secuenciaescala).play;
);
Pdef(\secuenciaescala3).stop;
Pdef(\secuenciaescala2).stop;
Pdef(\secuenciaescala).stop;
s.record;
s.stopRecording
El resultado es una una de casi infinitas posibilidades y aun contiene muchos parámetros modulables, la secuencia de las notas se encuentra en la tonalidad de "C" así que es un patch que puede tocar por horas melodías agradables al oído y con variaciones ricas en su timbre, fuerza y velocidad.
//ejemplo sonoro: track: m_melbx
:::click:descarga el audio:::
////escrito en Gedit sobre PureDyne 9.11
/////////////codigo:////////////////
s.boot;
s.quit
s.scope;
/////
TempoClock.default.tempo=72/60//..10/60
///
(
(
SynthDef(\mastfx2,{|gate=1,amp=0.9,tes=1,out=34|
var fx,env;
fx=PitchShift.ar(In.ar(32),0.75,tes);
env=EnvGen.ar(Env.adsr(0.01,0.25,0.98,0.01),gate,doneAction: 2);
Normalizer.ar(Out.ar(out,Pan2.ar(fx*env,[0.95,-0.82])),amp);
}).add;
);
(
SynthDef(\mastfx,{|gate=1,amp=0.9,deltime=0.1,out=0|
var fx,env;
fx=Limiter.ar(In.ar(30),0.98);
fx=CombC.ar(fx,0.5,deltime,0.5);
fx=FreeVerb.ar(fx,0.35,0.9,0.01);
env=EnvGen.ar(Env.adsr(0.01,0.25,0.98,0.01),gate,doneAction: 2);
Normalizer.ar(Out.ar(out,Pan2.ar(fx*env,[0.95,-0.82])),amp);
}).add;
);
(
SynthDef(\rev,{|gate=1,amp=1|
var fx,env;
fx=In.ar(34);
fx=DelayC.ar(fx,0.25,0.15);
fx=FreeVerb.ar(fx,0.65,0.95,0.01,1.5);
env=EnvGen.ar(Env.adsr(0.01,0.25,0.98,0.01),gate,doneAction: 2);
Normalizer.ar(Out.ar(0,Pan2.ar(fx*env,[0.95,-0.82])),amp);
}).add;
);
(//sinte
SynthDef(\timbre,{|gate=1,nota=60,amp=0.95,irdist=0.25,amp2=0.85,panl=1,rel=2,panr= -1,out=0|
var tono,tono2,env;
tono=Mix([LFTri.ar(nota.midicps,0,0.6)*LFPulse.ar(LFNoise0.ar(nota.midicps,0.5,0.26),0.6),
Saw.ar(nota.midicps,0.5,0.6)],Saw.ar(nota.midicps,0,0.75));
tono=InRange.ar(tono,0,irdist);
tono=FreeVerb.ar(tono,0.85,0.9,0.01);
tono=RLPF.ar(tono,Line.kr(120,3350,0.25),0.95);
tono=CombC.ar(tono,1,0.25,2);
tono2=FreeVerb.ar(SinOsc.ar(nota.midicps,0,amp2),0.3,0.85,0.75);
env=EnvGen.ar(Env.perc(0.15,rel),gate,doneAction: 2);
Normalizer.ar(Limiter.ar(Out.ar(out,Pan2.ar(Mix.new([tono,tono2])*env,[panl,panr])*amp),0.05),0.85)
}).add
);
///secuencias voces
(///FX
Pdef(\fxseq,
Pbind(\instrument, \mastfx,
\dur, Pwrand([0.5,0.25,0.75,1],[0.7,0.2,0.075,0.025],inf),
\deltime, Prand([0.01,0.02,0.03,0.04,0.05,0.07,0.09,1],inf),
\amp, Pn([1,1],inf),
\out, Pn([[0,34],[0,34]],inf)
)
)
);
(///FX2
Pdef(\fxseq2,
Pbind(\instrument, \mastfx2,
\dur, Prand([1,0.5,2],inf),
\amp, Pseq([0.95,1],inf),
\tes, Prand([1,1.5,2,2.7,3.3],inf),
\out, Prand([34,0],inf)
)
)
);
(///bajo
Pdef(\secuenciaescala,
Pbind(\instrument, \timbre,
\dur, Pwrand([2,3,0.5,1]*1/*este valor altera la velocidad de la duracion*/,[0.3,0.3,0.05,0.35],inf),
\nota, Prand([60,62,64,65,67,69,71,72]-24,inf),
\amp2, Pseq([0.35,0.46],inf),
\amp, Pseq([0.35],inf),
\rel, Pwrand([1,1.5,2],[0.2,0.3,0.5],inf),
\irdist, Prand([0.25,0.32,0.4],inf),
\out, Pseq([[0,30,34],[34]],inf)//[0,32,34]//[0,32]//30
)
)
);
(//segunda voz
Pdef(\secuenciaescala2,
Pbind(\instrument, \timbre,
\dur, Pwrand([1,2]/2,[0.6,0.4]*1,inf),
\nota, Prand([60,62,64,65,67,69,71,72],inf),
\panl, Prand([-0.2, -0.5, -1],inf),
\panr, Pseq([0.8,0.6,0.2],inf),
\amp2, Pseq([0.5,0.45],inf),
\rel, Pwrand([0.5,0.75,1,1.25],[0.2,0.3,0.45,0.05],inf),
\irdist, Prand([0.23,0.45,0.55],inf),
\out, Prand([[32,34],[30,0]],inf)//[32,34]//30
)
)
);
(////3er voz
Pdef(\secuenciaescala3,
Pbind(\instrument, \timbre,
\dur, Pwrand([0.5,0.25,0.75,1]*2,[0.3,0.4,0.2,0.1],inf),
\nota, Prand([60,64,67,72]+7,inf),
\panl, Pseq([0.1,0.3,0.5,0.7,0.9],inf),
\panr, Pseq([-1, -0.8, -0.6, -0.4, -0.2],inf),
\amp2, Pseq([0.35,0.4],inf),
\rel, Pwrand([3,2.5,2,1],[0.2,0.3,0.35,0.1],inf),
\irdist, Prand([0.35,0.4,0.5,0.6],inf),
\out, Pwrand([[0,34],[0,32,34],[0,30,34],[30,34]],[0.5,0.1,0.2,0.2],inf)//[0,34,32]//[0,30,32]//0
)
)
);
);
//////declarar primero los efectos
Synth(\rev)//fx
Pdef(\fxseq).play;//fx
Pdef(\fxseq2).play;//fx
(
Pdef(\secuenciaescala3).play;
Pdef(\secuenciaescala2).play;
Pdef(\secuenciaescala).play;
);
Pdef(\secuenciaescala3).stop;
Pdef(\secuenciaescala2).stop;
Pdef(\secuenciaescala).stop;
s.record;
s.stopRecording
martes, 12 de abril de 2011
GUI SCWindow o JSCWindow
Esta vez Jorge Ramirez nos comparte un pequeño patch con un código que bien vale la pena leer mas de dos veces. Incorporando un GUI con 2 botones como trigger de cada SynthDef y síntesis granular dinámica e impredecible con un buen juego de paneos aleatorios controlados a través del objeto Routine el cual contiene también los SCWindow y SCButton. Ya que los GUI en SuperCollider para plataformas Linux y Windows son basados en JAVA, no hay que olvidar incorporar una "J" al script ( SCWindow - JSCWindow) para que este funcione.
El ejemplo sonoro nos muestra ambientes eléctricos, pulsos erráticos y movimientos sutiles, en fin, sintesis de audio! :)
//ejemplo sonoro: track: yeah-nah
:::click:descarga el audio:::
http://www.interela.com/
////escrito sobre SuperCollider en OSX
/////////////codigo:////////////////
(
SynthDef("sino2", { |freq, pan|
var signal, env;
signal = RHPF.ar(FSinOsc.ar(LFSaw.ar(freq,0, 1,10.2)*freq,0,0.1 ).distort*LFPulse.ar(SinOsc.kr(3),0,rrand(0.3,0.1),0.2), 0,0.125,0.75);
signal= DelayC.ar(signal*0.5, 0.068, 0.068, 0, signal);
signal= Pan2.ar(signal, pan);
env= EnvGen.kr(Env.perc(0.06, 0.3, 0.4, 15),doneAction: 2);
Out.ar(0,signal*env)}).send(s)
);
(
var rutina, ventana, boton, synth;
rutina = Routine({
loop({ s.sendMsg("/s_new","sino2", -1,0,1,
\freq, exprand(3100.0, 4400.0), \pan, 1.0.rand2);
rrand(0.25, 0.125).wait})});
ventana = SCWindow("sino", Rect(100, 100, 200, 200));
boton= SCButton(ventana, Rect(10, 10, 200,200));
boton.states=[["nah!", Color.white, Color(1.0, 0.6)], ["yea!", Color.yellow]];
boton.font= Font(\Arial, 100);
boton.action= {|estado| if(estado.value==1,{rutina.reset.play}, {rutina.stop})
};
ventana.front)
(
SynthDef("sino", { |freq, pan|
var signal, env;
signal = RHPF.ar(FSinOsc.ar(LFSaw.ar(freq,0, 1,10.2)*freq,0,0.06 ).distort(LFNoise2.kr(1))*LFPulse.ar(SinOsc.kr(30),0,rrand(0.3,0.1),Line.kr(0.91, 0.375,0.1)), 0,0.125,0.a25);
signal= DelayC.ar(signal*0.5, 0.068, 0.068, 0, signal);
signal= Pan2.ar(signal, pan)1
env= EnvGen.kr(Env.perc(0.16, 0.6, 0.54, 15),
doneAction: 2);
Out.ar(0,signal*env)}).send(s)
);
(
var rutina, ventana, boton, synth;
rutina = Routine({
loop({ s.sendMsg("/s_new","sino", -1,0,1,
\freq, exprand(4100.0, 5400.0), \pan, 1.0.rand2);
rrand(0.15, 0.25).wait})});
ventana = SCWindow("sino", Rect(100, 100, 200, 200));
boton= SCButton(ventana, Rect(10, 10, 200,200));
boton.states=[["nah!", Color.white, Color(1.0, 0.6)], ["yea!", Color.yellow]];
boton.font= Font(\Arial, 100);
boton.action= {|estado| if(estado.value==1,{rutina.reset.play}, {rutina.stop})
};
ventana.front)
//////////
s.record
s.stopRecording
El ejemplo sonoro nos muestra ambientes eléctricos, pulsos erráticos y movimientos sutiles, en fin, sintesis de audio! :)
:::click:descarga el audio:::
![]() | |
| GUI screenshot |
////escrito sobre SuperCollider en OSX
/////////////codigo:////////////////
(
SynthDef("sino2", { |freq, pan|
var signal, env;
signal = RHPF.ar(FSinOsc.ar(LFSaw.ar(freq,0, 1,10.2)*freq,0,0.1 ).distort*LFPulse.ar(SinOsc.kr(3),0,rrand(0.3,0.1),0.2), 0,0.125,0.75);
signal= DelayC.ar(signal*0.5, 0.068, 0.068, 0, signal);
signal= Pan2.ar(signal, pan);
env= EnvGen.kr(Env.perc(0.06, 0.3, 0.4, 15),doneAction: 2);
Out.ar(0,signal*env)}).send(s)
);
(
var rutina, ventana, boton, synth;
rutina = Routine({
loop({ s.sendMsg("/s_new","sino2", -1,0,1,
\freq, exprand(3100.0, 4400.0), \pan, 1.0.rand2);
rrand(0.25, 0.125).wait})});
ventana = SCWindow("sino", Rect(100, 100, 200, 200));
boton= SCButton(ventana, Rect(10, 10, 200,200));
boton.states=[["nah!", Color.white, Color(1.0, 0.6)], ["yea!", Color.yellow]];
boton.font= Font(\Arial, 100);
boton.action= {|estado| if(estado.value==1,{rutina.reset.play}, {rutina.stop})
};
ventana.front)
(
SynthDef("sino", { |freq, pan|
var signal, env;
signal = RHPF.ar(FSinOsc.ar(LFSaw.ar(freq,0, 1,10.2)*freq,0,0.06 ).distort(LFNoise2.kr(1))*LFPulse.ar(SinOsc.kr(30),0,rrand(0.3,0.1),Line.kr(0.91, 0.375,0.1)), 0,0.125,0.a25);
signal= DelayC.ar(signal*0.5, 0.068, 0.068, 0, signal);
signal= Pan2.ar(signal, pan)1
env= EnvGen.kr(Env.perc(0.16, 0.6, 0.54, 15),
doneAction: 2);
Out.ar(0,signal*env)}).send(s)
);
(
var rutina, ventana, boton, synth;
rutina = Routine({
loop({ s.sendMsg("/s_new","sino", -1,0,1,
\freq, exprand(4100.0, 5400.0), \pan, 1.0.rand2);
rrand(0.15, 0.25).wait})});
ventana = SCWindow("sino", Rect(100, 100, 200, 200));
boton= SCButton(ventana, Rect(10, 10, 200,200));
boton.states=[["nah!", Color.white, Color(1.0, 0.6)], ["yea!", Color.yellow]];
boton.font= Font(\Arial, 100);
boton.action= {|estado| if(estado.value==1,{rutina.reset.play}, {rutina.stop})
};
ventana.front)
//////////
s.record
s.stopRecording
lunes, 28 de marzo de 2011
hardwareBufferSize - latencia
Este video fue posteado en diciembre del 2010, esta hecho con SynthDef, Pdef y Tdef, principales elementos para la secuencia de patrones, e incorporando una improvisación de bajo a través de AudioIn.ar. dado a que no todas las interfaces de audio son iguales, se utilizo un serverOptions para optimizar la latencia de entrada con: s.options.hardwareBufferSize, la formula para la latencia es la siguiente:
( I/O periods * frames) / sample_rate = latency(ms);
//periods: periodos de entrada y salida;
////frames: numero de muestreos de captura por delante de la senal;
/////sample_rate: frecuencia de muestreo utilizada
En este caso, quedando de la sig manera:
(2 * 578) = 1156 / 44100hz = 2.6ms //una latencia manejable para tocar "casi" en tiempo real.
nota:
*declara elserverOptions antes de prender el servidor
*si bajas demasiado la latencia y tu tarjeta no la puede procesar, escucharas clipear el audio de entrada
*aprende sobre LATENCIA
/////////
trippin' supercollider + bass improvisation dec2010
////escrito sobre SuperCollider para Windows
///////////////////////codigo://////////////////////////////
s.options.hardwareBufferSize=1156 //declara antes de prender el servidor
s.boot
s.quit
s.scope
TempoClock.default.tempo=75/60 // 85/60
(
(
SynthDef(\bass,{|gate=1,out=0,vol=1,mix=0.5,room=0.9,damp=0.01|
var in,env;
in=AudioIn.ar(2);
in=FreeVerb.ar(in,mix,room,damp,1.5);
env=EnvGen.ar(Env.asr(0.001,0.98,0.001),gate,doneAction:2);
Out.ar(out,Pan2.ar(in*env,[0.9,-1])*vol)
}).memStore
);
(
SynthDef(\masterfx,{|gate=1,freq=1,ancho=0.1,out=0,vol=1,mix=0.5,room=0.9,damp=0.01,delt=0.01,delr=0.4|
var sig,env;
sig=In.ar(30);
sig=FreeVerb.ar(sig,mix,room,damp,1.5);
sig=CombC.ar(sig,0.1,delt,delr);
env=EnvGen.ar(Env.asr(0.01,0.98,0.01),gate,doneAction: 2);
Out.ar(out,Pan2.ar(sig*env,[1,-1])*vol)
}).memStore
);
(
SynthDef(\masterfx2,{|gate=1,freq=1,ancho=0.1,out=0,vol=1,mix=0.7,room=0.9,damp=0.01,delt=0.1,delr=1|
var sig,env;
sig=In.ar(32);
sig=FreeVerb.ar(sig,mix,room,damp,1);
sig=CombC.ar(sig,0.25,delt,delr);
env=EnvGen.ar(Env.asr(0.01,0.98,0.01),gate,doneAction: 2);
Out.ar(out,Pan2.ar(sig*env,[1,-0.85])*vol)
}).memStore
);
(
SynthDef(\ambient,{|gate=1,vol=1,fase=0.25,freq=85,pizq= -1,pder=0.9,out=32|
var sig,env;
sig=Saw.ar(freq,fase,1)*Pulse.ar(freq/2,0.5,0.5);
sig=FreeVerb.ar(sig,1,1,0.05);
env=EnvGen.ar(Env.asr(0.8,0.1,0.1),gate,doneAction: 2);
Out.ar(out,Pan2.ar(sig*env,[pizq,pder])*vol)
}).memStore
);
(
SynthDef(\bombo,{|gate=1,freq=0.8,ancho=0.1,out=30,vol=1|
var sig,env;
sig=SinOsc.ar(Pulse.ar(freq,ancho,80,115),0.2,0.7)*SinOsc.ar(Pulse.ar(1.2,ancho,80,115),0.1,0.7);
env=EnvGen.ar(Env.perc(0.01,0.25),gate,doneAction: 2);
Out.ar(out,Pan2.ar(sig*env,[1,-1])*vol)
}).memStore
);
(
SynthDef(\tarola,{|gate=1,freq=2,fase=0,ancho=0.5,out=30,vol=1|
var sig,env;
sig=WhiteNoise.ar(0.4)*Pulse.ar(SinOsc.ar(freq,fase,200,6000),ancho,1);
env=EnvGen.ar(Env.perc(0.01,0.1),gate,doneAction: 2);
Out.ar(out,Pan2.ar(sig*env,[1,-1])*vol)
}).memStore
);
(
Pdef(\fx,(
Pbind(\instrument, \masterfx,
\dur, Pseq([0.5,0.5,1,0.75,0.25,1],inf),
\room, Prand([0.1,0.3,0.7,1],inf),
\damp, Prand([0.01,1],inf),
\delt, Prand([0.01,0.02,0.03,0.05],inf),
\delr, Prand([0.1,0.3,0.5,0.7],inf)
)
))
);
(
Pdef(\kntras,(
Pbind(\instrument, \tarola,
\dur, Pseq([0.25,0.25,0.25,0.25,0.25],inf),
\freq, Prand([1,2,4,8]*1200,inf),
\vol, Pseq([0.5,0.2,0.35,0.1],inf),
\out, 30
)
))
);
(
Tdef(\bullyann,{
inf.do{
var arr;
arr=[0,1,2,3,4,5,6,7,8,9,10].choose.postln;
if(arr >= 5,{Synth(\bombo).postln},{Synth(\tarola).postln});
0.25.wait;
}
})
);
(
Pdef(\amb,(
Pbind(\instrument, \ambient,
\dur, Pseq([2,1,1.5,0.5,1,1.75,0.25],inf),
\freq, Prand([110,220,440,880,1600,13200],inf),
\pizq, Prand([ -0.1, -0.4, -0.75, -1],inf),
\pder, Prand([0.1,0.4,0.75,1],inf),
\fase, Prand([0,0.3,0.5,0.7],inf),
\out, [30,32],
\vol, 0.5
)
))
);
(
Pdef(\ambfx,(
Pbind(\instrument, \masterfx2,
\dur, 100000,
\room, 1,
\mix, 0.5,
\damp, 0.01
)
))
);
(
Pdef(\beiss,(
Pbind(\instrument, \bass,
\dur, Pseq([0.5,0.5,0.5,0.5],inf),
\room, Prand([0.1,0.3,0.7,1],inf),
\damp, Prand([0.01,0.3,0.6,1],inf),
\mix, 0.5,
\out, 30//[30,32]
)
))
);
)
(
Pdef(\ambfx).play;
Pdef(\fx).play;
Pdef(\kntras).play;
Tdef(\bullyann).play;
Pdef(\amb).play;
Pdef(\beiss).play
)
Pdef(\ambfx).stop;
Pdef(\fx).stop;
Pdef(\amb).stop;
Pdef(\kntras).stop;
Tdef(\bullyann).stop;
Pdef(\beiss).stop
//////////////////////////////////
( I/O periods * frames) / sample_rate = latency(ms);
//periods: periodos de entrada y salida;
////frames: numero de muestreos de captura por delante de la senal;
/////sample_rate: frecuencia de muestreo utilizada
En este caso, quedando de la sig manera:
(2 * 578) = 1156 / 44100hz = 2.6ms //una latencia manejable para tocar "casi" en tiempo real.
nota:
*declara el
*si bajas demasiado la latencia y tu tarjeta no la puede procesar, escucharas clipear el audio de entrada
*aprende sobre LATENCIA
/////////
trippin' supercollider + bass improvisation dec2010
////escrito sobre SuperCollider para Windows
///////////////////////codigo://////////////////////////////
s.options.hardwareBufferSize=1156 //declara antes de prender el servidor
s.boot
s.quit
s.scope
TempoClock.default.tempo=75/60 // 85/60
(
(
SynthDef(\bass,{|gate=1,out=0,vol=1,mix=0.5,room=0.9,damp=0.01|
var in,env;
in=AudioIn.ar(2);
in=FreeVerb.ar(in,mix,room,damp,1.5);
env=EnvGen.ar(Env.asr(0.001,0.98,0.001),gate,doneAction:2);
Out.ar(out,Pan2.ar(in*env,[0.9,-1])*vol)
}).memStore
);
(
SynthDef(\masterfx,{|gate=1,freq=1,ancho=0.1,out=0,vol=1,mix=0.5,room=0.9,damp=0.01,delt=0.01,delr=0.4|
var sig,env;
sig=In.ar(30);
sig=FreeVerb.ar(sig,mix,room,damp,1.5);
sig=CombC.ar(sig,0.1,delt,delr);
env=EnvGen.ar(Env.asr(0.01,0.98,0.01),gate,doneAction: 2);
Out.ar(out,Pan2.ar(sig*env,[1,-1])*vol)
}).memStore
);
(
SynthDef(\masterfx2,{|gate=1,freq=1,ancho=0.1,out=0,vol=1,mix=0.7,room=0.9,damp=0.01,delt=0.1,delr=1|
var sig,env;
sig=In.ar(32);
sig=FreeVerb.ar(sig,mix,room,damp,1);
sig=CombC.ar(sig,0.25,delt,delr);
env=EnvGen.ar(Env.asr(0.01,0.98,0.01),gate,doneAction: 2);
Out.ar(out,Pan2.ar(sig*env,[1,-0.85])*vol)
}).memStore
);
(
SynthDef(\ambient,{|gate=1,vol=1,fase=0.25,freq=85,pizq= -1,pder=0.9,out=32|
var sig,env;
sig=Saw.ar(freq,fase,1)*Pulse.ar(freq/2,0.5,0.5);
sig=FreeVerb.ar(sig,1,1,0.05);
env=EnvGen.ar(Env.asr(0.8,0.1,0.1),gate,doneAction: 2);
Out.ar(out,Pan2.ar(sig*env,[pizq,pder])*vol)
}).memStore
);
(
SynthDef(\bombo,{|gate=1,freq=0.8,ancho=0.1,out=30,vol=1|
var sig,env;
sig=SinOsc.ar(Pulse.ar(freq,ancho,80,115),0.2,0.7)*SinOsc.ar(Pulse.ar(1.2,ancho,80,115),0.1,0.7);
env=EnvGen.ar(Env.perc(0.01,0.25),gate,doneAction: 2);
Out.ar(out,Pan2.ar(sig*env,[1,-1])*vol)
}).memStore
);
(
SynthDef(\tarola,{|gate=1,freq=2,fase=0,ancho=0.5,out=30,vol=1|
var sig,env;
sig=WhiteNoise.ar(0.4)*Pulse.ar(SinOsc.ar(freq,fase,200,6000),ancho,1);
env=EnvGen.ar(Env.perc(0.01,0.1),gate,doneAction: 2);
Out.ar(out,Pan2.ar(sig*env,[1,-1])*vol)
}).memStore
);
(
Pdef(\fx,(
Pbind(\instrument, \masterfx,
\dur, Pseq([0.5,0.5,1,0.75,0.25,1],inf),
\room, Prand([0.1,0.3,0.7,1],inf),
\damp, Prand([0.01,1],inf),
\delt, Prand([0.01,0.02,0.03,0.05],inf),
\delr, Prand([0.1,0.3,0.5,0.7],inf)
)
))
);
(
Pdef(\kntras,(
Pbind(\instrument, \tarola,
\dur, Pseq([0.25,0.25,0.25,0.25,0.25],inf),
\freq, Prand([1,2,4,8]*1200,inf),
\vol, Pseq([0.5,0.2,0.35,0.1],inf),
\out, 30
)
))
);
(
Tdef(\bullyann,{
inf.do{
var arr;
arr=[0,1,2,3,4,5,6,7,8,9,10].choose.postln;
if(arr >= 5,{Synth(\bombo).postln},{Synth(\tarola).postln});
0.25.wait;
}
})
);
(
Pdef(\amb,(
Pbind(\instrument, \ambient,
\dur, Pseq([2,1,1.5,0.5,1,1.75,0.25],inf),
\freq, Prand([110,220,440,880,1600,13200],inf),
\pizq, Prand([ -0.1, -0.4, -0.75, -1],inf),
\pder, Prand([0.1,0.4,0.75,1],inf),
\fase, Prand([0,0.3,0.5,0.7],inf),
\out, [30,32],
\vol, 0.5
)
))
);
(
Pdef(\ambfx,(
Pbind(\instrument, \masterfx2,
\dur, 100000,
\room, 1,
\mix, 0.5,
\damp, 0.01
)
))
);
(
Pdef(\beiss,(
Pbind(\instrument, \bass,
\dur, Pseq([0.5,0.5,0.5,0.5],inf),
\room, Prand([0.1,0.3,0.7,1],inf),
\damp, Prand([0.01,0.3,0.6,1],inf),
\mix, 0.5,
\out, 30//[30,32]
)
))
);
)
(
Pdef(\ambfx).play;
Pdef(\fx).play;
Pdef(\kntras).play;
Tdef(\bullyann).play;
Pdef(\amb).play;
Pdef(\beiss).play
)
Pdef(\ambfx).stop;
Pdef(\fx).stop;
Pdef(\amb).stop;
Pdef(\kntras).stop;
Tdef(\bullyann).stop;
Pdef(\beiss).stop
//////////////////////////////////
domingo, 27 de febrero de 2011
mas y mas ProxySpace...
//ejemplo sonoro: track: iiinsnsbl3
:::click:descarga el audio:::
////escrito sobre emacs, pure:dyne 9.11
/////////////////////////////codigo://///////////////////////////
s.boot
s.quit
s.scope
////
p=ProxySpace.push(s);
p.fadeTime=1;
//////
s.record
///
TempoClock.tempo=115/60 //10/60//20/60//75/60;
/////
~o.play;
~uno={|ifrec=2|Normalizer.ar(RLPF.ar(Resonz.ar(LFTri.ar(Pulse.ar(Demand.kr(Impulse.kr(ifrec),0,Drand([1,2,4,8],inf)),0.5,80,90),0,0.5)*LFNoise0.ar(10000,0.1),Line.kr(220,10000,0.5),0.25),Demand.kr(Impulse.kr(4),0,Drand([800,1600,3200,6400,12000],inf)),0.25),0.05)};
~dos={|lft= -1,rght=1,ifrec=2,rfrec=2000|Normalizer.ar(Pan2.ar(BPF.ar(LFTri.ar(Pulse.ar(ifrec,0.5,6,4),0,0.25)*BrownNoise.ar(0.15),Demand.kr(Impulse.kr(ifrec),0,Drand([220,440,880,660],inf)),0.01),[lft,rght]),0.05)};
~tres={|ifrec=4,t_trig=0|EnvGen.ar(Env.perc(0.01,0.08),t_trig)*Normalizer.ar(Pulse.ar(Pulse.ar(ifrec,0.5,60,85),0.1,0.45)+SinOsc.ar(Pulse.ar(ifrec,0.5,60,85),0,0.75),0.95)};
~del={|dtim=0.05|CombC.ar(Mix(~tres.ar,~uno.ar,~dos.ar),0.25,dtim,0.8,0.55)};
~verb={FreeVerb.ar(~dos.ar,0.95,0.95,0.1,0.85)};
~pit={|prate=2,ifrec=1,rfreq=600|Compander.ar(Normalizer.ar(Resonz.ar(PitchShift.ar(Mix([~del.ar]),0.5,prate,0.95,0.025,0.5),rfreq,0.35),0.55,0.25),0,0.7,1,1,0.35,0.15)};
(
Tdef(\secs,{
a=Prand([1,1.3,1.7,2,2.2,2.5,2.9,3.2,3.4,3.7,4],inf).asStream;
b=Prand([0.5,2,1,4],inf).asStream;//~uno
c=Prand([0.5,1,2,4],inf).asStream;//~dos
d=Pwrand([0.25,0.5,0.75,1],[0.2,0.3,0.15,0.05],inf).asStream; //~tres
e=Prand([100,200,400,800,1600],inf).asStream;
f=Prand([0.01,0.02,0.04,0.08],inf).asStream;
g=Prand([100,200,400,800,1600]+500,inf).asStream;
h=Pwrand([1,2,4],[0.2,0.3,0.15,0.05],inf).asStream; //~tres
t=Pwrand([0.25,0.5,0.75,1],[0.05,0.55,0.25,0.15],inf).asStream;
inf.do{
~uno.set(\ifrec, b.next;
~dos.set(\ifrec, c.next);
~tres.set(\t_trig, d.next);
~tres.set(\ifrec, h.next);
~dos.set(\rfrec,g.next);
~pit.set(\rfreq, e.next);
~pit.set(\prate, a.next);
~del.set(\dtim, f.next);
~dos.set(\lft,[-1,1].choose);
~dos.set(\rght,[1, -1].choose);
t.next.postln.wait;
}}
)
)
Tdef(\secs).play
///////controles
~o= //////este para combinar los nodos
~o=~pit
~o=~uno
~o=~dos
~o=~tres
~o=~del
~o=~verb
~o=0
///
s.record
:::click:descarga el audio:::
////escrito sobre emacs, pure:dyne 9.11
/////////////////////////////codigo://///////////////////////////
s.boot
s.quit
s.scope
////
p=ProxySpace.push(s);
p.fadeTime=1;
//////
s.record
///
TempoClock.tempo=115/60 //10/60//20/60//75/60;
/////
~o.play;
~uno={|ifrec=2|Normalizer.ar(RLPF.ar(Resonz.ar(LFTri.ar(Pulse.ar(Demand.kr(Impulse.kr(ifrec),0,Drand([1,2,4,8],inf)),0.5,80,90),0,0.5)*LFNoise0.ar(10000,0.1),Line.kr(220,10000,0.5),0.25),Demand.kr(Impulse.kr(4),0,Drand([800,1600,3200,6400,12000],inf)),0.25),0.05)};
~dos={|lft= -1,rght=1,ifrec=2,rfrec=2000|Normalizer.ar(Pan2.ar(BPF.ar(LFTri.ar(Pulse.ar(ifrec,0.5,6,4),0,0.25)*BrownNoise.ar(0.15),Demand.kr(Impulse.kr(ifrec),0,Drand([220,440,880,660],inf)),0.01),[lft,rght]),0.05)};
~tres={|ifrec=4,t_trig=0|EnvGen.ar(Env.perc(0.01,0.08),t_trig)*Normalizer.ar(Pulse.ar(Pulse.ar(ifrec,0.5,60,85),0.1,0.45)+SinOsc.ar(Pulse.ar(ifrec,0.5,60,85),0,0.75),0.95)};
~del={|dtim=0.05|CombC.ar(Mix(~tres.ar,~uno.ar,~dos.ar),0.25,dtim,0.8,0.55)};
~verb={FreeVerb.ar(~dos.ar,0.95,0.95,0.1,0.85)};
~pit={|prate=2,ifrec=1,rfreq=600|Compander.ar(Normalizer.ar(Resonz.ar(PitchShift.ar(Mix([~del.ar]),0.5,prate,0.95,0.025,0.5),rfreq,0.35),0.55,0.25),0,0.7,1,1,0.35,0.15)};
(
Tdef(\secs,{
a=Prand([1,1.3,1.7,2,2.2,2.5,2.9,3.2,3.4,3.7,4],inf).asStream;
b=Prand([0.5,2,1,4],inf).asStream;//~uno
c=Prand([0.5,1,2,4],inf).asStream;//~dos
d=Pwrand([0.25,0.5,0.75,1],[0.2,0.3,0.15,0.05],inf).asStream; //~tres
e=Prand([100,200,400,800,1600],inf).asStream;
f=Prand([0.01,0.02,0.04,0.08],inf).asStream;
g=Prand([100,200,400,800,1600]+500,inf).asStream;
h=Pwrand([1,2,4],[0.2,0.3,0.15,0.05],inf).asStream; //~tres
t=Pwrand([0.25,0.5,0.75,1],[0.05,0.55,0.25,0.15],inf).asStream;
inf.do{
~uno.set(\ifrec, b.next;
~dos.set(\ifrec, c.next);
~tres.set(\t_trig, d.next);
~tres.set(\ifrec, h.next);
~dos.set(\rfrec,g.next);
~pit.set(\rfreq, e.next);
~pit.set(\prate, a.next);
~del.set(\dtim, f.next);
~dos.set(\lft,[-1,1].choose);
~dos.set(\rght,[1, -1].choose);
t.next.postln.wait;
}}
)
)
Tdef(\secs).play
///////controles
~o= //////este para combinar los nodos
~o=~pit
~o=~uno
~o=~dos
~o=~tres
~o=~del
~o=~verb
~o=0
///
s.record
miércoles, 16 de febrero de 2011
bizarythm
Algo ya mas parecido a una pieza, Esta es una experimentación rítmica basada en ProxySpace y la combinacion de Pbind y Tdef 's, algo similar a los resultados cuando se usan secuencias y patterns en #superCollider sin ProxySpace, por lo cual responde también a cambiar los bpm con TempoClock y así poder dar mas flexibilidad rítmica, la combinacion de los nodosProxy es libre y al gusto;como siempre!!. Una de las cualidades del Proxyspace es poder cambiar parámetros de una variable global en tiempo real, así que tambien queda jugar con los diferentes argumentos pudiendo evaluar la cantidad de veces que sea necesario la misma función con distintos parámetros.
//ejemplo sonoro: track: hhrniah
:::click:descarga el audio:::
////escrito sobre gedit, ubuntu 10.04
/////////////////////////////codigo://///////////////////////////
s.boot
s.quit
s.scope
//p.free
p=ProxySpace.push(s)
p.fadeTime=0.5
TempoClock.tempo=45/60 // 25/60 // 75/60
~out.play
(
(
~sint={|t_trig=0,frec=61,att=0.045,rel=0.5,maxffreq=900|
EnvGen.ar(Env.perc(att,rel),t_trig)*
RLPF.ar(
(LFTri.ar(frec.midicps,0.1,0.46)*Saw.ar(frec.midicps,0.3,0.48)),
XLine.ar(210,maxffreq,0.35),0.15);
}
);
(
Tdef(\tsint,{
f=Prand([60,63,67,70,72],inf).asStream;
g=Pseq([240,430,560,640,820,920,2000],inf).asStream;
h=Pwrand([60,63,67,70,72],[4,1,3,1,1],inf).asStream;
t=Prand([0.25,0.5,0.75,1,1.5,2],inf).asStream;
inf.do{
~sint.set(\t_trig,1);
~sint.set(\frec,f.next);
~sint.set(\frec,h.next);
~sint.set(\maxffreq,g.next);
~sint.set(\rel,2.5+[0.125,0.5,1].choose);
t.next.wait;
}}
)
);
)
Tdef(\tsint).play
Tdef(\tsint).stop
~sintrev={FreeVerb.ar(~sint.ar,1,1,0.1,0.45)}
~bomb={|t_trig=0,mfrq=1|EnvGen.ar(Env.perc(0.01,0.35),t_trig)*SinOsc.ar(Pulse.ar(mfrq,0.25,60,65),0.25,0.5)}
~tar={|t_trig=0|EnvGen.ar(Env.perc(0.01,0.15),t_trig)*Saw.ar(Mix([200,400,800,2000]),0.25,0.5)*WhiteNoise.ar(0.25)}
~kntras={|amp=0.5,t_trig=0|EnvGen.ar(Env.perc(0.025,0.1),t_trig)*(WhiteNoise.ar(amp)*PinkNoise.ar(amp))}
(
(
Tdef(\bomtar,{
var t2,mfreq;
mfreq=Pwrand([1,2,4],[0.45,0.45,0.1],inf).asStream;
t2=Pseq([0.125,0.25],inf).asStream;
inf.do{
var num;
num=wchoose([0,1],[0.6,0.4]);
if(num == 0,{~bomb.set(\t_trig,1)},{~tar.set(\t_trig,1)});
~bomb.set(\mfrq,mfreq.next.value.postln);
t2.next.wait;
}}
)
);
(
Tdef(\tkntras,{
var ampt/*mdt*/,t2;
ampt=Pseq([0.4,0.25,0.3,0.15],inf).asStream;
t2=Pseq([0.125,0.25],inf).asStream;
//mdt=Pwrand([0.02,0.04,0.05,0.8],[0.15,0.35,0.35,0.15],inf).asStream;
inf.do{
~kntras.set(\t_trig,1);
~kntras.set(\amp,ampt.next);
//~mastf.set(\deltim,mdt.next);
t2.next.wait;
}}
)
);
)
Tdef(\bomtar).play;
Tdef(\bomtar).stop;
Tdef(\tkntras).play;
Tdef(\tkntras).stop;
~rythrev={FreeVerb.ar([~bomb.ar,~tar.ar],0.3,0.65,0.1)!2};//quitar "!2" para panear totalmente tarola y bombo!
//~mastf={CombC.ar(~out.ar,0.5,Demand.kr(Impulse.kr(2),0,Drand([0.04,0.08,0.16,0.32],inf)),0.25)!2};
~mastf={|deltim=1|RLPF.ar(CombC.ar(Mix([~rythrev.ar,~kntras.ar]),0.5,deltim,1,0.5),16000,0.25,0.89)};//control de mouse en la frecuencia del filtro
(
Tdef(\tmast,{
var mdt,t3;
t3=Pwrand([0.125,0.25,0.5,0.75,1],[0.1,0.1,0.4,0.3,0.1],inf).asStream;
mdt=Pwrand([0.02,0.04,0.03,0.8],[0.15,0.35,0.35,0.15],inf).asStream;
inf.do{
~mastf.set(\deltim,mdt.next);
t3.next.wait;
}}
)
);
Tdef(\tmast).play;
Tdef(\tmast).stop;
//////la diferencia de las funciones de ~bass y ~bassp es la posicion del filtro
(//openbass
~bass={|frec1=54,frec2=54,t_trig=0|
RLPF.ar(
EnvGen.ar(Env.asr(0.05,5,1),t_trig)*
Saw.ar([frec1.midicps,frec2.midicps],0.25,0.45)+
LFTri.ar([frec1.midicps,frec2.midicps],-0.25,0.45);
,10800,1,0.65);
}
);
(//bajo punteado
~bassp={|frec1=54,frec2=54,t_trig=0|
EnvGen.ar(Env.asr(0.05,5,1),t_trig)*
RLPF.ar(
Saw.ar([frec1.midicps,frec2.midicps],0.25,0.45)+
LFTri.ar([frec1.midicps,frec2.midicps],-0.25,0.45);
,10800,1,0.65);
}
);
(
Tdef(\tbass,{
var t4,f1,f2;
f2=Pseq([54,59,61,56,64] -24,inf).asStream;
f1=Pseq([54,59,61,56,64] -24.25,inf).asStream;
t4=Pwrand([0.25,0.5,0.75,1],[0.05,0.35,0.15,0.45],inf).asStream;
inf.do{
~bass.set(\t_trig,1);
~bass.set(\frec1,f1.next);
~bass.set(\frec2,f2.next);
~bassp.set(\t_trig,1);
~bassp.set(\frec1,f1.next);
~bassp.set(\frec2,f2.next);
t4.next.wait;
}}
)
);
Tdef(\tbass).play;
Tdef(\tbass).stop;
//~out.play;
~out= /////esta linea para combinarlos al gusto
~out=~sintrev;
~out=~rythrev;
~out=~kntras;
~out=~bass;//bajo abierto
~out=~bassp;//bajo punteado
~out=~mastf;
~out=~kntras+~bass+~rythrev+~mastf+~sintrev;
//~mastf.play
//~mastf.stop
jueves, 10 de febrero de 2011
mas ProxySpace
//ejemplo sonoro: track: nnosprtamspltics
:::click:descarga el audio:::
////escrito sobre gedit, ubuntu 10.04
/////////////////////////////codigo://///////////////////////////
s.boot
s.quit
s.scope
////
p=ProxySpace.push(s)
p.fadeTime=0.5
p.free
~out.play
~sec={|t_trig=0,frec=60,oct=3|EnvGen.ar(Env.perc(0.5,5),t_trig)*LFTri.ar(frec.midicps/oct,0,0.3)*Saw.ar(frec.midicps/(oct)+2,1,0.5)}
~bombo={|dfrec=1|SinOsc.ar(Pulse.ar(Demand.kr(Impulse.kr(dfrec),0,Drand([1,2,4,8],inf)),0.5,80,120),0,0.25)}
~bombo2={|dfrec=2|SinOsc.ar(Pulse.ar(Demand.kr(Impulse.kr(dfrec),0,Drand([1,2],inf)),0.5,80,120),0,0.35)}
~canica={|dfrec=1,modmaxamp=1200|SinOsc.ar(Pulse.ar(Demand.kr(Impulse.kr(dfrec),0,Dseq([1,2,3,4,6,8,10,14,20,100],inf)),0.5,800,modmaxamp),0,0.15)}
~filt={|rq=0.2|RHPF.ar(~canica.ar,Line.kr(80,1200,10),rq,0.35)}
~rev2={FreeVerb.ar(~filt.ar,0.7,0.9,0.01)!2}
~rev={FreeVerb.ar(~sec.ar,1,0.95,0.01)!2}
~del={CombC.ar(~sec.ar,1,1,10)}
~del2={CombC.ar(~filt.ar,1,0.1,1)}
(
Tdef(\exp,{
inf.do{
~sec.set(\t_trig,1);
~sec.set(\frec,[1,3,7].choose+[60,63,66,70,72].choose);
~sec.set(\oct,wchoose([1,1.5,2,3],[0.15,0.15,0.25,0.45]).postln);
~canica.set(\modmaxamp,[440,880,1200,2000].choose);
wchoose([0.25,0.5,1,2],[0.15,0.15,0.25,0.45]).postln.wait;
}
})
)
Tdef(\exp).play////trigerea argumentos, no suena hasta ser igualado a ~out
Tdef(\exp).stop
/////hacer combinaciones de los nodos
~out=~del
~out=~rev+~del
~out=~bombo+~rev2+~rev+~filt+~sec+~del2
~out=~bombo2+~rev2+~rev+~del2+~del
~out=~rev+~rev2+~del+~del2+~filt
~out=~filt
~out=~rev+~filt
~out=0
...
////esto llama la mixer de nodos-proxy del ambiente igualado a"p"
ProxyMixer(p)
s.record
:::click:descarga el audio:::
////escrito sobre gedit, ubuntu 10.04
/////////////////////////////codigo://///////////////////////////
s.boot
s.quit
s.scope
////
p=ProxySpace.push(s)
p.fadeTime=0.5
p.free
~out.play
~sec={|t_trig=0,frec=60,oct=3|EnvGen.ar(Env.perc(0.5,5),t_trig)*LFTri.ar(frec.midicps/oct,0,0.3)*Saw.ar(frec.midicps/(oct)+2,1,0.5)}
~bombo={|dfrec=1|SinOsc.ar(Pulse.ar(Demand.kr(Impulse.kr(dfrec),0,Drand([1,2,4,8],inf)),0.5,80,120),0,0.25)}
~bombo2={|dfrec=2|SinOsc.ar(Pulse.ar(Demand.kr(Impulse.kr(dfrec),0,Drand([1,2],inf)),0.5,80,120),0,0.35)}
~canica={|dfrec=1,modmaxamp=1200|SinOsc.ar(Pulse.ar(Demand.kr(Impulse.kr(dfrec),0,Dseq([1,2,3,4,6,8,10,14,20,100],inf)),0.5,800,modmaxamp),0,0.15)}
~filt={|rq=0.2|RHPF.ar(~canica.ar,Line.kr(80,1200,10),rq,0.35)}
~rev2={FreeVerb.ar(~filt.ar,0.7,0.9,0.01)!2}
~rev={FreeVerb.ar(~sec.ar,1,0.95,0.01)!2}
~del={CombC.ar(~sec.ar,1,1,10)}
~del2={CombC.ar(~filt.ar,1,0.1,1)}
(
Tdef(\exp,{
inf.do{
~sec.set(\t_trig,1);
~sec.set(\frec,[1,3,7].choose+[60,63,66,70,72].choose);
~sec.set(\oct,wchoose([1,1.5,2,3],[0.15,0.15,0.25,0.45]).postln);
~canica.set(\modmaxamp,[440,880,1200,2000].choose);
wchoose([0.25,0.5,1,2],[0.15,0.15,0.25,0.45]).postln.wait;
}
})
)
Tdef(\exp).play////trigerea argumentos, no suena hasta ser igualado a ~out
Tdef(\exp).stop
/////hacer combinaciones de los nodos
~out=~del
~out=~rev+~del
~out=~bombo+~rev2+~rev+~filt+~sec+~del2
~out=~bombo2+~rev2+~rev+~del2+~del
~out=~rev+~rev2+~del+~del2+~filt
~out=~filt
~out=~rev+~filt
~out=0
...
////esto llama la mixer de nodos-proxy del ambiente igualado a"p"
ProxyMixer(p)
s.record
sábado, 5 de febrero de 2011
ProxySpace
... y para el primer Post de este blog...
Esta es una sesión de ProxySpace.push(s) simple pero con resultados muy variados y ricos en armónicos, se trata de dos funciones y dos Tdef. Uno de ellos a través de un if, iguala la selección de un Array, creando una mezcla de las funciones de manera automática.
Lo demás queda en modular los diferentes parámetros de las funciones para obtener distintos resultados sonoros(una opción seria dentro de estos u otros Tdef), con cuidado de no disparar de mas alguno de los parámetros; Una de las razones por la cual se uso parámetros de amplitud muy bajos.
Lo demás queda en modular los diferentes parámetros de las funciones para obtener distintos resultados sonoros(una opción seria dentro de estos u otros
/////ejemplo sonoro: track: cKrstlamb
:::click:descarga el audio:::
////escrito sobre gedit, ubuntu 10.04
/////////////////////////////codigo://////////////////////
s.boot
s.scope
FreqScope.new
/////
p=ProxySpace.push(s)
ProxyMixer.new(p)//muestra la mixer de los eventos del proxyspace
//p.free
p.fadeTime=4
////////
~out.play
(
(
~sint={
FreeVerb.ar(
FreeVerb.ar(
HPF.ar(
Pulse.ar(Demand.kr(Impulse.kr(Line.kr(1,0.5,0.5)),0,Drand([61,66,70,73,75,78,82,85,90].midicps/2,inf))
,-0.25,0.15)+
Saw.ar(Demand.kr(Impulse.kr(Line.kr(1,0.25,0.5)),0,Drand([61,66,70,75,82,85].midicps,inf))
,0.3,0.15)
,/*MouseY.kr(45,10000).poll*/85,0.15)
,0.75,1,0.05,0.5)
,1,0.9,1,0.5)
});
(
~sint1={|ffrec=620|
CombC.ar(
LPF.ar(
Saw.ar(Demand.kr(Impulse.kr(Line.kr(1,2,0.5)),0,Dseq([61,66,70,73,75,78,82,85].midicps/1.3,inf))
,0.1,0.1)+
SinOsc.ar(Demand.kr(Impulse.kr(Line.kr(1,1.5,0.5)),0,Drand([61,66,70,73,75,78,82,85].midicps,inf))
,0,0.1)
,/*MouseX.kr(45,10000).poll*/ffrec,0.5)
,0.5,0.5,15,0.12)}
);
(
Tdef(\sec,{
inf.do{
~sint1.set(\ffrec,[220,360,640,980].choose.postln);
0.5.wait;
}
}
)
);
//combinador
(//combina las funciones cada 2 seg
Tdef(\comb,{
inf.do{
var res;
res=[1,2,3,4,5,6,7,8,9,10].choose.postln;
if(res >= 5,{~out=~sint},{~out=~sint1});
2.wait;
}}
)
);
)
Tdef(\sec).play//filtro del sint1
Tdef(\comb).play//combina las funciones
Tdef(\sec).stop
Tdef(\comb).stop//hay q apagar este tdef para usar otras igualaciones de ~out
~out=~sint+~sint1
~out=~sint
~out=~sint1
~out=0
Suscribirse a:
Entradas (Atom)
