View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide

simpleSampleTrapset

with start/stop buttons!
(
s = Server.local;
s.status;
s.boot;
)

(

var dur, times, times2, pitches;
var kickBut, kick, snareBut, snare;
var hihat, hatBut, left, leftBut, right, rightBut;

s.sendMsg("/b_allocRead", 0, "sounds/a11wlk01.wav"); //replace with your sounds - if you want

SynthDef("columbia", { arg gate = 1, rate = 1, bufnum = 0, startPos=0.0, time=1.0, envLev=1.0, panPos=0.0, loopLength=1, trig=1;
	var out,eg, triggerer;
	triggerer = Impulse.kr(BufSampleRate.kr(bufnum)/loopLength);
	eg = EnvGen.kr(Env.linen(0.1, 0.98, 0.1, 1), gate, timeScale: time, levelScale: envLev, doneAction: 2);
	out = Pan2.ar(PlayBuf.ar(1, bufnum, rate, triggerer, startPos, loop: 1), panPos);
	Out.ar(0, out*eg);
}).load(s);

SynthDef("columbiaPerc", { arg gate = 1, rate = 1, bufnum = 0, startPos=0.0, time=1.0, envLev=1.0, panPos=0.0, loopLength=1, trig=1;
	var out,eg, triggerer;
	
	triggerer = Impulse.kr(BufSampleRate.kr(bufnum)/loopLength);
	eg = EnvGen.kr(Env.perc(0.01, 1, 1, -4), gate, timeScale: time, levelScale: envLev, doneAction: 2);
	out = Pan2.ar(PlayBuf.ar(1, bufnum, rate, triggerer, startPos, loop: 1), panPos);
	Out.ar(0, out*eg);
}).load(s);


w = SCWindow("ColumbiaTrap", Rect(35, 580, 420, 65)).front; 
w.view.background_(rgb(10,75,195));

kickBut =  SCButton(w, Rect(10, 23,80, 20 ))
        .states_([
                ["Kick", Color.black, Color.green], ["Stop kick", Color.white, Color.red]
        ])
        .action = {
                if (kickBut.value == 1, {
                       kick.reset;
                        SystemClock.play(kick);
                }, {
                        kick.stop;
                });
        };
        
snareBut =  SCButton(w, Rect(90, 23, 80, 20))
        .states_([
                ["Snare", Color.black, Color.green], ["Stop Snare", Color.white, Color.red]
        ])
        .action = {
                if (snareBut.value == 1, {
                        snare.reset;
                        SystemClock.play(snare);
                }, {
                        snare.stop;
                });
        };
        
 hatBut =  SCButton(w, Rect(170, 23, 80, 20 ))
        .states_([
                ["hihat", Color.black, Color.green], ["Stop hat", Color.white, Color.red]
        ])
        .action = {
                if (hatBut.value == 1, {
                       hihat.reset;
                        SystemClock.play(hihat);
                }, {
                        hihat.stop;
                });
        };
        
leftBut =  SCButton(w, Rect(250, 23, 80, 20))
        .states_([
                ["Left", Color.black, Color.green], ["Stop Left", Color.white, Color.red]
        ])
        .action = {
                if (leftBut.value == 1, {
                        left.reset;
                        SystemClock.play(left);
                }, {
                        left.stop;
                });
        }; 
        
rightBut =  SCButton(w, Rect(330, 23, 80, 20))
        .states_([
                ["Right", Color.black, Color.green], ["Stop Right", Color.white, Color.red]
        ])
        .action = {
                if (rightBut.value == 1, {
                        right.reset;
                        SystemClock.play(right);
                }, {
                        right.stop;
                });
        };  
a=Pseq([0.75, 0.25]);
b=Pseq([0.75, 0.125,0.125]);
c=Pseq([0.5, 0.5]);
d=Pseq([0.125,0.125,0.75]);
e=Pseq([0.5,0.125,0.125,0.25]);
f=Pseq([0.125,0.125,0.125,0.125,0.25,0.25]);
g=Pseq([0,1], inf).asStream;
times=Pswitch([a,b,c,d,e,f], Prand([0,1,2,3,4,5],inf)).asStream;
times2=Pswitch([e,f], Prand([0,1], inf)).asStream;

pitches=Prand([0.875, 1.0, 1.2], inf).asStream;  //just m7, 1, m3rd


Tempo.bpm = 120;
dur = Tempo.beats2secs(2); //whole


left=Routine({ arg nextTime;  //left chan thing
OSCSched.global.tdeltaTillNext(4.0).wait;  //starts on next bar
        loop({
		nextTime= dur*times.next ;
		
 		s.sendMsg(\s_new, \columbia, -1, 1, 0,
 				\gate, 1,
				\time, dur*0.12,
				\startPos, (15.rand*150).abs.asInteger,
				\rate, pitches.next*4,
				\loopLength,(44.1e3.rand).abs.asInteger,
				\envLev,0.2,
				
				\panPos, (1.0.rand)-1
				);
				nextTime.wait;
				
			});
});
right=Routine({ arg nextTime;   // right chan thing
OSCSched.global.tdeltaTillNext(4.0).wait;
        loop({
		nextTime= dur*times2.next ;
		
 		s.sendMsg(\s_new, \columbia, -1, 1, 0,
 				\gate, 1,
				\time, dur*0.1,
				\startPos, (15.rand*100).abs.asInteger,
				\rate, pitches.next*8,
				\loopLength,(5.512e3.rand).abs.asInteger,
				\envLev,0.3,
				
				\panPos, 1.0.rand
				);
				nextTime.wait;
				
			});
});


hihat=Routine({ arg nextTime;  //hihat
OSCSched.global.tdeltaTillNext(4.0).wait;
        loop({
		nextTime= dur*0.125 ;
		
 		s.sendMsg(\s_new, \columbiaPerc, -1, 1, 0,
 				\gate, 1,
				\time, dur*0.1,
				\startPos, 100,
				\rate, 25,
				\loopLength,5512,
				\envLev,times.next*0.4,
				
				\panPos, 0.25.rand2
				);
				nextTime.wait;
				
			});
});

kick=Routine({ arg nextTime;  //kick
OSCSched.global.tdeltaTillNext(4.0).wait;
        loop({
		nextTime= dur;
		
 		s.sendMsg(\s_new, \columbiaPerc, -1, 1, 0,
 				\gate, 1,
				\time, dur*0.3,
				\startPos, 100,
				\rate, 0.125,
				\loopLength,5512,
				\envLev,1.0,
				
				\panPos, 0.0
				);
				nextTime.wait;
				
			});
});


snare=Routine({ arg nextTime;  //snare
OSCSched.global.tdeltaTillNext(4.0).wait;
        loop({
		nextTime= dur*0.5;
		
 		s.sendMsg(\s_new, \columbiaPerc, -1, 1, 0,
 				\gate, 1,
				\time, dur*0.35,
				\startPos, 100,
				\rate, 4,
				\loopLength,22.5e3,
				\envLev,g.next,
				
				\panPos, 0.1.rand2
				);
				nextTime.wait;
				
			});
});
)
/*
authors so far:
jonathan segel
*/


Link to this Page