diff --git a/ark-track-AKJ.scd b/ark-track-AKJ.scd deleted file mode 100644 index aeeeda8..0000000 --- a/ark-track-AKJ.scd +++ /dev/null @@ -1,108 +0,0 @@ -//AKJ to pattern femalemalenonbinary - -( -SynthDef(\akj1, { - arg freq=300, amp=0.1, out=0, gate=1; - var snd, env; - - freq = [freq,freq*1.01]; - - snd = LFPar.ar(freq) * 0.3 - + (LFTri.ar(freq*16/19, mul:0.3)) - + (Pulse.ar(freq*21/40, mul:0.1)) - + (SinOsc.ar(freq/8.01, mul:4).clip2(0.3)); - - - env = Linen.kr(gate, attackTime:1, releaseTime:3, doneAction:2); - snd = Splay.ar(snd); - snd = snd * env * amp; - Out.ar(out, snd); -}).add; -) - -( -SynthDef(\akjbz, { - arg freq=300, amp=0.1, out=0, gate=1; - var snd, env; - - //freq = [freq, freq*2.02, freq*1.98, freq]; - snd = SinOsc.ar(freq/4, mul:0.7)!2; - //snd = snd * [1, 0.1, 0.1, 1]; - snd = snd * Lag.ar(LFPulse.ar(freq/8.02, 0.5).range(1,0),0.005); - snd = snd.softclip(0.5) * 1.5 ; - - env = Linen.kr(gate, 0,1,0, 2); - //snd = (snd + (snd.wrap2 * 0.54)).softclip; - - snd = snd * env * amp; - - Splay.ar(snd); - Out.ar(out, snd); - //LFPulse.ar(0.275, width:0.25).range(0,1); - -}).add -) - -( -SynthDef(\click1, { - arg out=0, gate=1, freq=440, amp=0.1, releaseTime=0.1; - var snd, env; - - snd = LFPulse.ar([freq, freq * 2], width: LFNoise1.ar(0.1).exprange(0.001,0.004)); - snd = snd + (WhiteNoise.ar(1) * snd); - snd = HPF.ar(snd, 200); - //snd = Limiter.ar((snd * 5)); - - env = EnvGen.ar(Env.perc(0,releaseTime)); - - snd = snd * env * amp * Linen.kr(gate, 0, 1, releaseTime, 2); - snd = Splay.ar(snd); - Out.ar(out, snd); -}).add -) - - -// -- disonant chord + click + bazz ------------------------------- -TempoClock.tempo=1 -// disonchord -Pdef(\akj1p).play; -( -Pbindef(\akj1p, *[ - instrument: \akj1, - freq:300, - dur:5, - legato: 1, - amp: 1 -])) -Pdef(\akj1p).stop; - - -// click -Pdef(\clickp).play(quant:4); -Pdef(\clickp).stop(quant:4); -( -Pbindef(\clickp, *[ - instrument: \click1, - dur: Pseq([Pseq([1,2,3]/8, 2), Pseq([1,2,1,2,1,1]/8,3), Pseq([1]/8, 4), Pseq([1]/16, 2), ],inf), - //dur: Pseq([Pn(1/8, 31), Rest(1/8)],inf), - amp: Prand([5,7,8,9]/10, inf), - releaseTime: 0.3, - freq:1 - -]) -) - -// deep bass -- -Pdef(\akjbp).play(quant:4) -( -Pbindef(\akjbp, *[ - instrument: \akjbz, - freq: 300, - dur: 8, - amp: 0.5, - legato: 0.20 -]) -) -Pdef(\akjbp).stop - -// ---------------------------------------------------------------------------- diff --git a/ark-track-SHIPPO.scd b/ark-track-SHIPPO.scd deleted file mode 100644 index dd50229..0000000 --- a/ark-track-SHIPPO.scd +++ /dev/null @@ -1,47 +0,0 @@ -// shippo ------------------------------------------------------ -( -SynthDef(\shippo, { - arg amp=0.1, gate=1, out=0, freq=100; - var snd, env, rev; - freq = [freq/2, freq * 0.99, freq * 1.51]; - snd = Pulse.ar( freq * LFNoise1.ar(1/10).range(1,1.03), mul:0.4 ) - ; //* Lag.ar(LFPulse.ar(1/5, iphase:0.98, width:0.1)); - snd = Splay.ar(snd,spread:0.6); - snd = LPF.ar(snd, LFNoise1.ar(1/4).exprange(500,10000)); - env = EnvGen.kr(Env.adsr(0.001,0,1, 0.1, 1), gate, doneAction:0); - snd = snd * env; - snd = snd; - rev = Array.fill (16, { - CombL.ar( - snd, - 0.2, - LFNoise1.ar(1/3).range(0.98,1.02) * rrand(0.01, 0.3), - 10) - }); - rev = Splay.ar(rev); - rev = LeakDC.ar(rev); - rev = HPF.ar(rev, 100); - snd = snd + rev; - snd = Limiter.ar(snd, 0.8); - snd = snd * amp; - DetectSilence.ar(snd, doneAction:2); - Out.ar(out, snd); -}).add; -) - - -~clksh = TempoClock.new(1); -Pdef(\shippoP).play(~clksh); -Pdef(\shippoP).stop; -( -Pbindef(\shippoP, *[ - instrument: \shippo, - degree: 4, - octave: 3, - dur: Pseq([1,2,3], inf), - legato:0.2, - amp: 0.5 -]); -) -Pdef(\shippoP).clear - diff --git a/ark-track-s1-distorted-drone.scd b/ark-track-s1-distorted-drone.scd deleted file mode 100644 index 8a3f311..0000000 --- a/ark-track-s1-distorted-drone.scd +++ /dev/null @@ -1,38 +0,0 @@ -Pdef(\s2).play -( -Pbindef(\s2, - \instrument, \bap, - \degree, -1, - \dur, 2, - \octave, [2,3], - \amp, 0.9, - \legato, 1, - // needs wrangled delay! - \out, ~wranglerBus, - \dlywet, Pstutter(8, Pfunc({~dlywrang1.set(\wet, rrand(0, ((3..6) * 0.1).choose ) ) })), - - \d1, Prand((1..5),inf), - \d2, Prand((1..5),inf), - \d3, 5, - \ffreq, 460 -) -) -Pdef(\s2).stop - - -SynthDef(\bap, { - arg freq=440, gate=1, out=0, amp=0.1, d1 = 5, d2 = 1, d3=5, ffreq=200; - var snd = Saw.ar([freq, freq*1.01]); - var env = Linen.kr(gate, releaseTime: 0.1, doneAction:2); - snd = snd + SinOsc.ar([freq*0.99, freq]); - snd = snd + Pulse.ar([freq*0.99, freq]); - - snd = snd.clip2(LFNoise1.ar(0.3).range(0.3,0.8)) * d1; - snd = snd.wrap2(LFNoise1.ar(0.3).range(0.3,0.8)) * d2; - snd = snd.fold2(LFNoise1.ar(0.3).range(0.3,0.8)) * d3; - snd = LeakDC.ar(snd); - snd = LPF.ar(snd, ffreq); - snd = Limiter.ar(snd); - snd = Splay.ar(snd); - Out.ar(out, snd*env*amp); -}).add; \ No newline at end of file diff --git a/ark-track-twoChPad.scd b/ark-track-twoChPad.scd deleted file mode 100644 index 743d153..0000000 --- a/ark-track-twoChPad.scd +++ /dev/null @@ -1,49 +0,0 @@ -( -SynthDef(\twoChPad, { - arg out=0, gate=1, amp=1, alag=10; - var sum, snd0, snd1, snd2, env, gen, faderosc, numosc; - - numosc = 10; - env = Env.adsr(20, 0, 1, 30, 1, \sin); - gen = EnvGen.kr(env, gate, doneAction:2); - - faderosc = SinOsc.ar(1/60).range(-1,2).min(1).max(0); - - snd0 = Array.fill(numosc, { - var freq, local; - freq = [100,150,300,400] * 0.5; - local = Saw.ar(rrand(freq, freq * 1.03 ) * LFNoise1.kr(0.3).range(1, 1.03), -10.dbamp); - local = Mix(local); - }); - snd0 = Splay.ar(snd0); - snd0 = faderosc * snd0; - snd0 = LPF.ar(snd0, LFNoise1.ar(0.06).exprange(300,10000)); - snd0 = CombL.ar(snd0, 1, LFNoise1.ar(0.05).range([0.5,0.65],[0.53,0.68]), 15, -1.dbamp) + snd0; - - snd1 = Array.fill(numosc, { - var freq, local; - freq = [100,150,300,400] * 0.8; - local = Saw.ar(rrand(freq, freq * 1.03 ) * LFNoise1.kr(0.3).range(1, 1.03), -10.dbamp); - local = Mix(local); - }); - snd1 = Splay.ar(snd1); - snd1 = (0-faderosc+1) * snd1; - snd1 = LPF.ar(snd1, LFNoise1.ar(0.07).exprange(300,10000)); - snd1 = CombL.ar(snd1, 1, LFNoise1.ar(0.05).range([0.77,0.65],[0.80,0.68]), 15, -1.dbamp) + snd1; - - snd2 = WhiteNoise.ar * LFPulse.ar(0.06, width:0.02) * -25.dbamp; - snd2 = HPF.ar(snd2, 2000); - snd2 = snd2 + Dust.ar(LFNoise1.ar(0.1).range(1,100), mul:0.2); - - sum = snd0 + snd1; - sum = sum * gen + snd2; - sum = sum * Lag.kr(amp, alag); - Out.ar(out, sum); -}).add; -); - - -~twoChPad = Synth(\twoChPad); -~twoChPad.set(\amp, 1.5) -~twoChPad.set(\amp, 1) -~twoChPad.release(30); diff --git a/ark_d.scd b/ark_d.scd index 07eed37..5c86789 100644 --- a/ark_d.scd +++ b/ark_d.scd @@ -226,7 +226,7 @@ Server.default.waitForBoot { ~softSawAmpBusLiner.set(\lag, 0, \val, 0); wait(0.5); - ~softSawAmpBusLiner.set(\lag, 20, \val, 0.8); + ~softSawAmpBusLiner.set(\lag, 20, \val, 1); wait(0.5); // -- @@ -267,7 +267,7 @@ Server.default.waitForBoot { ~greyholeVerb.set(*[revWet:0.7, feedback:0.7, lag:10, dtime:0.1, size:5, diff:0.707 ]); - ~softSawAmpBusLiner.set(\lag, 20, \val, 0.5); + ~softSawAmpBusLiner.set(\lag, 20, \val, 0.7); 30.wait; @@ -415,12 +415,7 @@ Server.default.waitForBoot { 2.wait; Pbindef(\prand, \amp, -7.dbamp); 2.wait; Pbindef(\prand, \amp, -8.dbamp); 2.wait; Pbindef(\prand, \amp, -9.dbamp); - 2.wait; Pbindef(\prand, \amp, -10.dbamp); - 2.wait; Pbindef(\prand, \amp, -11.dbamp); - 2.wait; Pbindef(\prand, \amp, -12.dbamp); - 2.wait; Pbindef(\prand, \amp, -13.dbamp); - 2.wait; Pbindef(\prand, \amp, -14.dbamp); - 2.wait; Pbindef(\prand, \amp, -15.dbamp); + 10.wait; Pbindef(\prand).stop; @@ -1189,20 +1184,3 @@ Server.default.waitForBoot { }; ); - - - - - - -// debug/meter -s.meter; s.scope(2); -s.plotTree; - - - - - - - - diff --git a/init.scd b/init.scd index 473bfa8..6c4cea5 100644 --- a/init.scd +++ b/init.scd @@ -39,4 +39,4 @@ libPath.filesDo({|afile| this.executeFile(afile.fullPath); }); -"\n\n=== \n".postln; \ No newline at end of file +//"\n\n=== \n".postln; \ No newline at end of file diff --git a/lib/patterns.scd b/lib/patterns.scd index e69de29..2f5dedd 100644 --- a/lib/patterns.scd +++ b/lib/patterns.scd @@ -0,0 +1,148 @@ +// patterns definitions + + +// AKJ ----------------------------------------------------------------------------------- +Pbindef(\akjDisChordp, *[ + instrument: \akjDisChord, + freq:300, + dur:5, + legato: 1, + amp: 1 +]); + +Pbindef(\akjClickp, *[ + instrument: \akjClick, + dur: Pseq([Pseq([1,2,3]/8, 2), Pseq([1,2,1,2,1,1]/8,3), Pseq([1]/8, 4), Pseq([1]/16, 2), ],inf), + //dur: Pseq([Pn(1/8, 31), Rest(1/8)],inf), + amp: Prand([5,7,8,9]/10, inf), + releaseTime: 0.3, + freq:1 + +]); + +Pbindef(\akjBazp, *[ + instrument: \akjBaz, + freq: 300, + dur: 8, + amp: 0.5, + legato: 0.20 +]); + + + +// SHIPPO --------------------------------------------------------------------------------- +Pbindef(\shippoP, *[ + instrument: \shippo, + degree: 4, + octave: 3, + dur: Pseq([1,2,3], inf), + legato:0.2, + amp: 0.5 +]); + + + +// DISTORTED DRONE +Pbindef(\s1DistP, + \instrument, \s1Dist, + \degree, -1, + \dur, 2, + \octave, [2,3], + \amp, 0.9, + \legato, 1, + // needs wrangled delay! + \out, ~wranglerBus, + \dlywet, Pstutter(8, Pfunc({~dlywrang1.set(\wet, rrand(0, ((3..6) * 0.1).choose ) ) })), + + \d1, Prand((1..5),inf), + \d2, Prand((1..5),inf), + \d3, 5, + \ffreq, 460 +); + + +// lorenz pattern --------------------------- + +~dotsP = Pbind( + \dur, Pflatten(1, Plorenz() * 1), + \attack, 0.01, + \octave, 3, + \nharms, Prand((2..7),500) ); + +~linesP = Pbind( + \dur, Pflatten(1, Plorenz() * 5), + \attack, 3, + \octave, Prand([2,3,4],inf), + \nharms, Prand((1..4),80), + \amp, 0.075 ); + +~highP = Pbind( + \dur, Pflatten(1, Plorenz() * 5), + \attack, 3, + \octave, 5, + \nharms, Prand((1..3),50), + \amp, 0.008 ); + + +// gcd mod --------------------------------------------------------- +Pbindef(\n1, + \instrument, \dNoz, + \dur, Pseq([20,Rest(10)],inf), + \amp, 0.5, + \legato, 1, +); + + +Pdef(\gcdkick, { + Pbind(*[ + instrument: \tribd, + dur: Pseq([ + Rest(32), + Pseq( + [ + Prand( [ Pseq([1.5,1.5]), 3 ] ), + 3, + Prand([ + 4, + Pn(1,3), + Pn(Pseq([1/2,1,Prand([1/2,1.5])]),1) + ]) + ] / 2, 32) + ],inf), + //dur: 1, + //dur: Pseq([1.5,1,1.5,1/2,2,1/2,1.5,1/2,1/4,1/2,1/4,3],inf), + freq:77 + Prand((1..10)/5, inf), + octave:2, + amp:0.1 + ]) +};); + + +// be back lighter ------------------------------------------- + +Pbindef(\prand, + //Pdef(\prand, + \midinote, Prout({ + var tone0, tone1, tone2, interval, freq0, delta; + loop { + tone0 = rrand(0,11); + interval = rrand(2,4); + tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12,24].choose + 0.1; + tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12,24].choose; + //freq0 = [tone1,tone2]+47; + //freq0 = [tone1,tone2]+52; + freq0 = [tone1,tone2] + 52; + //postln(freq0); + freq0.yield; + } + }) - Pstutter(4, Prand([0,1] * 12,inf)), + \dur, Prand([1,2,4,8,12,16,4,6,8], inf) / 20, + //\ctranspose, Pstutter(64, Pxrand([-5,0,7],inf)), + \ctranspose, 0, + \instrument, \param, + \amp, 0.4, + \sustain, 1, + \out, ~verbDelayBus +); + + diff --git a/lib/synthdefs.scd b/lib/synthdefs.scd index e69de29..5104cd1 100644 --- a/lib/synthdefs.scd +++ b/lib/synthdefs.scd @@ -0,0 +1,327 @@ +// synth definitions + +// AKJ -------------------------------------------------------- +SynthDef(\akjDisChord, { + arg freq=300, amp=0.1, out=0, gate=1; + var snd, env; + + freq = [freq,freq*1.01]; + + snd = LFPar.ar(freq) * 0.3 + + (LFTri.ar(freq*16/19, mul:0.3)) + + (Pulse.ar(freq*21/40, mul:0.1)) + + (SinOsc.ar(freq/8.01, mul:4).clip2(0.3)); + + + env = Linen.kr(gate, attackTime:1, releaseTime:3, doneAction:2); + snd = Splay.ar(snd); + snd = snd * env * amp; + Out.ar(out, snd); +}).add; + +SynthDef(\akjBaz, { + arg freq=300, amp=0.1, out=0, gate=1; + var snd, env; + + //freq = [freq, freq*2.02, freq*1.98, freq]; + snd = SinOsc.ar(freq/4, mul:0.7)!2; + //snd = snd * [1, 0.1, 0.1, 1]; + snd = snd * Lag.ar(LFPulse.ar(freq/8.02, 0.5).range(1,0),0.005); + snd = snd.softclip(0.5) * 1.5 ; + + env = Linen.kr(gate, 0,1,0, 2); + //snd = (snd + (snd.wrap2 * 0.54)).softclip; + + snd = snd * env * amp; + + Splay.ar(snd); + Out.ar(out, snd); + //LFPulse.ar(0.275, width:0.25).range(0,1); + +}).add; + +SynthDef(\akjClick, { + arg out=0, gate=1, freq=440, amp=0.1, releaseTime=0.1; + var snd, env; + + snd = LFPulse.ar([freq, freq * 2], width: LFNoise1.ar(0.1).exprange(0.001,0.004)); + snd = snd + (WhiteNoise.ar(1) * snd); + snd = HPF.ar(snd, 200); + //snd = Limiter.ar((snd * 5)); + + env = EnvGen.ar(Env.perc(0,releaseTime)); + + snd = snd * env * amp * Linen.kr(gate, 0, 1, releaseTime, 2); + snd = Splay.ar(snd); + Out.ar(out, snd); +}).add; + + +// SHIPPO ----------------------------------------------------------- + +SynthDef(\shippo, { + arg amp=0.1, gate=1, out=0, freq=100; + var snd, env, rev; + freq = [freq/2, freq * 0.99, freq * 1.51]; + snd = Pulse.ar( freq * LFNoise1.ar(1/10).range(1,1.03), mul:0.4 ) + ; //* Lag.ar(LFPulse.ar(1/5, iphase:0.98, width:0.1)); + snd = Splay.ar(snd,spread:0.6); + snd = LPF.ar(snd, LFNoise1.ar(1/4).exprange(500,10000)); + env = EnvGen.kr(Env.adsr(0.001,0,1, 0.1, 1), gate, doneAction:0); + snd = snd * env; + snd = snd; + rev = Array.fill (16, { + CombL.ar( + snd, + 0.2, + LFNoise1.ar(1/3).range(0.98,1.02) * rrand(0.01, 0.3), + 10) + }); + rev = Splay.ar(rev); + rev = LeakDC.ar(rev); + rev = HPF.ar(rev, 100); + snd = snd + rev; + snd = Limiter.ar(snd, 0.8); + snd = snd * amp; + DetectSilence.ar(snd, doneAction:2); + Out.ar(out, snd); +}).add; + + + +// S1 DISTORTED DRONE ----------------------------------------------------- +SynthDef(\s1Dist, { + arg freq=440, gate=1, out=0, amp=0.1, d1 = 5, d2 = 1, d3=5, ffreq=200; + var snd = Saw.ar([freq, freq*1.01]); + var env = Linen.kr(gate, releaseTime: 0.1, doneAction:2); + snd = snd + SinOsc.ar([freq*0.99, freq]); + snd = snd + Pulse.ar([freq*0.99, freq]); + + snd = snd.clip2(LFNoise1.ar(0.3).range(0.3,0.8)) * d1; + snd = snd.wrap2(LFNoise1.ar(0.3).range(0.3,0.8)) * d2; + snd = snd.fold2(LFNoise1.ar(0.3).range(0.3,0.8)) * d3; + snd = LeakDC.ar(snd); + snd = LPF.ar(snd, ffreq); + snd = Limiter.ar(snd); + snd = Splay.ar(snd); + Out.ar(out, snd*env*amp); +}).add; + + +// twoChPad ----------------------------------------------------------------------------------- +SynthDef(\twoChPad, { + arg out=0, gate=1, amp=1, alag=10; + var sum, snd0, snd1, snd2, env, gen, faderosc, numosc; + + numosc = 10; + env = Env.adsr(20, 0, 1, 30, 1, \sin); + gen = EnvGen.kr(env, gate, doneAction:2); + + faderosc = SinOsc.ar(1/60).range(-1,2).min(1).max(0); + + snd0 = Array.fill(numosc, { + var freq, local; + freq = [100,150,300,400] * 0.5; + local = Saw.ar(rrand(freq, freq * 1.03 ) * LFNoise1.kr(0.3).range(1, 1.03), -10.dbamp); + local = Mix(local); + }); + snd0 = Splay.ar(snd0); + snd0 = faderosc * snd0; + snd0 = LPF.ar(snd0, LFNoise1.ar(0.06).exprange(300,10000)); + snd0 = CombL.ar(snd0, 1, LFNoise1.ar(0.05).range([0.5,0.65],[0.53,0.68]), 15, -1.dbamp) + snd0; + + snd1 = Array.fill(numosc, { + var freq, local; + freq = [100,150,300,400] * 0.8; + local = Saw.ar(rrand(freq, freq * 1.03 ) * LFNoise1.kr(0.3).range(1, 1.03), -10.dbamp); + local = Mix(local); + }); + snd1 = Splay.ar(snd1); + snd1 = (0-faderosc+1) * snd1; + snd1 = LPF.ar(snd1, LFNoise1.ar(0.07).exprange(300,10000)); + snd1 = CombL.ar(snd1, 1, LFNoise1.ar(0.05).range([0.77,0.65],[0.80,0.68]), 15, -1.dbamp) + snd1; + + snd2 = WhiteNoise.ar * LFPulse.ar(0.06, width:0.02) * -25.dbamp; + snd2 = HPF.ar(snd2, 2000); + snd2 = snd2 + Dust.ar(LFNoise1.ar(0.1).range(1,100), mul:0.2); + + sum = snd0 + snd1; + sum = sum * gen + snd2; + sum = sum * Lag.kr(amp, alag); + Out.ar(out, sum); +}).add; + + +// LCM noise ----------------------------------------------------------------- + +Ndef(\lcmnoise, { + arg amp1=0, amp2=1; + var snd, revchain; + snd = [ + tanh(lcm(SinOsc.ar( + LFNoise0.kr(LFNoise0.kr(1/10).exprange(0.1,1)).exprange(1,15000) + ).range(-100,100).round(1),SinOsc.ar( + LFNoise0.kr(LFNoise0.kr(1/10).exprange(0.1,1)).exprange(1,15000) + ).range(-100,100).round(1))*0.0001), + tanh(lcm(Saw.ar( + LFNoise0.kr(LFNoise0.kr(1/10).exprange(0.1,1)).exprange(1,15000) + ).range(-100,100).round(1),LFCub.ar( + LFNoise0.kr(LFNoise0.kr(1/10).exprange(0.1,1)).exprange(1,15000) + ).range(-100,100).round(1))*0.0001) + ] ; + snd = BHiPass.ar(snd, 180); + snd = snd.softclip * 0.8; + snd = Splay.ar(snd, spread:1); + revchain = snd * Lag.ar( + in: LFPulse.ar( + freq: LFNoise0.ar(1).exprange(0.01,2), + width: 0.001), + lagTime: 0.1) + * LFNoise1.ar(1).range(10,10000); + + revchain = Greyhole.ar( + in: revchain, + delayTime: LFNoise1.ar(1).range(0.0001,0.2), + damp: 0.5, + size: LFNoise1.ar(0.1).exprange(0.0001,5), + feedback: 0.95); + + revchain = LeakDC.ar(revchain); + revchain = Limiter.ar(revchain) * LFNoise1.ar([1,1]).range(0,0.9); + snd = snd * LFNoise0.ar([0.9,0.8]).range(0,2); + snd = (snd * amp1) + (revchain * amp2); + snd = snd.softclip * 0.8; + //snd = LPF.ar(snd.softclip, LFNoise1.ar(0.1).exprange(10000,20000)) * 0.8; +}); + + +// ------------------------------- + +SynthDef(\param, { arg freq = 100, sustain, amp, out=0; + var sig; + sig = LFPar.ar(freq: freq, + mul: EnvGen.kr(Env.perc(0, sustain, 0.5), doneAction:2) * amp); + sig = Splay.ar(sig); + Out.ar(out, sig); +}).add; + +// ------------------------------- + +SynthDef(\blipo, { | out, freq = 440, amp = 0.1, nharms = 10, pan = 0, gate = 1, sustain, attack=0.1 | + var audio = Blip.ar(freq * (SinOsc.kr(3).range(1,1.01)), nharms, amp); + var env = Linen.kr(gate, attackTime: attack, releaseTime: sustain, doneAction: Done.freeSelf); + OffsetOut.ar(out, Pan2.ar(audio, pan, env) ); +}).add; + +// ------------------------------- + +Ndef(\gcdmod, { + var a = TDuty.ar(Dseq((0..3), inf) + 5 * SampleDur.ir); + var b = TDuty.ar(Dseq((3..0), inf) + 5.01 * SampleDur.ir); + var mod = 50; + var t = PulseCount.ar(a) % mod; + var u = PulseCount.ar(b) % mod; + var n, j, d, e, c; + + d = LocalIn.ar(2); + n = gcd(t, u + [0, 1]); + e = n.linexp(0, mod, 70, 10000); + j = SinOsc.ar(e); + LocalOut.ar(j * d); + c = CombC.ar(j, 1, [0.009,0.007,0.008, 0.006] * LFNoise1.ar([0.01,0.01]).range(1.3,0.7), 30, mul:0.05); + j = j * LFNoise1.ar(0.2).range(0,0.5) + Splay.ar(c); + j = Greyhole.ar(j, damp:0.5, diff:0.5 size:4); + j = Limiter.ar(LPF.ar(HPF.ar(j, 100), LFNoise1.kr(0.1).exprange(200,18000)), 0.5, 0.55); + j = j * LFPulse.ar([2.2,4.4]*2, 0.96, width:LFNoise1.ar(0.2).range(0.8,0.95)).range(LFNoise1.ar(0.1).range(0,1),1); + j = j + LFPulse.ar([2.2,4.4], 0.96, mul: LFNoise1.kr(1/10).range(0,0.5) * Line.kr(0,1,30)); + j = LeakDC.ar(j); + + // Out.ar(0, j * EnvGate()) +}); + +// low rumble 0 ------------------------------------ +SynthDef(\dNoz, { + arg out=0, gate=1, amp=0.1, envattackTime=0.001, release=0.001; + var snd, env; + env = Linen.kr(gate, envattackTime, 1, release, doneAction:2); + snd = WhiteNoise.ar(1); + snd = snd + SinOsc.ar(SinOsc.kr(10).range(40,60), mul:0.2); + snd = snd + Pulse.ar(SinOsc.kr(12).range(40,60), mul:0.1); + snd = snd.clip2(0.8); + + snd = LPF.ar(snd, LFNoise2.ar(0.4).range(60,100), mul:3); + + snd = snd.dup; + snd[1] = DelayL.ar(snd[1], 0.05, SinOsc.kr(0.2).range(0.001,0.003)); + snd = snd * env * amp; + Out.ar(out, snd); + +}).add; +// "LFTri bass drum kick" - by luka@lukaprincic.si +SynthDef(\tribd, { + arg out=0, gate=1, freq=77, amp=0.1; + var snd,snd1, aenv, fenv, senv; + + fenv = Env(levels:[2, 1.2, 0], times: [0.1, 0.4]).kr; + freq = [freq,freq*2] * fenv; + freq = freq.max(10); + + snd = LFTri.ar(freq) + SinOsc.ar(freq) * [1,0.3]; + snd1 = SinOsc.ar(190, mul:3) * EnvGen.ar(Env.perc(releaseTime:0.1), gate) ; + snd = snd.sum * 0.9; + snd = LPF.ar(snd, freq * 4); + + snd = snd + RLPF.ar( BrownNoise.ar(1), + Env(levels:[2000,500,90], times:[0.01,0.05]).kr, 0.3 ); + + snd = snd + ( BPF.ar(WhiteNoise.ar(0.5), 3000) + * Env([1,1,0], [0.004,0.005]).kr ); + snd = snd + ( BPF.ar(WhiteNoise.ar(0.5), 7000) + * Env([1,1,0], [0.003,0.001]).kr ); + + aenv = Env([1,1,0], [0.2,2], curve: -9).kr; + snd = snd1 + snd * aenv; + snd = Limiter.ar(snd, 8); + + senv = Linen.kr(releaseTime: 0.1, gate: gate, doneAction: Done.freeSelf); + snd = LeakDC.ar(snd); + snd = snd * amp * senv; + snd = Pan2.ar(snd, pos:0); + snd = snd.clip2; + Out.ar(out, snd); +}).add; + + +// ------------------------------------------------------------------- +// reverb effect SynthDef +SynthDef("reverbo", { arg outBus = 0, inBus, wet = 0.1; + var input = In.ar(inBus,2); + var rev = JPverb.ar(input * wet, t60:6, damp:0.5); + Out.ar(outBus, input + (rev)); +}).add; + + +SynthDef(\verbDelayFX, { + arg inBus, outBus, revWet=0.8, dlyWet=0.8, feedback = 0.5, lag = 10 ; + + var snd = In.ar(inBus, 2); + var verb = JPverb.ar(snd); + var delay = Greyhole.ar(snd, feedback: feedback); + revWet = Lag.kr(revWet, lag); + dlyWet = Lag.kr(dlyWet, lag); + snd = snd + (verb * revWet) + (delay * dlyWet) * 0.5; + + Out.ar(outBus, snd); +}).add; + + +SynthDef(\dlywrangler, { + arg out=0, in, wet=0.1; + var snd, dly2; + snd = In.ar(in,2); + dly2 = CombN.ar(HPF.ar(snd,300), 1, [0.5,0.77], 5, mul:LFNoise1.kr(0.1).range(0.8,0.3)); + snd = CombN.ar(snd, 1, Lag.ar(LFNoise0.ar(1).range(0.01,0.1),0.1), 3, mul:wet) + snd; + snd = Limiter.ar(snd, 0.8); + snd = snd + dly2; + Out.ar(out, snd); +}).add; \ No newline at end of file