rendered paste body// ==============================
// it's techno, in supercollider.
// ==============================
s.boot
// WAIT UNTIL NOTIFICATION IS ON!!!
// --- ALL INSTRUMENT SYNTHDEFS ---
(
(
// lead sound (granular synth)
SynthDef(\lead,{ arg freq=440,amp=1,rate=0.003,length=0.005,out=0;
var signal, outsignal;
var sinoscs;
sinoscs = 2;
rate = rate * MouseY.kr(0.5,10);
length = length * MouseY.kr(0.5,10);
signal = Saw.ar(freq);
signal = Resonz.ar(signal,MouseX.kr(100,4000));
signal = signal * EnvGen.ar(Env.sine(length,1),Impulse.kr((rate*2).reciprocal));
signal = signal * (sinoscs.reciprocal);
outsignal = Mix.fill(sinoscs,{ arg i; DelayL.ar(signal,2,rate * i) });
outsignal = outsignal * EnvGen.ar(Env.new(#[1,0],#[0.2]),doneAction:2);
outsignal = outsignal * amp;
Out.ar(out,outsignal);
}).load(s);
// lead sound (simple synth)
SynthDef(\lead2,{ arg freq=440,amp=1,out=0;
var signal, outsignal;
signal = Saw.ar(freq/2);
signal = Resonz.ar(signal,MouseX.kr(100,4000),0.1);
signal = signal * EnvGen.ar(Env.new(#[1,0],#[0.2]),doneAction:2);
signal = signal * 2 * amp;
Out.ar(out,signal);
}).load(s);
// kickdrum
SynthDef(\kick,{ arg amp = 0.4,out=0;
var signal;
signal = SinOsc.ar(XLine.kr(330,20,0.15));
signal = signal * EnvGen.ar(Env.new(#[1,0],#[0.15]),doneAction:2);
signal = signal * amp;
Out.ar(out,signal);
}).load(s);
// cymbal
SynthDef(\cymbal,{ arg amp = 0.5,out=0;
var signal;
signal = WhiteNoise.ar(1);
signal = HPF.ar(signal,5000);
signal = signal * EnvGen.ar(Env.new(#[1,0],#[0.6]),doneAction:2);
signal = signal * amp;
Out.ar(out,signal);
}).load(s);
// open hihat
SynthDef(\openhat,{ arg amp = 0.5,out=0;
var signal;
signal = WhiteNoise.ar(1);
signal = HPF.ar(signal,10000);
signal = signal * EnvGen.ar(Env.new(#[1,0],#[0.3]),doneAction:2);
signal = signal * amp;
Out.ar(out,signal);
}).load(s);
// closed hihat
SynthDef(\closedhat,{ arg amp = 0.5,out=0;
var signal;
signal = WhiteNoise.ar(1);
signal = HPF.ar(signal,10000);
signal = signal * EnvGen.ar(Env.new(#[1,0],#[0.05]),doneAction:2);
signal = signal * amp;
Out.ar(out,signal);
}).load(s);
// snare
SynthDef(\snare,{ arg amp = 0.5,out=0;
var signal;
signal = WhiteNoise.ar(1);
signal = HPF.ar(signal,2000);
signal = signal * EnvGen.ar(Env.new(#[1,0],#[0.2]),doneAction:2);
signal = signal * amp;
Out.ar(out,signal);
}).load(s);
// bassline
SynthDef(\bass,{ arg freq = 55, amp = 0.4,out=0;
var signal;
signal = Saw.ar(freq);
signal = LPF.ar(signal,freq*8);
signal = signal * EnvGen.ar(Env.new(#[1,0],#[0.3]),doneAction:2);
signal = signal * amp;
Out.ar(out,signal);
}).load(s);
);
// --- ALL EFFECT SYNTH DEFS ---
(
// mute
SynthDef(\mute, { arg in = 8, out = 0;
}).load(s);
// no effects
SynthDef(\nofx, { arg in = 9, out = 0;
var signal;
signal = In.ar(in);
Out.ar(out,signal!2);
}).load(s);
// high pass filter
SynthDef(\fx1, { arg in = 10, out = 0;
var signal;
signal = In.ar(in);
signal = HPF.ar(signal,(SinOsc.kr(4)*2000)+4000);
Out.ar(out,signal!2);
}).load(s);
// simple multitap feedback delay
SynthDef(\fx2, { arg in = 11, out = 0;
var signal, delay;
signal = In.ar(in) + LocalIn.ar(1);
delay = DelayL.ar(signal,0.1,0.1);
signal = signal + delay;
LocalOut.ar(delay*0.6); // send the delay'ed portion back to LocalIn
Out.ar(out,signal!2);
}).load(s);
// tremolo (sine wave modulation of amplitude)
SynthDef(\fx3, { arg in = 12, out = 0;
var signal, delay;
signal = In.ar(in);
signal = signal * SinOsc.kr(20);
Out.ar(out,signal!2);
}).load(s);
// phaser
SynthDef(\fx4, { arg in = 13, out = 0;
var signal, delay;
signal = In.ar(in);
signal = signal + DelayL.ar(signal,1,SinOsc.kr(100,mul:0.01,add:0.02));
signal = signal/2;
Out.ar(out,signal!2);
}).load(s);
// chorus
SynthDef(\fx5, { arg in = 14, out = 0;
var signal, modulated, numDelays = 12;
signal = In.ar(in);
modulated = Array.fill(numDelays, {arg i; LFPar.kr(0.05 * rrand(0.94, 1.06), 0.05 * i, 0.1, 0.08);});
signal = DelayC.ar(signal, 0.5, modulated);
signal = signal.sum / 4;
Out.ar(out,signal!2);
}).load(s);
);
// --- SETUP EFFECT SYNTHS ---
(
~mute.free;
~nofilter.free;
~filter1.free;
~filter2.free;
~filter3.free;
~filter4.free;
~filter5.free;
~mute = Synth.new("mute");
~nofilter = Synth.new("nofx");
~filter1 = Synth.new("fx1");
~filter2 = Synth.new("fx2");
~filter3 = Synth.new("fx3");
~filter4 = Synth.new("fx4");
~filter5 = Synth.new("fx5");
);
// --- initial pattern ---
~currentPattern = 0;
~followSequencer = true;
//start variables
~drumpattern = 1;
~kickdrumfx = 0;
~drumfx = 1;
~bassline = 1;
~bassfx = 0;
~synthline = 0;
~synthfx = 2;
// pattern sequencer
~nextPattern = {
~currentPattern = ~currentPattern+1;
("current pattern = " ++ ~currentPattern).postln;
if (~currentPattern == 1, {
//start variables
~drumpattern = 1;
~kickdrumfx = 0;
~drumfx = 1;
~bassline = 1;
~bassfx = 0;
~synthline = 0;
~synthfx = 2;
});
if (~currentPattern == 2, {
//1 more bass
~bassline = 2;
});
if (~currentPattern == 3, {
//hihats
~drumpattern = 2;
});
if (~currentPattern == 4, {
//weird pattern with gabba bass
~drumpattern = 5;
~kickdrumfx = 4;
~drumfx = 2;
~bassline = 2;
~bassfx = 4;
});
if (~currentPattern == 5, {
//back to normal with chugginess
~drumpattern = 3;
~kickdrumfx = 0;
~drumfx = 1;
~bassline = 2;
~bassfx = 0;
});
if (~currentPattern == 6, {
//add synth
~synthline = 1;
});
if (~currentPattern == 7, {
// just synth
~drumpattern = 0;
~bassline = 0;
});
if (~currentPattern == 8, {
//double synth and kick
~drumpattern = 1;
~synthline = 2;
});
if (~currentPattern == 9, {
//add hats
~drumpattern = 2;
});
if (~currentPattern == 10, {
//no drums
~drumpattern = 0;
});
if (~currentPattern == 11, {
// rock!
~drumpattern = 3;
~bassline = 2;
~synthline = 2;
});
if (~currentPattern == 12, {
// no drums
~drumpattern = 0;
});
if (~currentPattern == 13, {
// full on
~drumpattern = 4;
~bassline = 3;
~synthline = 3;
});
if (~currentPattern == 14, {
// cut up synth
~synthfx = 3;
});
if (~currentPattern == 15, {
// wicked synth
~synthfx = 4;
});
if (~currentPattern == 16, {
// slower bassline and only open hats
~drumpattern = 3;
~bassline = 2;
});
if (~currentPattern == 17, {
// only closed hats
~drumpattern = 2;
});
if (~currentPattern == 18, {
// no hats
~drumpattern = 1;
});
if (~currentPattern == 19, {
// no drums, initial bass
~drumpattern = 0;
~bassline = 1;
});
if (~currentPattern == 20, {
// no bass, double synth
~bassline = 0;
~synthline = 2;
});
if (~currentPattern == 21, {
// single synth
~synthline = 1;
});
if (~currentPattern == 22, {
~synthline = 0;
t.stop;
});
};
// --- THE MAIN 'PATTERN' LOOP
t = TempoClock(18);
(
t.clear;
t.schedAbs(t.beats.ceil, { arg beat, sec;
// drum patterns
if (beat % 256==0, {
if (~followSequencer, { ~nextPattern.value; });
Synth(\cymbal,[\out,(~kickdrumfx+9)])
});
if ((~drumpattern>0), {
if (beat % 8==0, {Synth(\kick,[\out,(~kickdrumfx+9)])});
});
if ((~drumpattern==2), {
if (((beat % 2==0) && (rrand(0,3)==0)) || (rrand(0,10)==0), {Synth(\closedhat,[\out,(~drumfx+9)])});
});
if ((~drumpattern==3) || (~drumpattern==4), {
if (beat % 16==8, {Synth(\snare,[\out,(~drumfx+9)])});
if (beat % 8==4, {Synth(\openhat,[\out,(~drumfx+9)])});
});
if ((~drumpattern==4), {
if ((beat % 8==2) || (beat % 8==6) || (beat % 8==0), {Synth(\closedhat,[\out,(~drumfx+9)])});
});
if ((~drumpattern==5), {
if (((beat % 2==0) && (rrand(0,3)==0)) || (rrand(0,10)==0), {Synth(\closedhat,[\out,(~drumfx+9)])});
if (((beat % 4==0) && (rrand(0,3)==0)), {Synth(\openhat,[\out,(~drumfx+9)])});
});
// basslines
if ((~bassline>0), {
if (beat % 8==4, {Synth(\bass,[\freq,55,\out,(~bassfx+9)])});
});
if ((~bassline==2) || (~bassline==3), {
if (beat % 128==126, {Synth(\bass,[\freq,110,\out,(~bassfx+9)])});
});
if ((~bassline==3), {
if (((beat % 8==2) || (beat % 8==6)) && (beat % 128!=126) , {Synth(\bass,[\freq,55,\out,(~bassfx+9)])});
});
// synthlines
if ((~synthline>0), {
if (beat % 8==0, {Synth(\lead,[\freq,220,\out,(~synthfx+9)])});
});
if ((~synthline==2), {
if (((beat % 2==0) && (beat % 8!=0)) || ((beat % 1==0) && (rrand(0,8)==0)), {Synth(\lead2,[\freq,[440,220,110,880,55].choose,\out,(~synthfx+9)])});
});
if ((~synthline==3), {
if (((beat % 2==0) && (beat % 8!=0)) || ((beat % 1==0) && (rrand(0,8)==0)), {Synth(\lead2,[\freq,[440,220,110,880,55].choose,\out,(~synthfx+9)])});
if (((beat % 2==0) && (beat % 8!=0)) || ((beat % 1==0) && (rrand(0,8)==0)), {Synth(\lead2,[\freq,[440,220,110,880,55].choose,\out,(~synthfx+9)])});
});
1; // repeat
});
)
)
// ===== MANUAL SEQUENCER BELOW IF YOU WANT =======
~followSequencer = true;
//1 more bass
~bassline = 2;
//hihats
~drumpattern = 2;
//weird pattern with gabba bass
(
~drumpattern = 5;
~kickdrumfx = 4;
~drumfx = 2;
~bassline = 1;
~bassfx = 4;
)
//normal with chugginess
(
~drumpattern = 3;
~kickdrumfx = 0;
~drumfx = 1;
~bassline = 2;
~bassfx = 0;
)
//add synth
~synthline = 1;
//just synth
(
~drumpattern = 0;
~bassline = 0;
)
//double synth and kick
(
~drumpattern = 1;
~synthline = 2;
)
//add hats
~drumpattern = 2;
//no drums
~drumpattern = 0;
// rock!
(
~drumpattern = 3;
~bassline = 2;
~synthline = 2;
)
// no drums
~drumpattern = 0;
// full on
(
~drumpattern = 4;
~bassline = 3;
~synthline = 3;
)
// cut up synth
~synthfx = 3;
// wicked synth
~synthfx = 4;
// slower bassline and only open hats
(
~drumpattern = 3;
~bassline = 2;
)
// only closed hats
~drumpattern = 2;
// no hats
~drumpattern = 1;
// no drums, initial bass
(
~drumpattern = 0;
~bassline = 1;
)
// no bass, double synth
(
~bassline = 0;
~synthline = 2;
)
// single synth
~synthline = 1;
t.stop;