//written by @joseCao5
//www.mixfuckedup.net
//jan_2013
//some rythms with a Gui
//audioSample(this code does many more!): http://soundcloud.com/josecaos/crudoritmia
s.boot;
s.quit;
s.scope;
//TempoClock.default.tempo=60/60;//60,68,86,72,115,160
(// *
(
SynthDef(\master,{|amp=1|
var in,fx,env,prate;
prate=Duty.kr(Drand([1,2,0.5],inf),0,Drand([1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,2.5,2.75,3],inf));
in=In.ar(20);
fx=PitchShift.ar(in,0.15,prate);
fx=Compander.ar(fx,fx,0.5,0.7,0.7);
fx=Limiter.ar(fx,amp);
env=EnvGen.ar(Env.adsr(0.01,0.01,0.97,0.01),1);
Out.ar(0,Pan2.ar(fx*env,[1, -1]));
}).add;
);
(
SynthDef(\bombo,{|gate=0,bw=0.1,amp=0.75,din2=1,out=#[0,20,20]|
var sin,env,r,r2,r3;
r=Duty.kr(Drand([0.25,0.5,2],inf),0,Dxrand([100,250,560,800]*2,inf));
r2=Duty.kr(Dxrand([0.5,1,2,],inf),0,Drand([2,4,8,16],inf));
r3=TChoose.kr(Impulse.kr(r2/2),[0.01,0.25,0.5,1]);
sin=Limiter.ar(PitchShift.ar(RHPF.ar(LFTri.ar(Pulse.ar(r2,r2/32,60,62),bw,0.8),Line.kr(r,r**r3,r3),0.2),0.1,1),amp)+
Limiter.ar(SinOsc.ar(Mix(60,120,480),0,0.5)+LFTri.ar(Pulse.ar(r2,r2/16,60,62),0,0.75),din2);
sin=Compander.ar(sin,sin,0.7,0.4,0.4);
env=EnvGen.ar(Env.perc(0.01,r3*2),gate,doneAction:2);
Out.ar(out,Pan2.ar(sin*env,[-1,1]));
}).add;
);
(
SynthDef(\tarolax,{|gate=0,bw=0.1,din=0.5,out=#[0,20]|
var sin,env,r,r2,r3;
r=Duty.kr(Drand([0.25,0.5,2],inf),0,Dxrand([250,370,560,840,1840],inf));
r2=Duty.kr(Dxrand([0.5,1,2,],inf),0,Drand([2,4,8,16],inf));
r3=TChoose.kr(Impulse.kr(r2/2),[0.01,0.05,0.1,0.25,0.5,1]);
sin=Limiter.ar(RHPF.ar(PinkNoise.ar(Pulse.ar(r2/2,r2/32,1,1)),XLine.kr(r,r*r3,r3),0.5)
+LFTri.ar(Mix(330,480,880),0,0.1),din);
sin=Compander.ar(sin,sin,0.9,0.5,0.8);
env=EnvGen.ar(Env.perc(0.01,0.15),gate,doneAction:2);
Out.ar(out,Pan2.ar(sin*env,[1,-0.97]));
}).add;
);
(
Tdef(\bomba,{
var t1=Pwrand([0.75,0.75,0.5],[0.5,0.4,0.09],inf).asStream;
var t2=Prand([0.125,0.25],inf).asStream;
var t3=Pseq([0.25,0.5,0.5,0.5,0.25,0.125,0.125,0.5,0.125,0.25,0.125],inf).asStream;
var t4=Prand([0.5,0.75,1],inf).asStream;
var t5=Pwrand([0.125,0.25,0.5,0.75,1,1.5],[0.06,0.28,0.32,0.1,0.12,],inf).asStream;
var t=t3;
~mast=Synth(\master);
inf.do({
~k=Synth(\bombo);
~k.set(\gate,1);
~popup.action={|index|
index.value.postln;
switch(index.value,
0,{t=t1},
1,{t=t2},
2,{t=t3},
3,{t=t4},
4,{t=t5}
);
};
t.resume.wait;
})
});
);
(
Tdef(\tarolo,{
var acc=Pseq([0.001,0.25],inf).asStream;
var timerand=[0.125,0.25,0.5,0.75,1,1.5];
var time=0.5;
inf.do({
var tarola=Synth(\tarolax);
var insane=0.75;
tarola.set(\gate,1);
tarola.set(\din,acc.next);
~popup1.action={|index|
index.value.postln;
switch(index.value,
0,{time=insane},
1,{time=0.25},
2,{time=0.5},
3,{time=1},
4,{time=timerand.choose}
);
};
time.wait;
})
});
);
);
(//Gui
var canvas,fader,num;
canvas=Window("2013",Rect(910,380,150,211)).front;
canvas.view.background=Color(0,0,0,0.9);//.rand.postcln;
//numBox+slider (not Qt)
num=NumberBox(canvas,Rect(100,0,50,20)).background_(Color(0.5,0.5,0.5));
fader=Slider(canvas,Rect(100,20,50,191)).background_(Color(0.76,0.37,0.34,1));
fader.action={~mast.set(\amp,fader.value.postln);num.value_(fader.value)};
//play
StaticText(canvas,Rect(0,140,100,25)).string_("PLAY/STOP:").align_(\center).background_(Color(0.76,0.37,0.34,0.75));
~bot=Button(canvas,Rect(0,160,100,50));
~bot.states=[["play =>",Color.white,Color.green],
["stop []",Color.black,Color.red]];
~bot.action={|val|if(val.value==0,{Tdef(\bomba).stop;Tdef(\tarolo).stop;"->stoped<-".postcln},
{Tdef(\bomba).play;Tdef(\tarolo).play;"->running<-".postcln})};
//popUp
StaticText(canvas,Rect(0,70,100,20)).string_("KICK_STEPS:").align_(\center).background_(Color(0.76,0.37,0.34,0.75));
~popup=PopUpMenu(canvas,Rect(0,90,100,50)).background_(Color(0.76,0.37,0.34,1));
~popup.items=["k->insane","k->fast","k->nice","k->slow","k->rand.val"];
//
StaticText(canvas,Rect(0,0,100,20)).string_("SNARE_STEPS:").align_(\center).background_(Color(0.76,0.37,0.34,0.75));
~popup1=PopUpMenu(canvas,Rect(0,20,100,50)).background_(Color(0.76,0.37,0.34,1));
~popup1.items=["t->insane","t->fast","t->nice","t->slow","t->rand.val"];
)
//
Help.gui;
//
s.record;
s.stopRecording;