diff --git a/LOG.md b/LOG.md index bd7c6bd..18e543b 100644 --- a/LOG.md +++ b/LOG.md @@ -161,4 +161,4 @@ That was about 3.5 hours of work today. I feel I'm far from something musically - -## \ No newline at end of file +## diff --git a/SCLang_Workspace_20200413.scd b/SCLang_Workspace_20200413.scd new file mode 100644 index 0000000..82aab5c --- /dev/null +++ b/SCLang_Workspace_20200413.scd @@ -0,0 +1,289 @@ +// ===================================================================== +// SuperCollider Workspace +// ===================================================================== + +( +SynthDef("kick1", {arg out = 0, amp = 0.3, sinFreq = 60, glissf = 0.9, att = 0.01, rel = 0.45, pan = 0; + var gliss = XLine.kr(sinFreq, sinFreq*glissf, rel); + var snd = SinOsc.ar(gliss); + var env = Env.perc(att, rel).kr(doneAction: 2); + snd = snd * env * amp; + Out.ar(out, Pan2.ar(snd, pan)); +}, +metadata: ( + credit: "Bruno Tucunduva Ruviaro", + category: \drums, + tags: [\percussion, \kick] +) +).add; + +/* Recieved from +https://github.com/supercollider-quarks/SynthDefPool/blob/master/pool/kick_chrp.scd +A kick made using what radio folks would call a "chirp" +Modified by Bruno Ruviaro and Josh Mitchell 8/19. +*/ + +SynthDef(\kick_chirp, { + + arg out = 0, amp = 0.1, pan = 0, curve = -20, att = 0.001, rel = 0.5, maxFreq = 500; + + var env, snd; + + env = Env.perc(attackTime: att, releaseTime: rel, curve: curve).exprange(0, maxFreq).kr(doneAction: 2); + + snd = SinOsc.ar(freq: env, mul: amp); + snd = LeakDC.ar(snd); + +Out.ar(out, Pan2.ar(snd, pan)) +}, +metadata: ( + credit: "Original by dan stowell. public domain", + category: \drums, + tags: [\kick, \drum, \percussion, \chirp] + ) +).add; + +SynthDef("hihat1", {arg out = 0, amp = 0.5, att = 0.01, rel = 0.2, ffreq = 6000, pan = 0; + var snd = WhiteNoise.ar(amp); + var env = Env.perc(att, rel).kr(doneAction: 2); + snd = HPF.ar(snd * env, ffreq); + Out.ar(out, Pan2.ar(snd, pan)); +}, +metadata: ( + credit: "Bruno Tucunduva Ruviaro", + category: \drums, + tags: [\percussion, \hihat] +) +).add; +) + + +TempoClock.default.tempo = 90/60; +Ndef(\kick).play +Ndef(\kick).stop +Ndef(\kick).proxyspace.quant = 8; +Ndef(\kick).proxyspace.tempo = 90; +Ndef(\kick).fadeTime = 0.001; + +( + +Ndef(\kick, + + Ppar([ + Pbind( \instrument, \kick1, + //\dur, Pseq([1.5,1,1.5], inf), + \dur, Pseq([0.75,0.75, 0.5], inf), + \rel, 1, + \glissf, 0.6, + \amp, 0.8 + ), + Pbind( \instrument, \kick_chirp, + \dur, Pseq([0.75, 1, 0.75, 0.25],inf), + \dur, Prand([ + Pseq([0.75, 0.5, 0.75]), + Pseq([0.75, 0.75, 0.5]), + Pseq([0.75, 0.75, 0.25,0.25]), + Pseq([0.75, 0.25,0.25, 0.75]), + Pseq([0.75, 0.25,0.75, 0.25]), + Pseq([0.75, 0.25, 0.5, 0.5]), + //Pseq([0.25],8), + //Pseq([0.5],4), + Pseq([1],2), + ], inf), + \amp, 0.02 + ), + Pbind(\instrument, \hihat1, + \dur, Pseq([Rest(0.27),0.23,0.25,0.25], inf), + \amp, Pseq([0, 0.04,0.09,0.01], inf) , + \ffreq, 10000, + ), + Pbind(\instrument, \hihat1, + \dur, Pseq([Pseq([0.26,0.24],7),Prand([1/8,Rest(1/8)]), 1/8],inf), + \amp, Pseq([0.01,0.02], inf) , + \ffreq, 5000 + ),inf + ]) + +) +) + + + + + + + + + + +/////////////////////////////////////////////////////////////////////////////////////////////////// + + + + +( +{ + EnvGen.kr( + Env([0, 1, 0, 0.2, 0, 0.5, 0.8, 0], [0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01], releaseNode: 5, loopNode: 1), + gate: Trig.kr(1, 3.9) + ); +}.plot(duration: 4) +) + + + + + +( // synthdefi +SynthDef(\monitorInput, { + arg out = 0; + var snd = SoundIn.ar([0,1], 1); + Out.ar(out,snd); +}).play; +) + +Ndef(\ndefMonIn).play +Ndef(\ndefMonIn).fadeTime = 10; +( +Ndef(\ndefMonIn, { + var snd = SoundIn.ar([0,1], 1); + + snd*0.5; +}).fadeTime = 10; +) + +// Execute the following in order +( +// allocate a Buffer +s = Server.local; +b = Buffer.alloc(s, 44100 * 4.0, 1); // a four second 1 channel Buffer +) + +// record for four seconds +( +SynthDef(\help_RecordBuf, { arg out = 0, bufnum = 0; + var snd = SoundIn.ar(0,1); + RecordBuf.ar(snd, bufnum, doneAction: Done.freeSelf, loop: 0); + +}).play(s,[\out, 0, \bufnum, b]); +) + +// play it back +( +SynthDef(\help_RecordBuf_playback, { arg out = 0, bufnum = 0; + var playbuf; + playbuf = PlayBuf.ar(1,bufnum); + FreeSelfWhenDone.kr(playbuf); // frees the synth when the PlayBuf is finished + Out.ar(out, playbuf); +}).play(s, [\out, 0, \bufnum, b]); +) +b.plot + +// overdub +( +SynthDef(\help_RecordBuf_overdub, { arg out=0, bufnum=0; + var formant; + formant = Formant.ar(XLine.kr(200, 1000, 4), 2000, 800, 0.125); + // mixes equally with existing data + RecordBuf.ar(formant, bufnum, 0, 0.3, 0.5, doneAction: Done.freeSelf, loop: 0); +}).play(s, [\out, 0, \bufnum, b]); +) + +// play back the overdubbed version +Synth.new(\help_RecordBuf_playback, [\out, 0, \bufnum, b], s); + +// write the contents of the buffer to a file (see Buffer for more options) +( +b.write(sampleFormat: 'int16'); +thisProcess.platform.recordingsDir +/+ "SC_" ++ Date.localtime.stamp ++ ".aiff"; // generated path +) + +b.close; b.free; // cleanup + +Ndef(\bgrain).play + +Ndef(\bgrain).fadeTime = 10; + +( +Ndef(\bgrain, { |gate = 1, amp = 0, sndbuf, freq=90| + var snd, pan, env, freqdev; + // use mouse x to control panning + //pan = MouseX.kr(-1, 1); + pan = LFNoise1.kr(0.1).range(-1, 1) * LFNoise0.kr(freq).range(0.2,1); + env = EnvGen.kr( + Env([0, 1, 0], [1, 1], \sin, 1), + gate, + levelScale: amp, + doneAction: Done.freeSelf); + + snd = GrainBuf.ar( + numChannels:2, + trigger:Impulse.kr(LFNoise1.kr(freq).range(0.8,1) * freq), + dur: 0.2, + sndbuf: b, + rate: 1 * LFNoise1.kr.range(0.99, 1), + pos: LFNoise2.kr(0.1).range(0, 1) * LFNoise0.kr(freq).range(1,1.01), + interp: 2, + pan: pan) * env; + + snd = RLPF.ar(snd, freq: LFNoise2.kr(0.1).exprange(400,10000)); + + //snd = snd + (Greyhole.ar(snd, delayTime: 0.4,feedback: 0.4 ) * 0.8); +}); +) + + + +c = Buffer.alloc(s, 44100 * 4.0, 1); // a four second 1 channel Buffer +// record for four seconds +( +SynthDef(\help_RecordBuf, { arg out = 0, bufnum = 0; + var snd = SoundIn.ar(0,1); + RecordBuf.ar(snd, bufnum, doneAction: Done.freeSelf, loop: 0); + +}).play(s,[\out, 0, \bufnum, c]); +) + +Ndef(\bgrain2).play; +Ndef(\bgrain2).fadeTime = 3; +( +Ndef(\bgrain2, { |gate = 1, amp = -6.db, sndbuf, freq=90| + var snd, pan, env, freqdev; + // use mouse x to control panning + //pan = MouseX.kr(-1, 1); + pan = LFNoise1.kr(0.1).range(-1, 1) * LFNoise0.kr(freq).range(0.2,1); + env = EnvGen.kr( + Env([0, 1, 0], [5, 1], \sin, 1), + gate, + //levelScale: amp, + doneAction: Done.freeSelf); + + snd = GrainBuf.ar( + numChannels:2, + trigger:Impulse.kr(LFNoise1.kr(freq).range(0.8,1) * freq), + dur: 0.2, + sndbuf: c, + rate: 1 * LFNoise1.kr.range(0.99, 1), + pos: LFNoise2.kr(0.03).range(0, 1) * LFNoise0.kr(freq).range(1,1.01), + interp: 2, + pan: pan) * env; + + snd = RLPF.ar(snd, freq: LFNoise2.kr(0.1).exprange(100,7000)) * amp; + + //snd = snd + (Greyhole.ar(snd, delayTime: 0.4,feedback: 0.4 ) * 0.8); +}); +) + + +Ndef(\ba).play(~reverBus, addAction: \addToHead) + +~reverbDelay = Synth(\verbDelayFX, [\inBus, ~reverBus, \outBus, 0], addAction: \addAfter); +~reverbDelay.set(\revWet, 1); +~reverbDelay.set(\dlyWet, 1); +~reverbDelay.free +////////////////////////////////////////////////////////////////////////////////////////////// + + +Quarks.gui + +SynthDefPool.gui diff --git a/ark-track-AKJ.scd b/ark-track-AKJ.scd new file mode 100644 index 0000000..aeeeda8 --- /dev/null +++ b/ark-track-AKJ.scd @@ -0,0 +1,108 @@ +//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-GCDFEEDMODSIN.scd b/ark-track-GCDFEEDMODSIN.scd new file mode 100644 index 0000000..06aa6b8 --- /dev/null +++ b/ark-track-GCDFEEDMODSIN.scd @@ -0,0 +1,146 @@ +// +/////////////////////////////////////////////////////////////////////////////////////////////// +// GCD SINMODFEED ///////////////////////////////////////////////////////////////////////////////////////// +// feedback of modulated SinOsc + +// 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; +); + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////// +( +~clk3 = TempoClock.new(2.2); +//~myClock = TempoClock.new(2.2); + +//~clk3 = TempoClock.tempo= 2.2 / 1; +{ // routine starts here + 1.wait; + Ndef(\gcdmod).proxyspace.clock = ~clk3; + Ndef(\gcdmod).proxyspace.quant = 1; + 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()) + }); + + Ndef(\gcdkick).proxyspace.clock = ~clk3; + Ndef(\gcdkick).proxyspace.quant = 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 + ]) + };); + Ndef(\gcdkick).mold(2, \audio, \elastic); + Ndef(\gcdkick)[0] = Pdef(\gcdkick); + + + Pbindef(\n1, + \instrument, \dNoz, + \dur, Pseq([20,Rest(10)],inf), + \amp, 0.5, + \legato, 1, + ); + //Pdef(\n1).stop; + //Pdef(\n1).clear; + + 1.wait; + + s.makeBundle(0.25, { + Pdef(\n1).play(~clk3, quant:1); + Ndef(\gcdmod).play; + Ndef(\gcdkick).play; + }); + +}.fork(~clk3) +) +/////////////////////////////////////////////////////////////////////////////////////// diff --git a/ark-track-SHIPPO.scd b/ark-track-SHIPPO.scd new file mode 100644 index 0000000..dd50229 --- /dev/null +++ b/ark-track-SHIPPO.scd @@ -0,0 +1,47 @@ +// 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 new file mode 100644 index 0000000..8a3f311 --- /dev/null +++ b/ark-track-s1-distorted-drone.scd @@ -0,0 +1,38 @@ +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 new file mode 100644 index 0000000..743d153 --- /dev/null +++ b/ark-track-twoChPad.scd @@ -0,0 +1,49 @@ +( +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 e1de813..2943194 100644 --- a/ark_d.scd +++ b/ark_d.scd @@ -1,84 +1,803 @@ +( // =========================================================== // Ark/D, amorphic (2020) // =========================================================== -( + Server.default.waitForBoot { + "Init.scd".loadRelative; + "init.scd".loadRelative; +} +); - // library path - var libPath = PathName(thisProcess.nowExecutingPath.dirname +/+ "lib"); - // samples path - var smpPath = PathName(thisProcess.nowExecutingPath.dirname +/+ "smp"); +// debug/meter +s.meter; s.scope(2); s.plotTree; - // load samples // - "\n--- load samples: ...".postln; +/* +ELEMENTS +- two chord pad +- param/bebacklight (needs granulator?) +- s1 distorted drone +- shippo +- lcm noise +- gcdfeedmodsin + low rumble? +- klickyarj + lcm noise? +- lorenz pattern + + + + + + +*/ + + +// +/////////////////////////////////////////////////////////////////////////////////////////////// +// GCD SINMODFEED ///////////////////////////////////////////////////////////////////////////////////////// +// feedback of modulated SinOsc + +// 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); - ~smpBuffers.do(_.free); //- free all buffers so we don't accumulate? - //~smpBuffers = List(); - ~smpBuffers = Dictionary(); +}).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 ); - smpPath.filesDo({ |smpfile,i| - // tell me what you are loading: - postln(" " + i + smpfile.fileName ); + 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; +); + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////// +( +~clk3 = TempoClock.new(2.2); +//~myClock = TempoClock.new(2.2); + +//~clk3 = TempoClock.tempo= 2.2 / 1; +{ // routine starts here + 1.wait; + Ndef(\gcdmod).proxyspace.clock = ~clk3; + Ndef(\gcdmod).proxyspace.quant = 1; + 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); - // add a sample into a buffer, store object to List - ~smpBuffers.add(smpfile.fileName -> Buffer.readChannel(s, - smpfile.fullPath, channels:[0])); + // Out.ar(0, j * EnvGate()) }); - - // load libs // - "\n--- load libs: ...".postln; - // for each files in that lib folder - libPath.filesDo({|afile| - // tell me what you're executing: - postln(" ." + afile.fileName); + Ndef(\gcdkick).proxyspace.clock = ~clk3; + Ndef(\gcdkick).proxyspace.quant = 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 + ]) + };); + Ndef(\gcdkick).mold(2, \audio, \elastic); + Ndef(\gcdkick)[0] = Pdef(\gcdkick); - // execute it: - this.executeFile(afile.fullPath); + + Pbindef(\n1, + \instrument, \dNoz, + \dur, Pseq([20,Rest(10)],inf), + \amp, 0.5, + \legato, 1, + ); + //Pdef(\n1).stop; + //Pdef(\n1).clear; + + 1.wait; + + s.makeBundle(0.25, { + Pdef(\n1).play(~clk3, quant:1); + Ndef(\gcdmod).play; + Ndef(\gcdkick).play; }); - - -}); - -s.meter; -s.scope(2); -s.plotTree + +}.fork(~clk3) +) /////////////////////////////////////////////////////////////////////////////////////// +// rumblw +Pdef(\n1).quant = 1; + +Pdef(\n1).play(~clk3, quant:1); + +q = Pbind(*[ + instrument: \tribd, + // dur: Pseq([ + // Prand([ + // Pseq([1.5,1.5]), + // 3]), + // 3,4 + // ] / 4,inf), + dur: 1, + dur: Pseq([3,1/2,1/2],inf), + freq:77, + octave:2, + amp:0.2 +]).play(~clk3, quant:1); +//Pdef(\kicka2).play(quant:[8,0]); +) + +{LFPulse.ar(iphase:0.99)}.plot + +x.release ( -// function to partially match filename for buffers -~getSmp = { |regexp| - ~smpBuffers.detect { |buf| - regexp.matchRegexp(buf.path) - } -}; +Pbindef(\n1, + \instrument, \dNoz, + \dur, Pseq([20,Rest(10)],inf), + \amp, 0.5, + \legato, 1, +) +) +Pdef(\n1).stop; +Pdef(\n1).clear; + +( +Pbindef(\kicka2, *[ + instrument: \tribd, + // dur: Pseq([ + // Prand([ + // Pseq([1.5,1.5]), + // 3]), + // 3,4 + // ] / 4,inf), + dur: 4, + //dur: Pseq([3,1/3,1/3,1/3],inf), + freq:77, + octave:2, + amp:0.2 + +]); +) +Pdef(\kicka2).clear + + + +// 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 + + + +// 4. dec. 2020 ///////////////////////////////////////////////////////////////// + +//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(\bufCyc, { - arg bufnum, gate=1, freq=440, chanDetune=1, out=0, amp = 1, attackTime=0.01, releaseTime=1; - +SynthDef(\akjbz, { + arg freq=300, amp=0.1, out=0, gate=1; var snd, env; - - env = Linen.kr(gate, attackTime:attackTime, releaseTime:releaseTime, doneAction:2); - freq = [freq, freq * (1 + (chanDetune * 0.0005))]; + //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 ; - snd = BufRd.ar( - numChannels: 1, - bufnum: bufnum, - //phase: LFSaw.ar(BufDur.ir(bufnum).reciprocal).range(0, BufFrames.ir(bufnum)), - phase: LFSaw.ar(freq).range(0, BufFrames.ir(bufnum)), - loop: 1, - interpolation: 2); + 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 + +// ---------------------------------------------------------------------------- + + + + + + + + + +// high pitched noise/pulse ------------------------------- +( +SynthDef(\x44y, { + arg out=0, gate=1, amp=0.9; + var snd, env; + env = Linen.kr(gate, releaseTime: 0.001, doneAction:2); + snd = Pulse.ar([1234,2345,3456,4567,5678,8912,11023] + * LFNoise0.ar(freq:Array.fill(7, {rrand(1,10)})).range(0.8,1.2), mul:0.2).sum; + snd = snd + WhiteNoise.ar(0.2); + snd = HPF.ar(snd, 8000); + //snd = snd * LFSaw.kr(0.5,iphase:1).exprange(0.00001,1); snd = snd * amp * env; - Out.ar(out, snd); + snd = snd.dup; + Out.ar(out, snd); +}).add; +) + +Pdef(\x44yp).play; +Pdef(\x44yp).quant = 4; +( +Pbindef(\x44yp, + * [ + instrument: \x44y, + dur: 1/8, + legato: Prand([ + Pn(0.1,16), + Pseq([Pn(0.1, 4), 0.5], 4), + Pseq([Pn(0.1, 2), 0.5, Pn(0.1, 4), 0.5], 4) + ],inf), + amp: 1, + ] +) +) +Pdef(\x44yp).stop +Pdef(\x44yp).clear + + + +( +Pbindef(\x99, + * [ + instrument: \tribd, + octave:3, + degree: Prand([1,2,3]/10,inf), + //dur: Pseq([3,2,Prand([2,3]),3,2,2]/8, inf), + dur: Pseq([3,2,Prand([4,3]),3,2,4]/4, inf), + amp: 0.1 + ] +).play +) + + + + +///////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////// + + + +// kao bassline? +( +SynthDef(\bz2, { + arg out=0, gate=1, freq=440, amp=0.1, releaseTime=0.1, cutoff=1, frq=1; + var env,snd, ffreq; + ffreq = freq * cutoff * 10; + ffreq = ffreq.clip(50,18000); + env = Linen.kr(gate, releaseTime: releaseTime, doneAction: Done.freeSelf); + snd = Pulse.ar([freq,freq*1.01]); + snd = snd + Saw.ar([freq*0.99, freq], mul:2); + snd = RLPF.ar(in: snd, + freq: ffreq, + rq: frq); + + snd = Limiter.ar(snd, 0.7); + snd = snd * env * amp; + snd = Splay.ar(snd); + snd = HPF.ar(snd, 50); + Out.ar(out, snd); + +}).add +) +// -- bassline pattern +Pdef(\bslp).play(quant:4) +Pdef(\bslp).stop +Pbindef(\bslp, *[ dur: Pseq([1,2,4] / [4,2,2,1]/4, inf),]).play(quant:4) +Pbindef(\bslp, *[ dur: Pseq([2,1,1]/4, inf),]).play(quant:8) +( +Pbindef(\bslp, *[ + instrument: \bz2, + legato: Prand((1..5)*0.03, inf), + cutoff: Prand([0.6,1,2,3,4,5,7,12]/2,inf), + frq: Prand((4..7)/10, inf), + degree: Pseq([0,2,3,Prand([8,4,2])] + 0,inf), + octave: [3,3.3,4], + amp:0.2, + releaseTime:0.1 +]).play(quant:4) +) + +( // klick? +SynthDef(\akjklik, { + arg freq=2, amp=0.1, out=0, gate=1; + var snd, env; + + snd = LFPulse.ar([freq, freq * 2], width: LFNoise1.ar(0.1).exprange(0.001,0.004)); + env = Linen.kr(gate, 0, 1, 0.01, doneAction:2); + + snd = snd * env * amp; + Out.ar(out, snd); }).add; ) + + +// ----------------------------------- + + +//////////////////////////////////////////////////////////////////////////////////////////////// + + +( + +var clck1 = TempoClock.new(120/60); +var clck2 = TempoClock.new(70/60); + +{ + + x = Pbind( \degree, Pseq((0..12)) ).play(clck1); + 4.wait; + x.stop; + postln(Date.getDate.format("time: %H:%M:%S --------------------")); + +}.fork(clck1); + +{ + y = Pbind( \degree, Pseq((0..12)+7) ).play(clck2); + 4.wait; + y.stop; + postln(Date.getDate.format("time: %H:%M:%S --------------------")); + +}.fork(clck2); + +postln("end line out of forks"); +) + +( +/*var date = Date.getDate; +date.format("%H%M%S").postln; +date.rawSeconds.postln; + date.rawSeconds.postln;*/ +~frames=(Date.getDate.rawSeconds).asString.reverse.at((0..3)).postln; +postln(Date.getDate.format("%H:%M:%S")); +""; +) +.stamp.postln + +[1,2,3].asCompileString.postln; +s.freqscope + +"this sentence has thirty-nine letters".reverse.at((0..3)); +"this sentence has thirty-nine letters".padLeft(39, "-+"); +"this sentence more than thirteen letters".padRight(13, "-+"); // nothing to pad. + + + + + +////////////////////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + +//////// EXPERIMENTS! ////////////////////////////////////////////////////////// + + +// 24.nov 2020: + +// clicky dissonance / akj ------------------------------------ +Ndef(\akj).play +Ndef(\akj).stop +Ndef(\akj).fadeTime=5; +( +Ndef(\akj, { + var freq=300, snd; + 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)) + + (LFPulse.ar([2.2,4.4]*2, width: LFNoise1.ar(0.1).exprange(0.001,0.004))) + ; + + snd = Splay.ar(snd); + //snd = LeakDC.ar(snd); + snd = snd + (Greyhole.ar(snd) * 0.1); + snd = snd + (SinOsc.ar(freq/4, mul:0.7) * LFPulse.ar(0.275, width:0.25).range(0,1)); + + //snd = Limiter.ar(snd, 0.5) * 1.5; + + (snd * 0.6 + (snd.wrap2 * 0.14)).softclip * 1; + + //(snd * 0.6).softclip; + +}) +) + + + + + + + + + + + + + + + + +// ------------------------------------------------------- + +TempoClock.tempo = 120/120; + +( +SynthDef(\h991, { + arg out=0, freq=90, gate=1, amp; + var snd, env; + + env = Linen.kr(gate, doneAction:2); + + freq = freq * XLine.ar(1,0.4, 5); + snd = SinOsc.ar(freq); + snd = BHiPass4.ar(snd, 40); + snd = snd + LPF.ar(Pulse.ar([freq, freq*1.01], 0.01, mul:0.4), freq * 32); + snd = snd + (LFTri.ar([freq*1.01,freq]) + SinOsc.ar(freq, mul:10).max(-0.5).min(0.5)).clip2(0.5); + + snd = snd + Pulse.ar(freq, mul:0.2); + snd = snd + Impulse.ar(freq, mul:2); + + snd = BLowPass4.ar(snd, SinOsc.kr(LFNoise0.kr(8).range(1,8)).range(300,LFNoise1.kr(1).range(1000,10000)), rq:0.7); + + + snd= snd * -6.dbamp; + snd = snd * env * amp; + snd = Splay.ar(snd); + Out.ar(out,snd); +}).add; +) + + +Pdef(\h991p).play; +Pdef(\h991p).quant = 4; + +( +Pbindef(\h991p, *[ + instrument: \h991, + dur: 4, + octave: 3, + legato: 0.89, + amp: 1 +]) +) +Pdef(\h991p).clear + + + + + +//////////////////////////////////////////////////////////////////////////////// +( +// SC808 drum snare +SynthDef.new(\sc808sn, { + arg amp=2, tone=340, tone2=189, snappy=0.7, gate=1, amp2=1, out=0; + var noiseEnv, atkEnv, sig, noise, osc1, osc2, sum; + noiseEnv = EnvGen.kr(Env.perc(0.001, 4.2, 1, -115), doneAction:0); + atkEnv = EnvGen.kr(Env.perc(0.001, 0.8,curve:-95), doneAction:2); + noise = WhiteNoise.ar; + noise = HPF.ar(noise, 1800); + noise = LPF.ar(noise, 8850); + noise = noise * noiseEnv * snappy; + osc1 = SinOsc.ar(tone2, pi/2) * 0.6; + osc2 = SinOsc.ar(tone, pi/2) * 0.7; + sum = (osc1+osc2) * atkEnv * amp2; + sig = Pan2.ar(((noise*1) + sum) * amp * 2.5, 0); + sig = HPF.ar(sig, 340); + Out.ar(out, sig); +}).add +) + + + + + + + + + + +~delay1 = Bus.audio(s, 2); + +( +SynthDef(\dlywrangler, { + arg out=0, in; + var snd; + snd = In.ar(in,2); + snd = CombL.ar(snd, 1, Lag.ar(LFNoise0.ar(1).range(0.01,0.1),0.01), 3, mul:0.4) + snd; + Out.ar(out, snd); +}).add; +) + +~dlywrang1 = Synth(\dlywrangler, [\out, 0, \in, ~delay1]); +~dlywrang1.free + +( +Pbindef(\hhp1, + * [ + instrument: \sc808hh, + //dur: Pseq([Rest(1/32), 3/32], inf), + dur: 1/16, + //amp: Prand([1,2,3]/3, inf), + amp: Pseq([1, 0.2],inf), + out: Pwrand([~delay1,0],[0.7,0.3],inf), + pan: Pfunc({rrand(-0.6,0.6)}) + ] +).play +) + +( +Pbindef(\snp1, + *[ + instrument: \sc808sn, + dur: Pseq([Rest(1),Pxrand([1,1.5,0.5,Pn(0.5,4),Pn(0.25,2),Pn(0.25,2),Pn(0.25,2)])]/2,inf), + amp: Prand([1,2,3]*0.05+0.8,inf), + tone: 340, + tone2: 189, //Pxrand([2,3,4,5,6,7] * 100, inf), + snappy: 0.3, + //out: Prand([0,~delay1],inf) + out: 0 + ] +).play +) + +( +Pbindef(\sawp1, + *[ + instrument: \softSaw, + dur: 10, + attackTime: 5, + releaseTime:5, + legato:1, + degree: Pseq([ [-2,3,11,20], [-2,5,7,21] ],inf), + octave: 3, + amp: [1,0.5,0.2,0.1] * 0, + out: ~delay2 + ] +).play +) +~delay2 = Bus.audio(s,2); +( +SynthDef(\wiDel, { + var snd = In.ar(\in.kr, 2); + snd = CombL.ar(snd, 1, SinOsc.ar(0.02,[0,pi/2]).range(0.5,0.6), 10, mul:1) + snd; + Out.ar(\out.kr(0), snd); +}).add; +) +~widel1.free +~widel1 = Synth(\wiDel, [\in, ~delay2, \out, 0]); + + + +//////////////////////// +s.meter + + + + + + + + + + +// BASSLINE + MELODIC LINES with buffer cycler + Pdef(\x32).play Pdef(\x32).fadeTime = 0; ( @@ -92,9 +811,9 @@ Pdef(\x32, \chanDetune, 20, \dur, Pseq([0.20,0.40,0.60],inf), \legato, 1, - \amp, [0.3,0.5,0.1], + \amp, [0.3,0.5,0.1] * 0.5, \releaseTime, 0.01 - )); + )).play.quant_(8); ) Pdef(\x33).play @@ -103,592 +822,23 @@ Pdef(\x33).fadeTime = 0; Pdef(\x33, Pbind( \instrument, \bufCyc, - \bufnum, [~getSmp.value("0246"),~getSmp.value("0229")], - \octave, 5, + \bufnum, [~getSmp.value("blended_0001"),~getSmp.value("0023")], + //\bufnum, ~getSmp.value("raw"), + \degree, Pseq([[4,9],2,8,4,1], inf), - \mtranspose, Pseq([Pn([0],10),Pn([3],10)],inf), + + \octave, Prand([[6,5,7],[4,5,7],[7,5,4]]-0 ,inf), + \mtranspose, Pseq([Pn([1],10),Pn([0],10)],inf), \detune, [0,0.3], \chanDetune, Pseq([-10,0,5,10,-5],inf), - \dur, Pseq([0.20,0.40,0.60],inf), + \dur, Pseq([1,2,3] * 0.2,inf), \legato, 0.1, \amp, [0.3,0.5,0.1] * 0.1, - \releaseTime, 1 + \releaseTime, Prand([1,2,3,4],inf) )); ) -/////////////////////////////////////////////////////////////////////////////////// -x = Synth(\BufCycle, [\bufnum, ~getSmp.value("AKWF_0001"),\freq, 41.midicps, \chanDetune, 100]); -y = Synth(\BufCycle, [\bufnum, ~getSmp.value("AKWF_0001"),\freq, 42.midicps, \chanDetune, 0]); -x = Synth(\BufCycle, [\bufnum, ~getSmp.value("AKWF_0043"),\freq, 75]); -x = Synth(\BufCycle, [\bufnum, ~getSmp.value("AKWF_0001")]); -~getSmp.value("AKWF_0001").plot -( -Ppar([ -Pbind( - \instrument, \BufCycle, - \bufnum, ~getSmp.value("AKWF_0043"), - \octave, 4, - \degree, Pseq([2,5,4,1], inf), - \detune, -4, - \dur, 1, - \legato, 0.5, - \amp, 0.5, - \releaseTime, 0.5 -), -Pbind( - \instrument, \BufCycle, - \bufnum, ~getSmp.value("AKWF_0043"), - \octave, 4, - \degree, Pseq([2,5,4,1], inf), - \detune, 0, - \dur, 1, - \legato, 0.5, - \amp, 0.5, - \releaseTime, 0.5 -)]).play; -) - -s.scope - - - - -{SinOsc.ar(75) * [0,0.5]}.play -x.free - -a = { 10.rand }; b = a.reciprocal; postln("a: " + a.value); postln("1/" + a.value + " = " + b.value); - - 3.reciprocal - - - - - - - - - - - - - - -/////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - -~smpBuffers.postln; - -x = Synth(\softSaw); -x.release - -y = Synth(\granulator, [\bufnum, ~smpBuffers.at(0)]) -y.set(\amp,0.4) -y.set(\spread,1) -y.set(\pan, 0) -y.set(\gate, 0) - -( -// function to partially match filename for buffers -~getSample = { |regexp| - ~smpBuffers.detect { |buf| - regexp.matchRegexp(buf.path) - } -}; -) - -// how to match filename to bufnum -z = Synth(\bufPlayer, [\bufnum, ~smpBuffers.at("Ljuben Dimkaroski plays the Divje Babe Bone Flute-AZCWFcyxUhQ.wav")]) -z = Synth(\bufPlayer, [\bufnum, ~smpBuffers.detect { |buf| buf.path == "/home/random/Cloud/cloud.tmp.si/Projects/ark'd betwix/scd/smp/Ljuben Dimkaroski plays the Divje Babe Bone Flute-AZCWFcyxUhQ.wav" }]) -z = Synth(\bufPlayer, [\bufnum, ~smpBuffers.detect { |buf| "Divje Babe Bone Flute".matchRegexp(buf.path) }]) -z = Synth(\bufPlayer, [\bufnum, ~getSample.value("Divje Babe Bone Flute")]) - -~smpBuffers.detect { |buf| buf.path == .... } - -z.free - - - -~smpBuffers.dump - - - - - - -/////////////////////////////////////////////////////////////////////////////////////////// - -~smpBuffers[1].plot - -// buffer oscilator -( -Ndef(\bosc, { - var buffer = ~getSample.value("AKWF_0001"), freq = 30, oscDetune = 1.01, amp = 0.2; - BufRd.ar(1, bufnum:buffer, phase: LFSaw.ar([freq,freq*oscDetune]) * BufFrames.ir(buffer)) * amp - //+ SinOsc.ar(60.2) * 0.5; -} ); -) - -Ndef(\bosc).play -Ndef(\bosc).fadeTime=2; -Ndef(\bosc).clear - -/////////////////////////////////////////////////////////////////////////////////////////////// -// creating buffers and filling them with waveforms - -a = Harmonics.new(16); // just returns an instance of Harmonics with size -b = Buffer.alloc(s, 512, 1); -( -z = SynthDef("help-Osc",{ arg out=0,bufnum=0; - Out.ar(out, - LeakDC.ar( - Osc.ar(bufnum, [50,50.2], 0, 0.5) + - Osc.ar(bufnum, [50.01,50.21], 0, 0.5) - ) - ) -}); -) -a.ramp(1.0, 2.0); -a.ramp(0.5, -0.025) - -( -b.sine2( - freqs: a.ramp(1,1).postln, - amps: a.ramp(0, 0.01).postln, - amps: [0.8,0,0.1,0,0,0.1,0,0,0.01,0,0.01,0,0.02,0,0,0].postln, - normalize:false, asWavetable:true, clearFirst:true); -) -b.plot - - -a.formant(6, 4); -( -b.sine2( - freqs: a.ramp(0,0.1).postln, - amps: a.ramp(1,3), - normalize:true, asWavetable:true, clearFirst:true).plot; -) -b.sine2(a.ramp(1.0,0.1).postln, a.geom(1.2), true, true, true); -c = b.plot; - -y = z.play(s,[\out, 0, \bufnum, b]); -y.free; - -{SinOsc.ar()}.play - -( -z = SynthDef("help-Osc",{ arg out=0,bufnum=0; - Out.ar(out, - Osc.ar(bufnum, 200, 0, 0.5) - ) -}); -) - - -//////////////////// -a.ramp(1.0, 1.0); // returns a harmonic series - -b = Buffer.alloc(s, 512, 1); -// harmonic series for freqs, ramp down for amps -b.sine2(a.ramp(1.0, 1.0).postln, a.ramp(0.5, -0.025).postln, true, true, true); -( -z = SynthDef("help-Osc",{ arg out=0,bufnum=0; - Out.ar(out, - Osc.ar(bufnum, 200, 0, 0.5) - ) -}); -) -y = z.play(s,[\out, 0, \bufnum, b]); -y.free; - -a.decay(1.0); - -b.sine2(a.rand(0.1, 0.9).postln, a.rand(0,1).postln, true, true, true); -b.plot -y = z.play(s,[\out, 0, \bufnum, b]); -y.free; - - - -a.teeth(6, 4); - -b.sine2(a.teeth(6, 4).postln, a.teett(2.2).postln, true, true, true); -y = z.play(s,[\out, 0, \bufnum, b]); -b.sine2(a.teeth(9, 1).postln, a.geom(1.2), true, true, true); -b.sine2(a.teeth(1, 3).postln, a.geom(1.2), true, true, true); -b.sine2(a.teeth(2, 3).postln, a.geom(1.2), true, true, true); -y.free; - -/////////////////////////////////////////////////////////////////////////////////////////// - -// create a stere bus of verbDelayFX -~reverBus = Bus.audio(s,2); - - -Ndef(\ba).play(~reverBus, addAction: \addToHead) - -// reverb delay -~reverbDelay = Synth(\verbDelayFX, [\inBus, ~reverBus, \outBus, 0], addAction: \addAfter); -~reverbDelay = Synth(\verbDelayFX, [\inBus, ~reverBus, \outBus, 0], addAction: \addToTail); -~reverbDelay = Synth(\verbDelayFX, [\inBus, ~reverBus, \outBus, 0]); - -~reverbDelay.set(\revWet, 1); -~reverbDelay.set(\dlyWet, 0.5); - -~reverbDelay.free - - -Ndef(\ba).fadeTime=0.01; // for Patterns we don't want crossfade, but quantization - -// set default quant -Ndef(\ba).proxyspace.quant = 2; - -( -Ndef(\ba, - Pbindf( - Ppar([ - Pbind( - \octave, [4,5,7], - \amp, [0.1,0.2,0.005], - \degree, Pseq([0,3,4,2,6,Prand([3,4,2,6])], inf), - \dur, Prand([1,0.5,2], 250), - ), - Pbind( - \octave, [3,6], - \degree, Pseq([[0,-3],4,6,3,2], inf), - \dur, Pseq([Rest(30),Pseq([3.5,5], 30)]), - //\dur, Pseq([3.5,5], 30), - \amp, 0.05, - \legato, 0.6, - \attackTime, 2, - \releaseTime, 2, - )]), - // common parameters - \instrument, \sinPulz, - \oscDetune, Prand([1,3,5,7]*0.01, inf), - \scale, Pseq([Scale.minor.tuning_(\et12),Scale.minor.tuning_(\et12),Scale.minor.tuning_(\just)],inf), - \cutoff, Prand([0.5,1,1.5], inf), - \mtranspose, Pseq([Pn([1],30),Pn([2],10),Pn([1],20),Pn([0],5)],inf), - \out, ~reverBus - )) -) - -Tuning.directory -Ndef(\ba).stop(1); -Ndef(\ba).clear; - -//////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/////////////////////////////////////////////////////////////////////////////////////// - -//testng patterns - -( -Pbind( - \instrument, \softSaw, - \octave, 2, - \degree, Pseq([2,5,4,1], inf), - \dur, 3, - \legato, 1, - \amp, 0.5, - \releaseTime, 0 -).play; -) - - - - -//////////////////////////////////////////////////////////////////////////////////////// - - -// PlayBufer: -( -SynthDef(\bufPlayer, {|out = 0, bufnum = 0 | - Out.ar(out, - PlayBuf.ar(1, bufnum, BufRateScale.kr(bufnum), loop: 1.0) - ) -}).play(s, [\bufnum, ~smpBuffers.at(0)]); -) - -~bufplay = Synth(\bufPlayer, [ \bufnum, ~smpBuffers.at(0)]) - -( -SynthDef(\granulator, { - arg out = 0, bufnum = ~smpBuffers.ar(0), dur=0.2, freq=140, amp=0.2; - var snd; - - snd = GrainBuf.ar(numChannels: 2, - trigger: Impulse.kr(freq * LFNoise0.kr(freq).range(0.5,1.5)), - dur: dur, - sndbuf: bufnum, - rate: [0.2,0.3,0.4,0.5], - pos:LFTri.ar(0.0001, iphase:[0.5,1,0,2]).range(0,1), - interp: 4, - maxGrains: 1024, - pan: [ - LFNoise1.kr(0.1).range(-1,1), - LFNoise1.kr(0.1).range(-1,1), - LFNoise1.kr(0.1).range(-1,1), - LFNoise1.kr(0.1).range(-1,1) - ] - ); - - snd = Splay.ar(snd, spread:1); - - Out.ar(out, snd * amp); -}).play; -) - -~smpBuffers.do(_.free); -~smpBuffers.at(0).free; -s.meter - -( -SynthDef("sawM", { - arg out=0, freq=140, gate=1, fadeTime=1, amp=0.5; - var snd, env; - - snd = Saw.ar({freq/2 * LFNoise1.ar().range(0.95,1.05) } ! 2) - + Saw.ar({freq * LFNoise1.ar().range(0.95,1.05) } ! 2, ) - //+ (Saw.ar({freq * 2 * LFNoise1.ar().range(0.95,1.05) } ! 2) * 0.4) - // + (Saw.ar({freq * 4 * LFNoise1.ar().range(0.95,1.05) } ! 2) * 0.2) - ; - //snd = Saw.ar({freq/2 * LFNoise1.ar().range(0.95,1.05)} ! 4); - //snd = snd + Saw.ar([freq/2,freq]/2 * LFNoise1.ar().range(0.95,1.05))!3; - snd = Splay.ar(snd, spread:1, level:1, center:0); - env = EnvGen.kr( Env([0, 1, 0], [fadeTime, fadeTime], \sin, 1), - gate, doneAction: Done.freeSelf); - - snd = snd * env * amp; - - Out.ar(out, snd); -}).play; -); -s.scope - -// load samples - - - -// load busses - - - -// load patterns - -2.rand - - - - - - - - -( -x = { arg spread=1, level=1, center=0.0; - Splay.ar( - SinOsc.ar( { |i| LFNoise2.kr(1).exprange(200, 4000) } ! 10), - spread, - level, - center - ); -}.play; -) - - - -b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav"); - -( -x = { - arg out = 0, bufnum, dur=0.2, freq=140, amp=0.5; - var snd; - - snd = GrainBuf.ar(numChannels: 2, - trigger: Impulse.kr(freq * LFNoise0.kr(freq).range(0.5,1.5)), - dur: dur, - sndbuf: bufnum, - rate: [0.2,0.3,0.4,0.5], - pos:LFTri.ar(0.01, iphase:[0.5,1,0,2]).range(0,1), - interp: 4 - ); - - //snd = [snd.at(0),snd.at(1)] + [snd.at(3),snd.at(2)] * 0.2; - snd = Splay.ar(snd * amp, spread:1); - //Mix(snd * 0.25); - - //Out.ar(out, snd); -}.play(s,[\bufnum, b]); -) - -s.scope - - - -{ Mix.new([ PinkNoise.ar(0.1), FSinOsc.ar(801, mul:0.1), LFSaw.ar(40, mul:0.1)]) }.play - - - -play({ - VarSaw.ar( - LFPulse.kr(3, 0, 0.3, 200, 200), - 0, - LFTri.kr(1.0).range(0,1), //width - 0.1) -}); - -( -play({ - VarSaw.ar([50,50.5], 0, SinOsc.kr(0.01,1).range(0.05,0.95), 0.5)!2 - + VarSaw.ar([101,99.3], 0, SinOsc.kr(0.06,0).range(0.2,0.8) , 0.5)!2 * 0.2 -});) - - -( -SynthDef(\softSaw, { - arg out = 0, freq = 40, detune = 0.1, amp = 1, pan = 0, - gate = 1, attackTime = 0.1, susLevel = 1.0, releaseTime = 1.0; - var env, snd; - detune = detune * 0.1; - amp = amp * 0.4; - - env = Linen.kr(gate, attackTime, susLevel, releaseTime); - - snd = VarSaw.ar( - freq: [freq, freq * (1.003+detune)], - width: SinOsc.kr(0.01,0.2).range(0.05,0.095)); - snd = snd + VarSaw.ar( - freq: [(freq*2 * (1.001-detune)),(freq*2 * (1+detune))], - width: SinOsc.kr(0.06,0.8).range(0.2,0.8)); - - - snd = Balance2.ar(snd.at(0), snd.at(1), pos: pan); - - snd = snd * amp * env; - - Out.ar(out, snd); - -}).play); - - - -Linen.kr() - - - - - -( -SynthDef(\granulator, { - - arg out = 0, bufnum = ~smpBuffers.ar(0), grainDur=0.2, grainFreq=140, amp=0.8, - gate = 1, attackTime = 0.1, susLevel = 1.0, releaseTime = 1.0, - spread = 1, pan = 0, seed = 1924, id=0; - var snd, env; - - RandID.ir(id); - RandSeed.ir(1, seed); - spread = spread * abs(abs(pan)-1); - - env = Linen.kr(gate, attackTime, susLevel, releaseTime); - snd = GrainBuf.ar(numChannels: 1, - trigger: Impulse.kr(grainFreq * LFNoise0.kr(grainFreq).range(0.5,1.5)), - dur: grainDur, - sndbuf: bufnum, - rate: [0.2,0.3,0.4,0.5], - pos:LFTri.ar(0.0001, iphase:[IRand(0,1),IRand(0,1),IRand(0,1),IRand(0,1)]).range(0,1), - interp: 4, - maxGrains: 1024, - pan: [ LFNoise1.kr(0.1).range(-1,1), - LFNoise1.kr(0.1).range(-1,1), - LFNoise1.kr(0.1).range(-1,1), - LFNoise1.kr(0.1).range(-1,1) ] - ); - snd = Splay.ar(snd, spread:spread, level:amp, center: pan); - snd = snd * env; - - Out.ar(out, snd); -}).play; -); - - - - - - - - - - - - -spread - -( -x = { arg spread=1, level=0.2, center=0.0; - Splay.ar( - SinOsc.ar( { |i| LFNoise2.kr(1).exprange(200, 4000) } ! 2, mul: { LFNoise2.kr(1).exprange(0.01,1)}!2), - spread, - level, - center - ); -}.play; -) - -x.set(\spread, 1, \center, 0); // full stereo -x.set(\spread, 0.5, \center, 0); // less wide -x.set(\spread, 0, \center, 0); // mono center -x.set(\spread, 0.5, \center, 0.5); -// spread from center to right -x.set(\spread, 0, \center, -1); // all left -x.set(\spread, 1, \center, 0); // full stereo \ No newline at end of file diff --git a/ark_d_livecode.scd b/ark_d_livecode.scd new file mode 100644 index 0000000..644a214 --- /dev/null +++ b/ark_d_livecode.scd @@ -0,0 +1,457 @@ +// ===================================================================== +// livecoding session, 2.october, 2020 - OSMOZA +// ===================================================================== + + + +//(// test all ) +//( // stop all? ) + + +// delay busses + +/*~reverBus = Bus.audio(s, numChannels:2); +~reverb = Synth(\reverb, [\inBus, ~reverBus, \out, 0, \amp, 1], addAction:\addToTail ) +~reverb.set(\amp, 1) +~reverb.free +~reverBus.free +*/ + + + +~reverBus = Bus.audio(s,2); +~reverbDelay = Synth(\verbDelayFX, [\inBus, ~reverBus, \outBus, 0, \revWet, 1, \dlyWet, 1], addAction: \addAfter); +~reverbDelay.set(\revWet, 1); +~reverbDelay.set(\dlyWet, 1); +~reverbDelay.free +~reverBus.free + +b = Buffer.alloc(s, 44100 * 4.0, 1); // a four second 1 channel Buffer +c = Buffer.alloc(s, 44100 * 4.0, 1); // a four second 1 channel Buffer +d = Buffer.alloc(s, 44100 * 4.0, 1); // a four second 1 channel Buffer +e = Buffer.alloc(s, 44100 * 4.0, 1); // a four second 1 channel Buffer + +Synth(\recIn, [\bufnum, b]); +b.normalize; +Synth(\recIn, [\bufnum, c]); +c.normalize; +Synth(\recIn, [\bufnum, d]); +d.normalize; +Synth(\recIn, [\bufnum, e]); +e.normalize; + +b.plot +c.plot +d.plot +e.plot +// ============================================================================ + +~soil1 = Synth(\granSoil, [\sndbuf, ~getSnd.("forest"), \dur, 0.0001 ,\fadeTime, 20, \amp, 0.8]); +~soil1.release + + +e = Synth(\bgrain, [\out, ~reverBus, \bufnum, e, \amp, 0.01], addAction: \addToHead); +g = Synth(\bgrain, [\out, 0, \bufnum, b, \amp, 0.1], addAction: \addToHead); +e.set(\amp, 0.5); +e.set(\rate, 1); +e.free +g.release(1) +g.free + +~grain1 = Synth(\bgrain, [\out, ~reverBus, \bufnum, ~getSmp.("caretaker"), \amp, 0.01], addAction: \addToHead); +~grain1.set(\amp, 0.4) +~grain1.set(\rate, 1) +~grain1.set(\bufnum, ~getSmp.("romantiq")) +~grain1.release(1) + +~glitchgrain = Synth(\bgrain, [\out, ~reverBus, \bufnum, ~getSmp.("gl05"), \amp, 0.01], addAction: \addToHead); +~glitchgrain.set(\amp) +~glitchgrain.release(1) + +~amygran = Synth(\bgrain, [\out, ~reverBus, \bufnum, ~getSmp.("amywars"), \amp, 0.1], addAction: \addToHead); +~amygran.set(\amp, 0.8) +~amygran.set(\rate, 1) +~amygran.release(3) + +~romantiq = Synth(\bgrain, [\out, ~reverBus, \bufnum, ~getSmp.("romant"), \amp, 0.01], addAction: \addToHead); +~romantiq.set(\amp, 0.2) +~romantiq.set(\rate, 1) +~romantiq.release(10) + +~ljuben = Synth(\bgrain, [\out, ~reverBus, \bufnum, ~getSmp.("Ljuben"), \amp, 0.1], addAction: \addToHead); + +s.record(duration:120) + +( +Pdef(\glgrain2, Pbind(\instrument, \bgrain, \bufnum, ~getSmp.("amywars"), + \dur, 30, + \legato, 0.9, + \amp, 0.5, + \rate, 1, + \out, ~reverBus +)).play); +Pdef(\glgrain2).stop + +( +Pdef(\glgrain1, Pbind(\instrument, \bgrain, \bufnum, ~getSmp.("gl05"), + \dur, 30, + \legato, 0.8, + \amp, 0.1, + \out, ~reverBus +)).play); + +Pdef(\glgrain1).stop + + +( +//Pdef(\fran, Pbind( \instrument, \bgrain, \bufnum, ~getSmp.("gl05"), +Pdef(\gran, Pbind( \instrument, \bgrain, \bufnum, b, + \dur, 4, + + \amp, 0.05, + //\rate, Prand((90..110) * 0.01,inf), + // \pan, Prand([-0.2, 0, 0.2], inf) + \out, ~reverBus +)).quant_(1) +); + +Pdef(\gran).play +Pdef(\gran).stop +Pbindef(\gran, \amp, 0.01) + +// ======================================================================= + +~henonS1 = Synth(\henonSynth1, [\out, ~reverBus, \amp, 0.4, \fadeTime, 4]); +~henonS1.set(\amp, 0.9); +~henonS1.set(\pan, -1); +~henonS1.set(\hpff, 12000); +~henonS1.set(\lpff, 400); +~henonS1.release(2); +~henonS1.free; + +~henonS2 = Synth(\henonSynth1, [\amp, 0.2, \fadeTime, 20]); +~henonS2.set(\amp, 0.7); +~henonS2.set(\pan, 1); +~henonS2.set(\hpff, 13000); +~henonS2.set(\lpff, 300); +~henonS2.set(\gate, 0, \fadeTime, 1); +~henonS2.release(2); +~henonS2.free; + +~darkHenon1 = Synth(\henonLsynth2, [\fadeTime, 10, \amp, 0.1]); +~darkHenon1.set(\amp, 0.5); +~darkHenon1.release(30); +~darkHenon1.free; + +~darkHenon2 = Synth(\henonLsynth2, [\fadeTime, 10, \amp, 0.2]); +~darkHenon2.set(\amp, 0.7); +~darkHenon2.set(\gate, 0, \fadeTime, 3); +~darkHenon2.release(30); +~darkHenon2.free; + + + + + + + + + + + +// 210Hz +~fhnTrig1 = Synth(\fhnTrigRing, [\freq, 110, \amp, 0.5, \decay, 2, \min, 0.2, \max, 1, \amp, 0.4, \fadeTime, 10]); +~fhnTrig1.set(\freq, 60); +~fhnTrig1.release(3); + +// 200Hz +~fhnTrig3 = Synth(\fhnTrigRing, [\out, ~octoBus2, \freq, 200, \amp, 0.5, \decay, 2, \min, 0.2, \max, 1, \amp, 0.4, \fadeTime, 10]); +~fhnTrig3.release(30); + +// 2110 +~fhnTrig2 = Synth(\fhnTrigRing, [\freq, 2110, \amp, 0.5, \min, 2, \max, 20, \amp, 0.5, \fadeTime, 10]); +~fhnTrig2.set(\out, 0) +~fhnTrig2.set(\ffreq, 8000) +~fhnTrig2.release(6) + +~fhnTrig2 = Node.basicNew(nodeID:1369) + + + + + + + + + + + + + + + + +// ===================================================================== +// Pbindefs //////////////////////////////////////////////////////////// + + +Pdef(\bsln1).play.quant_(1); +Pbindef(\bsln1, \dur, Pseq([1,2,3] * 1/4, inf)) +Pbindef(\bsln1, \degree, Pseq([2,2,4,1], inf)) +Pbindef(\bsln1, \legato, 1, \releaseTime, 0.01) +Pbindef(\bsln1, \lpf, Prand([3,4,5,6,7,8],inf)) +Pbindef(\bsln1, \lpf, Pseq([4,5,6,7,8,9,10,11],inf)) +Pbindef(\bsln1, \freso, 0.5) +Pbindef(\bsln1, \fdist, 1) +Pbindef(\bsln1, \amp, 0.3) +Pdef(\bsln1).stop; + +//-- + +Pdef(\strng1).play; + +// Pseq([3,2,1] * 1/6,inf) +Pbindef(\strng1, \dur, Pseq([3,2,1] * 1/6,inf)) + +// [4,9], 2, 8 , 4, 1 +Pbindef(\strng1, \degree, 2) +Pbindef(\strng1, \degree, Pseq([[4,9],2,8,4,1], inf)) +Pbindef(\strng1, \octave, 5) +// [6,5,7], [4,5,7], [7,5,4] +Pbindef(\strng1, \octave, Pseq([[4,5,7],[7,5,6],[5,7,4]],inf)) +Pbindef(\strng1, \octave, Pseq([[6,5,7], [4,5,7], [7,5,4]],inf)) +Pbindef(\strng1, \amp, 0.1) +// Pstutter(12, Pseq([1,0,-2,3,-3], inf)) +Pbindef(\strng1, \mtranspose, Pstutter(12, Pseq([1, 0, -2, 3, -3],inf))) + + +Pdef(\strng1).stop; +Pdef(\strng1).clear; + + +//-- + +Pdef(\perc1).play +Pbindef(\perc1, \amp, 0.4) +Pbindef(\perc1, \dur, Pseq([1.5, 2.5] * 1,inf)) +Pdef(\perc1).stop + +//-- + +Pdef(\perc2).play +Pbindef(\perc2, \amp, 0.3) +Pbindef(\perc2, \dur, Pseq([Rest(1), 2, 4] * 2/3,inf)) +Pdef(\perc2).stop + +//-- + +Pdef(\perc3).play +//* Pstutter(6, Prand([1/8,1/4],inf)), +Pbindef(\perc3, \dur, Pseq([4,3,2,1],inf) * 1/8) +Pbindef(\perc3, \bufnum, ~getSmp.("perc01")) +Pdef(\perc3).stop +Pdef(\perc3).clear + +//-- + +Pdef(\hh1).play +(Pbindef(\hh1, \dur, Pseq([ +1/4, 1/4, 1/8, 1/4, 1/8, 1/8, 1/8, 1/4, +1/6, 1/6, 1/6, 1/6, 1/6, 1/12, 1/12 +],inf))) +Pbindef(\hh1, \amp, 0.4) +Pbindef(\hh1, \bufnum, ~getSmp.("hh01"), \amp, 0.3) +Pdef(\hh1).stop + +Pdef(\hh2).play +Pbindef(\hh2, \bufnum, ~getSmp.("hh06"), \amp, 0.4) +Pdef(\hh2).stop + +//-- + +Pdef(\hh3).play +Pbindef(\hh3, \bufnum, ~getSmp.("hh05")) +Pbindef(\hh3, \amp, 0.4) +Pdef(\hh3).stop + +//-- + +Pdef(\bd1).play +Pbindef(\bd1, \amp, 0.6) +Pbindef(\bd1, \dur, Pseq([3/4, 1, 1, 1, 1/4],inf)) +Pbindef(\bd1, \dur, Pseq([3/4, 1, 1, 1, 1/8],inf)) // one 8th note shorter +Pbindef(\bd1, \bufnum, ~getSmp.("bd01")); +Pdef(\bd1).stop +Pbindef(\bd1, \dur, Pseq([1/4],32)) + +//-- + +Pdef(\oh1).play +Pbindef(\oh1, \amp, 0.3) +Pbindef(\oh1, \dur, Prand([1/2,1,2,5/4],inf)) +Pdef(\oh1).stop; + +//-- + +Pdef(\oh2).play +Pbindef(\oh2, \amp, 0.1, \dur, 3/4) +Pdef(\oh2).stop + +//-- + +Pdef(\oh3).play +Pbindef(\oh3, \amp, 0.1, \dur, 5/4) +Pdef(\oh3).stop + +//-- + +Pdef(\sn1).play; +Pbindef(\sn1, \amp, 0.8) +Pbindef(\sn1, \amp, 0.4, \dur, Pseq([Rest(1), Prand([1])],inf)); +Pbindef(\sn1, \amp, 0.4, \dur, Pseq([Rest(1), Prand([0.5,1,1.5])],inf)); +Pdef(\sn1).stop + +//-- + +Pdef(\sn2).play +Pbindef(\sn2, \dur, Pseq([1/2,2,3/8,1],inf), \amp, 0.2) +Pdef(\sn2).stop + +//-- + +Pdef(\sn3).play +Pbindef(\sn3, \dur, Pseq([1/2,2,3/8,1],inf), \amp, 0.7) +Pdef(\sn3).stop + +//-- + +Pdef(\cl1).play +// Pbindef(\cl1, \dur, ...) +Pdef(\cl1).stop + +//-- + +Pdef(\cl2).play +// Pbindef(\cl2, \dur, ...) +Pdef(\cl2).stop + +//-- + +Pdef(\cl3).play +// Pbindef(\cl3, \dur, ...) +Pdef(\cl3).stop + + +//-- + +Pdef(\gl1).play +// Pbindef(\gl1, \dur, ...) +Pbindef(\g1, \revWet, 1) +Pdef(\gl1).stop + +//-- + +Pdef(\gl2).play +// Pbindef(\gl2, \dur, ...) +Pdef(\gl2).stop + +//-- + +Pdef(\gl3).play +Pbindef(\gl3, \dur, Pseq([1,1,1,1,2]/8,inf)) +Pbindef(\gl3, \amp, 0.2) +Pdef(\gl3).stop + +// ============================================================================= + + + + +// ===================================================================== +// SuperCollider Workspace +// ===================================================================== + + +~soil1 = Synth(\granSoil, [\sndbuf, ~getSnd.("forest"), \dur, 0.0001, \fadeTime, 30, \amp, 0.5]) +~soil1.set(\amp, 1) +~soil1.release(60) + +e = Synth(\bgrain, [\bufnum, d, \amp, 0.05]) +e.set(\amp, 0.1) +e.release(30) + +~grain1 = Synth(\bgrain, [\out, ~reverBus, \bufnum, ~getSmp.("caretaker"), \amp, 0.005]) +~grain1.set(\amp, 0.15) +~grain1.release(30) + +~glgrain1 = Synth(\bgrain, [\out, ~reverBus, ~getSmp.("gl05"), \amp, 0.1]) +~glgrain1.set(\amp, 0.5) +~glgrain1.release(30) + +~lj = Synth(\bgrain, [\bufnum, ~getSmp.("Ljuben"), \amp, 0.1]) +~lj.set(\amp, 0.2) +~lj.release(60) + +~amy = Synth(\bgrain, [\bufnum, ~getSmp.("amywars"), \amp, 0.3 \rate, 1]) +~amy.set(\amp, 1) +~amy.release(60) + +~hS1 = Synth(\henonSynth1, [\out, ~reverBus, \amp, 0.3, \fadeTime, 10]) +~hS1.set(\amp, 0.2 ) +~hS1.set(\pan, -1 ) +~hS1.set(\pan, -1 ) +~hS1.release(60) + +~hS2 = Synth(\henonSynth1, [\amp, 0.3, \fadeTime, 10]) +~hS2.set(\pan, 1 ) +~hS2.set(\amp, 0.1 ) +~hS2.release(60) + +~dH1 = Synth(\henonLsynth2, [\amp, 0.1, \fadeTime, 30]) +~dH1.set(\amp, 0.8) +~dH1.release(120) + +~esma = Synth(\bgrain, [\bufnum, ~getSmp.("esma1"), \amp, 0.1, \rate, 1]) +~esma.set(\amp, 0.01) +~esma.set(\out, ~reverBus) + +~bgr = Synth(\bgrain, [\bufnum, b, \amp, 0.1]) +~bgr.set(\amp, 0.01) + +~bgr2 = Synth(\bgrain, [\out, ~reverBus, \bufnum, b, \amp, 0.1, \rate, 1]) +~bgr2.set(\amp, 0.05) +~bgr2.release(10) + +~cgr1 = Synth(\bgrain, [\bufnum, c, \amp, 0.2, \rate, 1 ]) +~cgr1.set(\amp, 0.05) + +Pdef(\bsln1).play.quant_(1); +Pbindef(\bsln1, \dur, Pseq([1,2,3] * 1/4, inf)) +Pbindef(\bsln1, \amp, 0.05) +Pbindef(\bsln1, \degree, Pseq([2,2,4,1], inf)) +Pbindef(\bsln1, \legato, 1, \releaseTime, 0.01) + +Pdef(\bsln1).stop; +Pdef(\bsln1).stop; + +Pdef(\strng1).play; +Pdef(\strng1).stop; +Pbindef(\strng1, \degree, 2) +Pbindef(\strng1, \oct, Pseq([[6,5,7], [4,5,7], [7,5,4]] -1,inf)) +Pbindef(\strng1, \oct, 3) +Pbindef(\strng1, \oct, 0) +Pbindef(\strng1, \dur, Pseq([3,2,1] * 2/6,inf)) + +Pbindef(\strng1, \mtranspose, Pstutter(12, Pseq([1, 0, -2, 3, -3],inf))) +Pbindef(\strng1, \mtranspose, Pseq([1, 0, -2, 3, -3],inf)) +Pbindef(\strng1, \mtranspose, Pseq([1, 0, -2, 3, -3],inf)) +Pbindef(\strng1, \mtranspose, 1) +Pbindef(\strng1, \degree, 2) +P + + + + + + + diff --git a/experiments.scd b/experiments.scd new file mode 100644 index 0000000..9008f5e --- /dev/null +++ b/experiments.scd @@ -0,0 +1,669 @@ + + +( +SynthDef(\bufCyc, { + arg bufnum, gate=1, freq=440, chanDetune=1, out=0, amp = 1, attackTime=0.01, releaseTime=1; + + var snd, env; + + env = Linen.kr(gate, attackTime:attackTime, releaseTime:releaseTime, doneAction:2); + + freq = [freq, freq * (1 + (chanDetune * 0.0005))]; + + snd = BufRd.ar( + numChannels: 1, + bufnum: bufnum, + //phase: LFSaw.ar(BufDur.ir(bufnum).reciprocal).range(0, BufFrames.ir(bufnum)), + phase: LFSaw.ar(freq).range(0, BufFrames.ir(bufnum)), + loop: 1, + interpolation: 2); + + snd = snd * amp * env; + Out.ar(out, snd); + +}).add; +) + +Pdef(\x32).play +Pdef(\x32).fadeTime = 0; +( +Pdef(\x32, + Pbind( + \instrument, \bufCyc, + \bufnum, [~getSmp.value("0043"),~getSmp.value("0043")], + \octave, [3,2,4], + \degree, Pseq([2,2,4,1], inf), + \detune, [0.1,0], + \chanDetune, 20, + \dur, Pseq([0.20,0.40,0.60],inf), + \legato, 1, + \amp, [0.3,0.5,0.1] * 0.5, + \releaseTime, 0.01 + )); +) + +Pdef(\x33).play +Pdef(\x33).fadeTime = 0; +( +Pdef(\x33, + Pbind( + \instrument, \bufCyc, + \bufnum, [~getSmp.value("0229"),~getSmp.value("0229")], + \octave, Prand([[6,5,7],[4,5,7],[7,5,4]],inf), + \degree, Pseq([[4,9],2,8,4,1], inf), + \mtranspose, Pseq([Pn([1],10),Pn([0],10)],inf), + \detune, [0,0.3], + \chanDetune, Pseq([-10,0,5,10,-5],inf), + \dur, Pseq([0.20,0.40,0.60],inf), + \legato, 0.1, + \amp, [0.3,0.5,0.1] * 0.1, + \releaseTime, Prand([1,2,3,4],inf) + )); +) +/////////////////////////////////////////////////////////////////////////////////// +s.scope +s.meter +x = Synth(\bufCyc, [\bufnum, ~getSmp.value("AKWF_0001"),\freq, 41.midicps, \chanDetune, 100]); +y = Synth(\BufCycle, [\bufnum, ~getSmp.value("AKWF_0001"),\freq, 42.midicps, \chanDetune, 0]); +x = Synth(\BufCycle, [\bufnum, ~getSmp.value("AKWF_0043"),\freq, 75]); +x = Synth(\BufCycle, [\bufnum, ~getSmp.value("AKWF_0001")]); +~getSmp.value("AKWF_0001").plot + +s.makeGui +( +Ppar([ +Pbind( + \instrument, \bufCyc, + \bufnum, ~getSmp.value("AKWF_0043"), + \octave, 4, + \degree, Pseq([2,5,4,1], inf), + \detune, -1, + \dur, 1, + \legato, 0.5, + \amp, 0.5, + \releaseTime, 0.5 +), + +Pbind( + \instrument, \bufCyc, + \bufnum, ~getSmp.value("AKWF_0043"), + \octave, 4, + \degree, Pseq([2,5,4,1], inf), + \detune, 0, + \dur, 1, + \legato, 0.5, + \amp, 0.5, + \releaseTime, 0.5 +)]).play; +) + +s.scope + + + + +{SinOsc.ar(75) * [0,0.5]}.play +x.free + +a = { 10.rand }; b = a.reciprocal; postln("a: " + a.value); postln("1/" + a.value + " = " + b.value); + + 3.reciprocal + + + + + + + + + + + + + + +/////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + +~smpBuffers.postln; + +x = Synth(\softSaw); +x.release + +y = Synth(\granulator, [\bufnum, ~smpBuffers.at(0)]) +y.set(\amp,0.4) +y.set(\spread,1) +y.set(\pan, 0) +y.set(\gate, 0) + +// how to match filename to bufnum +z = Synth(\bufPlayer, [\bufnum, ~smpBuffers.at("Ljuben Dimkaroski plays the Divje Babe Bone Flute-AZCWFcyxUhQ.wav")]) +z = Synth(\bufPlayer, [\bufnum, ~smpBuffers.detect { |buf| buf.path == "/home/random/Cloud/cloud.tmp.si/Projects/ark'd betwix/scd/smp/Ljuben Dimkaroski plays the Divje Babe Bone Flute-AZCWFcyxUhQ.wav" }]) +z = Synth(\bufPlayer, [\bufnum, ~smpBuffers.detect { |buf| "Divje Babe Bone Flute".matchRegexp(buf.path) }]) +z = Synth(\bufPlayer, [\bufnum, ~getSmp.value("Divje Babe Bone Flute")]) +~getSmp.value("AKWF_0043"), +~smpBuffers.detect { |buf| buf.path == .... } + +z.free + + + +~smpBuffers.dump + + + + + + +/////////////////////////////////////////////////////////////////////////////////////////// + +~smpBuffers[1].plot + +// buffer oscilator +( +Ndef(\bosc, { + var buffer = ~getSmp.value("AKWF_0001"), freq = 30, oscDetune = 1.01, amp = 0.2; + BufRd.ar(1, bufnum:buffer, phase: LFSaw.ar([freq,freq*oscDetune]) * BufFrames.ir(buffer)) * amp + //+ SinOsc.ar(60.2) * 0.5; +} ); +) + +Ndef(\bosc).play +Ndef(\bosc).fadeTime=2; +Ndef(\bosc).clear + +/////////////////////////////////////////////////////////////////////////////////////////////// +// creating buffers and filling them with waveforms + +a = Harmonics.new(16); // just returns an instance of Harmonics with size +b = Buffer.alloc(s, 512, 1); +( +z = SynthDef("help-Osc",{ arg out=0,bufnum=0; + Out.ar(out, + LeakDC.ar( + Osc.ar(bufnum, [50,50.2], 0, 0.5) + + Osc.ar(bufnum, [50.01,50.21], 0, 0.5) + ) + ) +}); +) +a.ramp(1.0, 2.0); +a.ramp(0.5, -0.025) + +( +b.sine2( + freqs: a.ramp(1,1).postln, + amps: a.ramp(0, 0.01).postln, + amps: [0.8,0,0.1,0,0,0.1,0,0,0.01,0,0.01,0,0.02,0,0,0].postln, + normalize:false, asWavetable:true, clearFirst:true); +) +b.plot + + +a.formant(6, 4); +( +b.sine2( + freqs: a.ramp(0,0.1).postln, + amps: a.ramp(1,3), + normalize:true, asWavetable:true, clearFirst:true).plot; +) +b.sine2(a.ramp(1.0,0.1).postln, a.geom(1.2), true, true, true); +c = b.plot; + +y = z.play(s,[\out, 0, \bufnum, b]); +y.free; + +{SinOsc.ar()}.play + +( +z = SynthDef("help-Osc",{ arg out=0,bufnum=0; + Out.ar(out, + Osc.ar(bufnum, 200, 0, 0.5) + ) +}); +) + + +//////////////////// +a.ramp(1.0, 1.0); // returns a harmonic series + +b = Buffer.alloc(s, 512, 1); +// harmonic series for freqs, ramp down for amps +b.sine2(a.ramp(1.0, 1.0).postln, a.ramp(0.5, -0.025).postln, true, true, true); +( +z = SynthDef("help-Osc",{ arg out=0,bufnum=0; + Out.ar(out, + Osc.ar(bufnum, 200, 0, 0.5) + ) +}); +) +y = z.play(s,[\out, 0, \bufnum, b]); +y.free; + +a.decay(1.0); + +b.sine2(a.rand(0.1, 0.9).postln, a.rand(0,1).postln, true, true, true); +b.plot +y = z.play(s,[\out, 0, \bufnum, b]); +y.free; + + + +a.teeth(6, 4); + +b.sine2(a.teeth(6, 4).postln, a.teett(2.2).postln, true, true, true); +y = z.play(s,[\out, 0, \bufnum, b]); +b.sine2(a.teeth(9, 1).postln, a.geom(1.2), true, true, true); +b.sine2(a.teeth(1, 3).postln, a.geom(1.2), true, true, true); +b.sine2(a.teeth(2, 3).postln, a.geom(1.2), true, true, true); +y.free; + +/////////////////////////////////////////////////////////////////////////////////////////// + +// create a stere bus of verbDelayFX +~reverBus = Bus.audio(s,2); + + +Ndef(\ba).play(~reverBus, addAction: \addToHead) + +// reverb delay +~reverbDelay = Synth(\verbDelayFX, [\inBus, ~reverBus, \outBus, 0], addAction: \addAfter); +~reverbDelay = Synth(\verbDelayFX, [\inBus, ~reverBus, \outBus, 0], addAction: \addToTail); +~reverbDelay = Synth(\verbDelayFX, [\inBus, ~reverBus, \outBus, 0]); + +~reverbDelay.set(\revWet, 1); +~reverbDelay.set(\dlyWet, 0.5); + +~reverbDelay.free + + +Ndef(\ba).fadeTime=0.01; // for Patterns we don't want crossfade, but quantization + +// set default quant +Ndef(\ba).proxyspace.quant = 2; + +( +Ndef(\ba, + Pbindf( + Ppar([ + Pbind( + \octave, [4,5,7], + \amp, [0.1,0.2,0.005], + \degree, Pseq([0,3,4,2,6,Prand([3,4,2,6])], inf), + \dur, Prand([1,0.5,2], 250), + ), + Pbind( + \octave, [3,6], + \degree, Pseq([[0,-3],4,6,3,2], inf), + \dur, Pseq([Rest(30),Pseq([3.5,5], 30)]), + //\dur, Pseq([3.5,5], 30), + \amp, 0.05, + \legato, 0.6, + \attackTime, 2, + \releaseTime, 2, + )]), + // common parameters + \instrument, \sinPulz, + \oscDetune, Prand([1,3,5,7]*0.01, inf), + \scale, Pseq([Scale.minor.tuning_(\et12),Scale.minor.tuning_(\et12),Scale.minor.tuning_(\just)],inf), + \cutoff, Prand([0.5,1,1.5], inf), + \mtranspose, Pseq([Pn([1],30),Pn([2],10),Pn([1],20),Pn([0],5)],inf), + \out, ~reverBus + )) +) + +Ndef(\ba).play + +Tuning.directory +Ndef(\ba).stop(1); +Ndef(\ba).clear; + +//////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +/////////////////////////////////////////////////////////////////////////////////////// + +//testng patterns + +( +Pbind( + \instrument, \softSaw, + \octave, 2, + \degree, Pseq([2,5,4,1], inf), + \dur, 3, + \legato, 1, + \amp, 0.5, + \releaseTime, 0 +).play; +) + + + + +//////////////////////////////////////////////////////////////////////////////////////// + + +// PlayBufer: +( +SynthDef(\bufPlayer, {|out = 0, bufnum = 0 | + Out.ar(out, + PlayBuf.ar(1, bufnum, BufRateScale.kr(bufnum), loop: 1.0) + ) +}).play(s, [\bufnum, ~smpBuffers.at(0)]); +) + +~bufplay = Synth(\bufPlayer, [ \bufnum, ~smpBuffers.at(0)]) + +( +SynthDef(\granulator, { + arg out = 0, bufnum = ~smpBuffers.ar(2), dur=0.2, freq=140, amp=0.2; + var snd; + + snd = GrainBuf.ar(numChannels: 2, + trigger: Impulse.kr(freq * LFNoise0.kr(freq).range(0.5,1.5)), + dur: dur, + sndbuf: bufnum, + rate: [0.2,0.3,0.4,0.5], + pos:LFTri.ar(0.0001, iphase:[0.5,1,0,2]).range(0,1), + interp: 4, + maxGrains: 1024, + pan: [ + LFNoise1.kr(0.1).range(-1,1), + LFNoise1.kr(0.1).range(-1,1), + LFNoise1.kr(0.1).range(-1,1), + LFNoise1.kr(0.1).range(-1,1) + ] + ); + + snd = Splay.ar(snd, spread:1); + + Out.ar(out, snd * amp); +}).play; +) + +~smpBuffers.do(_.free); +~smpBuffers.at(0).free; +s.meter + +( +SynthDef("sawM", { + arg out=0, freq=90, gate=1, fadeTime=1, amp=0.5; + var snd, env; + + snd = Saw.ar({freq/2 * LFNoise1.ar().range(0.95,1.05) } ! 2) + + Saw.ar({freq * LFNoise1.ar().range(0.95,1.05) } ! 2, ) + //+ (Saw.ar({freq * 2 * LFNoise1.ar().range(0.95,1.05) } ! 2) * 0.4) + // + (Saw.ar({freq * 4 * LFNoise1.ar().range(0.95,1.05) } ! 2) * 0.2) + ; + //snd = Saw.ar({freq/2 * LFNoise1.ar().range(0.95,1.05)} ! 4); + //snd = snd + Saw.ar([freq/2,freq]/2 * LFNoise1.ar().range(0.95,1.05))!3; + snd = Splay.ar(snd, spread:1, level:1, center:0); + env = EnvGen.kr( Env([0, 1, 0], [fadeTime, fadeTime], \sin, 1), + gate, doneAction: Done.freeSelf); + + snd = snd * env * amp; + + Out.ar(out, snd); +}).play; +); +s.scope + +// load samples + + + +// load busses + + + +// load patterns + +2.rand + + + + + + + + +( +x = { arg spread=1, level=1, center=0.0; + Splay.ar( + SinOsc.ar( { |i| LFNoise2.kr(1).exprange(200, 4000) } ! 10) * -12.dbamp, + spread, + level, + center + ); +}.play; +) + + + +b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav"); + +( +x = { + arg out = 0, bufnum, dur=0.2, freq=140, amp=0.5; + var snd; + + snd = GrainBuf.ar(numChannels: 2, + trigger: Impulse.kr(freq * LFNoise0.kr(freq).range(0.5,1.5)), + dur: dur, + sndbuf: bufnum, + rate: [0.2,0.3,0.4,0.5], + pos:LFTri.ar(0.01, iphase:[0.5,1,0,2]).range(0,1), + interp: 4 + ); + + //snd = [snd.at(0),snd.at(1)] + [snd.at(3),snd.at(2)] * 0.2; + snd = Splay.ar(snd * amp, spread:1); + //Mix(snd * 0.25); + + //Out.ar(out, snd); +}.play(s,[\bufnum, b]); +) + +s.scope + + + +{ Mix.new([ PinkNoise.ar(0.1), FSinOsc.ar(801, mul:0.1), LFSaw.ar(40, mul:0.1)]) }.play + + +( +play({ + VarSaw.ar( + freq: LFPulse.kr([1,4], 0, 0.3, 200, 200), // freq + iphase: 0, + width: LFTri.kr(0.2).range(0,1), //width + mul: 0.1) +}); + +) + + +( +play({ + VarSaw.ar([50,50.5], 0, SinOsc.kr(0.01,1).range(0.05,0.95), 0.5)!2 + + VarSaw.ar([101,99.3], 0, SinOsc.kr(0.06,0).range(0.2,0.8) , 0.5)!2 * 0.2 +});) + + +( +SynthDef(\softSaw, { + arg out = 0, freq = 40, detune = 0.1, amp = 1, pan = 0, + gate = 1, attackTime = 0.1, susLevel = 1.0, releaseTime = 1.0; + var env, snd; + detune = detune * 0.1; + amp = amp * 0.4; + + env = Linen.kr(gate, attackTime, susLevel, releaseTime); + + snd = VarSaw.ar( + freq: [freq, freq * (1.003+detune)], + width: SinOsc.kr(0.01,0.2).range(0.05,0.095)); + snd = snd + VarSaw.ar( + freq: [(freq*2 * (1.001-detune)),(freq*2 * (1+detune))], + width: SinOsc.kr(0.06,0.8).range(0.2,0.8)); + + + snd = Balance2.ar(snd.at(0), snd.at(1), pos: pan); + + snd = snd * amp * env; + + Out.ar(out, snd); + +}).play); + + + +Linen.kr() + + + + + +( +SynthDef(\granulator, { + + arg out = 0, bufnum = ~getSmp.value("AKWF_0042"), grainDur=0.2, grainFreq=40, amp=0.2, + gate = 1, attackTime = 0.1, susLevel = 1.0, releaseTime = 1.0, + spread = 1, pan = 0, seed = 1924, id=0; + var snd, env; + + RandID.ir(id); + RandSeed.ir(1, seed); + spread = spread * abs(abs(pan)-1); + + env = Linen.kr(gate, attackTime, susLevel, releaseTime); + snd = GrainBuf.ar(numChannels: 1, + trigger: Impulse.kr(grainFreq * LFNoise0.kr(grainFreq).range(0.5,1.5)), + dur: grainDur, + sndbuf: bufnum, + //rate: [0.2,0.3,0.4,0.5], + rate: 1, + pos:LFTri.ar(0.0001, iphase:[IRand(0,1),IRand(0,1),IRand(0,1),IRand(0,1)]).range(0,1), + interp: 4, + maxGrains: 1024, + pan: [ LFNoise1.kr(0.1).range(-1,1), + LFNoise1.kr(0.1).range(-1,1), + LFNoise1.kr(0.1).range(-1,1), + LFNoise1.kr(0.1).range(-1,1) ] + ); + snd = Splay.ar(snd, spread:spread, level:amp, center: pan); + snd = snd * env; + + Out.ar(out, snd); +}).play; +); + + + + + + + + + + +( +SynthDef(\amodulor, { + arg out = 0; + var snd; + + + + snd = Pan2.ar(snd); + Out.ar(out, snd); +}).play; +) + + + +Ndef(\amodulor).play; +Ndef(\amodulor).fadeTime = 1; + +( +SynthDef(\amodulor, { + var snd, freq, ampmod; + freq = Env.new([500, 70, 40],[0.02, 1]).kr; + ampmod = LFSaw.ar(SinOsc.kr(0.1).range(22,39)).range(0,1); + snd = SinOsc.ar([freq,freq*1.9], mul:ampmod) * Env.perc(0.01, 1).kr(2)!2; + snd = LPF.ar(snd, Env.perc(0.001,0.3).kr(0) * 5000 + 200); + Out.ar(0, snd * 0.5); +}).add; +) + +Pdef(\kicker).play(t) + +TempoClock.default = 90/60; +t = TempoClock.tempo = 90/60; +TempoClock.default; + +( +Pdef(\kicker, Ppar([ + Pbind(\instrument, \amodulor, + \dur, Pseq([3/4,2/4,4/4,4/4,1/8,2/4,1/8], inf) + + ), + Pbind(\instrument, \sn, + \dur, Pseq([Rest(1),4/4]/2, inf), + \amp, 0.7 + //\dur, 1 + + ) + +])) + +) + + +{SinOsc.ar * 0}.play + + diff --git a/init.scd b/init.scd new file mode 100644 index 0000000..473bfa8 --- /dev/null +++ b/init.scd @@ -0,0 +1,42 @@ + +// LOADS ALL .scd files in lib/ folder and samples in smp/ folder + +// library path +var libPath = PathName(thisProcess.nowExecutingPath.dirname +/+ "lib"); +// samples path +var smpPath = PathName(thisProcess.nowExecutingPath.dirname +/+ "smp"); + + +// load samples +"\n--- load samples: ...".postln; + +// free all buffers to restart buffer count +~smpBuffers.do(_.free); + +// create Dictionary +~smpBuffers = Dictionary(); + +// iterate over each file in the folder +smpPath.filesDo({ |smpfile,i| + + // tell me what you are loading: + postln(" " + i + smpfile.fileName ); + + // add a sample into a buffer, store object to Dictionary + ~smpBuffers.add(smpfile.fileName -> Buffer.readChannel(s, + smpfile.fullPath, channels:[0])); +}); + +// load libs +"\n--- load libs: ...".postln; + +// for each files in that lib folder +libPath.filesDo({|afile| + // tell me what you're executing: + postln(" ." + afile.fileName); + + // execute it: + this.executeFile(afile.fullPath); +}); + +"\n\n=== \n".postln; \ No newline at end of file diff --git a/lib/bufCyc.scd b/lib/bufCyc.scd new file mode 100644 index 0000000..08b11e6 --- /dev/null +++ b/lib/bufCyc.scd @@ -0,0 +1,30 @@ + +SynthDef(\bufCyc, { + arg bufnum, gate=1, freq=440, chanDetune=1, out=0, amp = 1, + attackTime=0.01, releaseTime=1 + //, lpf=10, freso=0, fdist=0 + ; + var snd, env, lpfreq; + + env = Linen.kr(gate, attackTime:attackTime, releaseTime:releaseTime, doneAction:2); + freq = [freq, freq * (1 + (chanDetune * 0.0005))]; + snd = BufRd.ar( + numChannels: 1, + bufnum: bufnum, + phase: LFSaw.ar(freq).range(0, BufFrames.ir(bufnum)), + loop: 1, + interpolation: 2); + + /* lpfreq = freq * lpf; + lpfreq = lpfreq.max(100); + lpfreq = lpfreq.min(18000); + + //snd = RLPFD.ar(snd, lpfreq, freso, fdist) * 3; + */ + + snd = snd * amp * env; + Out.ar(out, snd); +}).add; + + + diff --git a/lib/bufPlayer.scd b/lib/bufPlayer.scd index f8c64d6..a5ec7e7 100644 --- a/lib/bufPlayer.scd +++ b/lib/bufPlayer.scd @@ -5,3 +5,21 @@ SynthDef(\bufPlayer, {|out = 0, bufnum = 0 | ) }).add; ); + + +( +SynthDef(\smplr, {|out = 0, revBus, bufnum = 0, gate = 1, amp = 1, pan = 0, rate = 1, revWet = 0 | + var snd, env; + + snd = PlayBuf.ar(1, bufnum, BufRateScale.kr(bufnum) * rate, loop: 0); + env = EnvGen.kr(envelope: Env.cutoff(0.001,1), gate: gate, doneAction:Done.freeSelf); + snd = snd * env * amp; + snd = Pan2.ar(snd, pan); + Out.ar(out, snd); + + //Out.ar(revBus * revWet, snd); + +}).add; +); + + diff --git a/lib/drums1.scd b/lib/drums1.scd new file mode 100644 index 0000000..06a585d --- /dev/null +++ b/lib/drums1.scd @@ -0,0 +1,226 @@ + +// "additive synth kick" +SynthDef(\addbd, { + arg out=0, freq=77, amp=0.1; + var osc, clip, env, penv, nenv; + + penv = EnvGen.ar( + Env(levels: [1, 1, 0.5 ], times:[ 0.01, 0.3 ], curve:[0,0]) + ); + osc = FSinOsc.ar([freq,freq*1.01] * penv); + + nenv = EnvGen.ar(Env(levels:[1,1,0], times:[0.001,0.008], curve:0)); + osc = osc + (BPF.ar(WhiteNoise.ar(0.05), freq * 100,0.1) * nenv); + osc = osc + (BPF.ar(WhiteNoise.ar(0.05), freq * 70,0.1) * nenv); + osc = osc + (BPF.ar(WhiteNoise.ar(0.1), freq * 33,0.1) * nenv); + + osc = osc + (BPF.ar(WhiteNoise.ar(0.1), freq * 19, 0.3) + * EnvGen.ar(Env(levels: [1,1,0], times: [0.1,1], curve:-9)) * 0.1 + ); + + env = EnvGen.ar(Env.perc(0, 0.55), doneAction: 2); + osc = osc * env; + osc = osc.softclip; + Out.ar(out, Pan2.ar(osc[0]+osc[1] * amp, 0)); +}).add; + +( +// "LFTri bass drum kick" - by luka@lukaprincic.si +SynthDef(\tribd, { + arg out=0, gate=1, freq=77, amp=0.1; + var snd, 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]; + 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.9), 3000) + * Env([1,1,0], [0.004,0.005]).kr ); + snd = snd + ( BPF.ar(WhiteNoise.ar(2), 9000) + * Env([1,1,0], [0.013,0.001]).kr ); + + aenv = Env([1,1,0], [0.2,2], curve: -9).kr; + snd = 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; +); + + +///////////////////////////////////////////////////////////////// +// SC-808 drum kit + +// SC808 drum snare +SynthDef.new(\sc808sn, { + arg amp=2, tone=340, tone2=189, snappy=0.7, gate=1, amp2=1, out=0; + var noiseEnv, atkEnv, sig, noise, osc1, osc2, sum; + noiseEnv = EnvGen.kr(Env.perc(0.001, 4.2, 1, -115), doneAction:0); + atkEnv = EnvGen.kr(Env.perc(0.001, 0.8,curve:-95), doneAction:2); + noise = WhiteNoise.ar; + noise = HPF.ar(noise, 1800); + noise = LPF.ar(noise, 8850); + noise = noise * noiseEnv * snappy; + osc1 = SinOsc.ar(tone2, pi/2) * 0.6; + osc2 = SinOsc.ar(tone, pi/2) * 0.7; + sum = (osc1+osc2) * atkEnv * amp2; + sig = Pan2.ar(((noise*1) + sum) * amp * 2.5, 0); + sig = HPF.ar(sig, 340); + Out.ar(out, sig); +}).add; + +SynthDef.new(\sc808clap, { + arg amp=1, gate=0, out=0; + var atkenv, atk, decay, sum, denv; + atkenv = EnvGen.kr(Env.new([0.5,1,0],[0, 0.3], -160), doneAction:2); + denv = EnvGen.kr(Env.dadsr(0.026, 0, 6, 0, 1, 1, curve:-157), doneAction:0); + atk = WhiteNoise.ar * atkenv * 1.4; + decay = WhiteNoise.ar * denv; + sum = atk + decay * amp; + sum = HPF.ar(sum, 500); + sum = BPF.ar(sum, 1062, 0.5); + Out.ar(out, Pan2.ar(sum * 1.5, 0)); +}).add; + +SynthDef.new(\sc808rimshot, { + arg amp=1, out=0; + var fenv, env, sig, punch, tri1, tri2; + env = EnvGen.kr(Env.new([1, 1, 0], [0.00272, 0.07], -42), doneAction:2); + tri1 = LFTri.ar(1667 * 1.1, 1) * env; + tri2 = LFPulse.ar(455 * 1.1, width:0.8) * env; + punch = WhiteNoise.ar * env * 0.46; + sig = tri1 + tri2 + punch; + sig = BPeakEQ.ar(sig, 464, 0.44, 8); + sig = HPF.ar(sig, 315); + sig = LPF.ar(sig, 7300); + sig = Pan2.ar(sig * amp, 0); + Out.ar(out, sig); +}).add; + +SynthDef.new(\sc808claves, { + arg amp=1, out=0; + var env, sig; + env = EnvGen.kr(Env.new([1, 1, 0], [0, 0.1], -20), doneAction:2); + sig = SinOsc.ar(2500, pi/2) * env * amp; + sig = Pan2.ar(sig, 0); + Out.ar(out, sig); +}).add; + +SynthDef.new(\sc808cow, { + arg amp=1, out=0; + var sig, pul1, pul2, env, atk, atkenv, datk; + atkenv = EnvGen.kr(Env.perc(0, 1, 1, -215),doneAction:0); + env = EnvGen.kr(Env.perc(0.01, 9.5, 1, -90),doneAction:2); + pul1 = LFPulse.ar(811.16); + pul2 = LFPulse.ar(538.75); + atk = (pul1 + pul2) * atkenv * 6; + datk = (pul1 + pul2) * env; + sig = (atk + datk) * amp; + sig = HPF.ar(sig, 250); + sig = LPF.ar(sig, 4500); + sig = Pan2.ar(sig, 0); + Out.ar(out, sig); +}).add; + +SynthDef.new(\sc808hh, { + arg decay=0.42, amp=1, pan=0, out=0; + var sig, sighi,siglow, sum, env, osc1, osc2, osc3, osc4, osc5, osc6; + env = EnvGen.kr(Env.perc(0.005, decay, 1, -30),doneAction:2); + osc1 = LFPulse.ar(203.52); + osc2 = LFPulse.ar(366.31); + osc3 = LFPulse.ar(301.77); + osc4 = LFPulse.ar(518.19); + osc5 = LFPulse.ar(811.16); + osc6 = LFPulse.ar(538.75); + sighi = (osc1 + osc2 + osc3 + osc4 + osc5 + osc6); + siglow = (osc1 + osc2 + osc3 + osc4 + osc5 + osc6); + sighi = BPF.ar(sighi, 8900, 1); + sighi = HPF.ar(sighi, 9000); + siglow = BBandPass.ar(siglow, 8900, 0.8); + siglow = BHiPass.ar(siglow, 9000, 0.3); + sig = BPeakEQ.ar((siglow+sighi), 9700, 0.8, 0.7); + sig = sig * env * amp; + sig = Pan2.ar(sig, pan); + Out.ar(out, sig); +}).add; + +SynthDef.new(\sc808oh, { + arg decay=0.5, amp=4, pan=0, out=0; + var sig, siga, sigb, env1, env2, osc1, osc2, osc3, osc4, osc5, osc6, sum; + env1 = EnvGen.kr(Env.perc(0.1, decay, curve:-3), doneAction:2); + env2 = EnvGen.kr(Env.new([0, 1, 0], [0, decay*5], curve:-150), doneAction:0); + osc1 = LFPulse.ar(203.52) * 0.6; + osc2 = LFPulse.ar(366.31) * 0.6; + osc3 = LFPulse.ar(301.77) * 0.6; + osc4 = LFPulse.ar(518.19) * 0.6; + osc5 = LFPulse.ar(811.16) * 0.6; + osc6 = LFPulse.ar(538.75) * 0.6; + sig = osc1 + osc2 + osc3 + osc4 + osc5 +osc6; + sig = BLowShelf.ar(sig, 990, 2, -3); + sig = BPF.ar(sig, 7700); + sig = BPeakEQ.ar(sig, 7200, 0.5, 5); + sig = BHiPass4.ar(sig, 8100, 0.7); + sig = BHiShelf.ar(sig, 9400, 1, 5); + siga = sig * env1 * 0.6; + sigb = sig * env2; + sum = siga + sigb; + sum = LPF.ar(sum, 4000); + sum = Pan2.ar(sum, 0); + sum = sum * amp * 2; + Out.ar(out, sum); +}).add; + +SynthDef.new(\sc808cymb, { + arg decay=2, amp=20, pan=0, gate=0, tone=0.002, out=0; + var sig, sig1,sig2, sig2a, sig2b, sig3, env1, env2, env2b, env3, osc1, osc2, osc3, osc4, osc5, osc6, sum; + env1 = EnvGen.kr(Env.perc(0.3, decay, curve:-3), doneAction:2); + env2 = EnvGen.kr(Env.new([0, 0.6, 0], [0.1, decay*0.7], -5), doneAction:0); + env2b = EnvGen.kr(Env.new([0, 0.3, 0], [0.1, decay*20], -120), doneAction:0); + env3 = EnvGen.kr(Env.new([0, 1, 0], [0, decay*5], curve:-150), doneAction:0); + osc1 = LFPulse.ar(203.52) * 0.6; + osc2 = LFPulse.ar(366.31) * 0.6; + osc3 = LFPulse.ar(301.77) * 0.6; + osc4 = LFPulse.ar(518.19) * 0.6; + osc5 = LFPulse.ar(811.16) * 0.6; + osc6 = LFPulse.ar(538.75) * 0.6; + sig = osc1 + osc2 + osc3 + osc4 + osc5 +osc6; + sig1 = BLowShelf.ar(sig, 2000, 1, 5); + sig1 = BPF.ar(sig1, 3000); + sig1 = BPeakEQ.ar(sig1, 2400, 0.5, 5); + sig1 = BHiPass.ar(sig1, 1550, 0.7); + sig1 = LPF.ar(sig1, 3000); + sig1 = BLowShelf.ar(sig1, 1000, 1, 0); + sig1 = sig1 * env1 * tone; + sig2 = BLowShelf.ar(sig, 990, 2, -5); + sig2 = BPF.ar(sig2, 7400); + sig2 = BPeakEQ.ar(sig2, 7200, 0.5, 5); + sig2 = BHiPass4.ar(sig2, 6800, 0.7); + sig2 = BHiShelf.ar(sig2, 10000, 1, -4); + sig2a = sig2 * env2 * 0.3; + sig2b = sig2 * env2b * 0.6; + sig3 = BLowShelf.ar(sig, 990, 2, -15); + sig3 = BPF.ar(sig3, 6500); + sig3 = BPeakEQ.ar(sig3, 7400, 0.35, 10); + sig3 = BHiPass4.ar(sig3, 10500, 0.8, 2); + sig3 = sig3 * env3; + sum = sig1 + sig2a + sig2b + sig3; + sum = LPF.ar(sum, 4000); + sum = Pan2.ar(sum, 0); + sum = sum * amp; + Out.ar(out, sum); +}).add; + + + diff --git a/lib/functions.scd b/lib/functions.scd new file mode 100644 index 0000000..1e3c7b7 --- /dev/null +++ b/lib/functions.scd @@ -0,0 +1,8 @@ +( +// function to partially match filename for buffers +~getSmp = { |regexp| + ~smpBuffers.detect { |buf| + regexp.matchRegexp(buf.path) + } +}; +) diff --git a/lib/fx.scd b/lib/fx.scd new file mode 100644 index 0000000..a44f68e --- /dev/null +++ b/lib/fx.scd @@ -0,0 +1,17 @@ +( // reverb +SynthDef(\reverb, { + arg inBus, out=0, amp=1; + var input, snd; + input = In.ar(inBus, numChannels:2); + + snd = JPverb.ar(input * amp); + + Out.ar(out, snd * amp); +}).add; +); + +// ( // delay ) + +//s.options.memSize_(65536 * 4); +//s.reboot; + diff --git a/lib/livecodedefs.scd b/lib/livecodedefs.scd new file mode 100644 index 0000000..61a3fbf --- /dev/null +++ b/lib/livecodedefs.scd @@ -0,0 +1,502 @@ +( +SynthDef(\recIn, { arg out = 0, bufnum = 0; + var snd = SoundIn.ar(0,1); + RecordBuf.ar(snd, bufnum, doneAction: Done.freeSelf, loop: 0); +}).add; +); + +( +SynthDef(\verbDelayFX, { + arg inBus, outBus, revWet=0.8, dlyWet=0.8, feedback = 0.5 ; + + var snd = In.ar(inBus, 2); + var verb = JPverb.ar(snd); + var delay = Greyhole.ar(snd, feedback: feedback); + + snd = snd + (verb * revWet) + (delay * dlyWet) * 0.5; + Out.ar(outBus, snd); +}).add; +); + +( +SynthDef(\bgrain, { |out = 0, gate = 1, amp = 0, bufnum, gfreq=90, rate=0.5| + var snd, pan, env, freqdev; + pan = LFNoise1.kr(0.1).range(-1, 1) * LFNoise0.kr(gfreq).range(0.2,1); + env = EnvGen.kr( + Env([0, 1, 0], [1, 1], \sin, 1), + gate, + doneAction: Done.freeSelf); + + snd = GrainBuf.ar( + numChannels:2, + trigger:Impulse.kr(LFNoise1.kr(gfreq).range(0.8,1) * gfreq), + dur: 0.2 * LFNoise0.kr(gfreq).range(1,1.2), + sndbuf: bufnum, + rate: [rate * LFNoise1.kr.range(0.99, 1), rate * LFNoise1.kr.range(0.99, 1)], + pos: LFNoise2.kr(0.05).range(0, 1) * LFNoise0.kr(gfreq).range(1,1.02), + //pos: LFTri.kr(0.25), + interp: 2, + pan: pan); + + snd = RLPF.ar(snd, freq: LFNoise2.kr(0.1).exprange(400,10000)); + snd = snd * LFTri.ar(0.073).range(0.1,1); + snd = snd * env * amp; + + Out.ar(out, snd); + +}).add; +); + + + + +( +SynthDef(\henonSynth1, { + + arg out=0, amp=0.5, gate=1, fadeTime=1, lpff=200, hpff=200, pan=0; + var sig, freq, env, lpfsig, hpfsig; + + freq = HenonN.ar( + freq: 5000, + a: LFNoise2.kr(1, 0.2, 1.2), + b: LFNoise2.kr(1, 0.15, 0.15), + mul: 0.6 + ); + + // used as frequency modulator + sig = Pulse.ar( + freq: freq.range(40, LFNoise2.kr(0.1).range(1000,10000)), + mul: 0.2); + sig = sig.ring3(0.5); + sig = sig.clip2(0.8); + lpfsig = LPF.ar(sig, lpff.max(50)); + hpfsig = HPF.ar(sig, hpff.max(50)); + sig = lpfsig + hpfsig; + sig = LeakDC.ar(sig); + + env = EnvGen.kr( Env([0, 1, 0], [fadeTime, fadeTime], \sin, 1), + gate, doneAction: Done.freeSelf); + + sig = sig * env * amp; + sig = Pan2.ar(sig, pan); + + Out.ar(out,sig); +}).add; +); + +( // henonN + henonC controlling filter * volume +SynthDef(\henonLsynth1, { + arg out=0, hpfreqmin=100, pan=0; + var snd; + + snd = (BrownNoise.ar() + Mix(SinOsc.ar(HenonN.ar(4,a:[1.4,1.1] ).range(200,400)))) * HenonN.ar(freq:1).range(0,0.5); + snd = RHPF.ar(snd, HenonC.ar(freq:1).fold(0,1).exprange(hpfreqmin,7000), rq:1); + snd = snd * HenonC.ar(0.5).range(0.6,1); + snd = Pan2.ar(snd, pan); + Out.ar(out, snd); +}).add; +); + + +( +// henonLsynth = dark brooding melodic drone-noise +SynthDef(\henonLsynth2, { + arg out, gate=1, fadeTime=1, amp=1, pan=0; + var sig, sinfreq, env; + + env = EnvGen.kr(Env(levels: [0,1,0], times: [fadeTime, fadeTime], curve: \sin, releaseNode: 1), + gate, doneAction: 2); + + sinfreq = LFPulse.kr( freq: 0.9, width:0.1); + sinfreq = sinfreq.range( + LFPulse.kr(0.073).range(37).midicps, + [44.midicps,53.3.midicps] + ); + sinfreq = sinfreq * SinOsc.kr(1).range(1,1.02); + + sig = SinOsc.ar(sinfreq); + sig = sig + (BrownNoise.ar(0.4) * SinOsc.kr(0.1).range(0,1)); + sig = sig * HenonN.ar(20).range(0,1).clip(0,1); + sig = RLPF.ar(sig, HenonC.ar(1).fold(0,1).exprange(40,1000), rq:0.4); + sig = sig.clip2(0.5); + sig = sig * HenonC.ar(0.5).range(0,0.5); + // sig = RHPF.ar(sig,5000); + + sig = sig + Greyhole.ar(sig * 0.6, feedback: 0.8, diff: 0.7, delayTime: 0.78123); + + sig = sig * env * amp; + + sig = Mix.new(sig); + sig = Pan2.ar(sig, pan); + Out.ar(out, sig); +}).add; +); + + + + +( // henonSquare being thrown around +SynthDef(\henonSquare, { + + arg out=0, gate=1, amp=0.5, pan=0; + + var env = EnvGen.kr(Env([0, 1, 0], [1, 4], \sin, 1), gate); + + var trig = HenonTrig.kr(); + + // wandering attractor into variable 'freq': + var freq = HenonN.ar( + TRand.kr(trig:trig).exprange(1,20), + // parameters: + //a: LFNoise2.kr(0.5).range(0.3,1.6), + //b: LFNoise2.kr(0.5).range(0,0.6) + //a: 1.4, + a: LFTri.kr(0.01,3).range(1,1.5), // ramp up and down, slowly + b: 0.3 + ).exprange(40,1000); + + // wandering attractor applied as frequency to squarewave: + var sig = Pulse.ar([freq,freq]); + + // adding sinwave for more clean deep/soft sound + sig = sig + SinOsc.ar([freq,freq*0.995]); + + // back to mono: + sig = Mix(sig); + + // fold distortion + sig = sig.fold2(0.5) * 2; + + // low pass filter to give sense of closing and opening + sig = LPF.ar(sig, LFNoise2.kr(0.2).exprange(100,20000)); + + sig = sig * env; + + // add space. lots of space + //sig = (sig * 0.5) + Greyhole.ar(sig * 0.5, delayTime:0.6, damp: 0.8, diff: 0, feedback:0.6,); + + DetectSilence.ar(sig, doneAction: Done.freeSelf); + + sig = Pan2.ar(sig, pan); + + sig = sig * amp; + + Out.ar(out,sig); +}).add; +); + + + +( +SynthDef(\granSoil, { + arg out=0, gate = 1, amp = 0.5, sndbuf, envbuf = -1, fadeTime=1, rate=0.8, dur=0.01, pan=0; + var snd, env, freqdev; + // use mouse x to control panning + //pan = MouseX.kr(-1, 1); + env = EnvGen.kr( + Env([0, 1, 0], [fadeTime, fadeTime], \sin, 1), + gate, + //levelScale: amp, + doneAction: Done.freeSelf); + + snd = GrainBuf.ar( + numChannels: 1, + trigger: Impulse.kr(200 * LFNoise2.kr(0.1).range(0.9,1.1)), + //dur: MouseY.kr.range(0.001,1), + //dur: SinOsc.kr(0.1).range(0.001,0.1), + dur: dur, + sndbuf: sndbuf, + rate: rate, // the playback rate of the sampled sound + //pos: MouseX.kr.range(0, 25) * LFNoise2.kr(20).range(0.999,1.001), + pos: LFNoise2.kr(0.001).range(0, 25) * LFNoise2.kr(20).range(0.999,1.001), + interp: 4, // 2: liner, 4: cubic + pan: 0, + envbufnum: envbuf, + maxGrains: 1024); + + + snd = Pan2.ar(snd, pan); + snd = snd * env * amp; + + Out.ar(out, snd); +}).add; +); + + +( +SynthDef(\latooTrigRing, { + arg out=0, freq=1000, min=1, max=10, decay=0.1, ffreq=1000, amp=1, gate=1, fadeTime=1, pan=0; + var snd, in, env; + + in = LatoocarfianTrig.ar(min,max); + snd = Ringz.ar(in, freq, decay); + snd = LPF.ar(snd, ffreq); + env = EnvGen.kr( + Env([0, 1, 0], [fadeTime, fadeTime], \sin, 1), + gate, doneAction: Done.freeSelf); + + snd = snd * env * amp; + snd = Pan2.ar(snd, pan); + Out.ar(out,snd) +}).add; +); + + + +( +SynthDef(\lorenzTrigRing, { + arg out=0, freq=1000, min=1, max=10, decay=0.1, ffreq=1000, amp=1, gate=1, fadeTime=1, pan=0; + var snd, in, env; + + in = LorenzTrig.ar(min,max); + snd = Ringz.ar(in, freq, decay); + snd = LPF.ar(snd, ffreq); + env = EnvGen.kr( + Env([0, 1, 0], [fadeTime, fadeTime], \sin, 1), + gate, doneAction: Done.freeSelf); + + snd = snd * env * amp; + snd = Pan2.ar(snd, pan); + Out.ar(out,snd) +}).add; +); + + +( +SynthDef(\fhnTrigRing, { + arg out=0, freq=1000, min=1, max=10, decay=0.1, ffreq=1000, amp=1, gate=1, fadeTime=1, pan=0; + var snd, in, env; + + in = FhnTrig.ar(min,max); + snd = Ringz.ar(in, freq, decay); + snd = LPF.ar(snd, ffreq); + env = EnvGen.kr( + Env([0, 1, 0], [fadeTime, fadeTime], \sin, 1), + gate, doneAction: Done.freeSelf); + + snd = snd * env * amp; + snd = Pan2.ar(snd, pan); + Out.ar(out,snd) +}).add; +); + + + + + + + +// ===================================================================== +// 'pre-Pdefs' +// ===================================================================== + +( +Pdef(\bd1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("bd01"), + \dur, Pseq([3/4, 1, 1, 1, 1/4],inf), + \amp, 0.5 +) +).quant_(8)); + +( +Pdef(\bd2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("bd02"), + \dur, Pseq([1+(1/4), 1, 1, 1/4],inf), + \amp, 0.5 +) +).quant_(8)); + +( +Pdef(\bd3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("bd03"), + \dur, Pseq([1+(1/4), 1, 1, 1/4],inf), + \amp, 0.5 +) +).quant_(8)); + +( +Pdef(\hh1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("hh01"), + \dur, 1/2, + \amp, Prand([1,1.2,0.8],inf), + \rate, Prand([0.99,1,1.01],inf), + \pan, Prand([-0.2, 0, 0.2], inf) +) +).quant_(8)); + +( +Pdef(\hh2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("hh02"), + \dur, 1/2, + \amp, Prand([1,1.2,0.8],inf), + \rate, Prand([0.99,1,1.01],inf), + \pan, Prand([-0.2, 0, 0.2], inf) +) +).quant_(8)); + +( +Pdef(\hh3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("hh03"), + \dur, 1/4, + \amp, Prand([1,1.2,0.8],inf), + \rate, Prand([0.99,1,1.01],inf), + \pan, Prand([-0.2, 0, 0.2], inf) +) +).quant_(8)); + +( +Pdef(\oh1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("oh01"), + \dur, Pseq([Rest(13/4),3/4],inf), + \amp, 0.4, + \pan, 0 +) +).quant_(8)); + +( +Pdef(\oh2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("oh02"), + \dur, Pseq([Rest(13/4),3/4],inf), + \amp, 0.4, + \pan, 0 +) +).quant_(8)); + +( +Pdef(\oh3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("oh03"), + \dur, Pseq([Rest(13/4),3/4],inf), + \amp, 0.4, + \pan, 0 +) +).quant_(8)); + +( +Pdef(\sn1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("sn01"), + \dur, Pseq([Rest(1),1],inf), + \amp, 2 +) +).quant_(8)); + +( +Pdef(\sn2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("sn02"), + \dur, Pseq([Rest(1),1],inf), + \amp, 2 +) +).quant_(8)); + +( +Pdef(\sn3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("sn03"), + \dur, Pseq([Rest(1),1],inf), + \amp, 2 +) +).quant_(8)); + +( +Pdef(\perc1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("perc07"), + \dur, Pseq([2],inf), + \amp, 1, + \rate, Prand((90..110) * 0.01,inf) +) +).quant_(8)); +( +Pdef(\perc2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("perc04"), + \dur, Pseq([ Pn(1/2,6), 1/4, 1/2, 1/4 ],inf), + \amp, 1, + \rate, Prand([0.8,0.9,1,1.1,1.2,1.5],inf) +)).quant_(8) +); + +( +Pdef(\perc3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("perc05"), + \dur, Pseq([ Pn(1/2,6), 1/4, 1/2, 1/4 ],inf), + // \amp, 0.5, + \rate, Prand((90..110) * 0.01,inf), + \pan, Prand([-0.2, 0, 0.2], inf) +)).quant_(8) +); + + +( +Pdef(\cl1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("cl01"), + \dur, Pseq([ Rest(1), 1.5 ],inf), + \amp, 1, + // \rate, Prand([0.8,0.9,1,1.1,1.2,1.5],inf) +) +).quant_(8)); +( +Pdef(\cl2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("cl04"), + \dur, Pseq([ Rest(1.5), 3/4 ],inf), + \amp, 1, + // \rate, Prand([0.8,0.9,1,1.1,1.2,1.5],inf) +)).quant_(8) +); + +( +Pdef(\cl3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("cl05"), + \dur, Pseq([ Rest(3/4), 6/4],inf), + // \amp, 0.5, + \rate, Prand((90..110) * 0.01,inf), + // \pan, Prand([-0.2, 0, 0.2], inf) +)).quant_(8) +); + + +( +Pdef(\gl1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("gl01"), + \dur, Pseq([1,3,2,3 ] / 3,inf), + \amp, 1, + // \rate, Prand([0.8,0.9,1,1.1,1.2,1.5],inf) +) +).quant_(8)); +//Pdef(\gl1).play +//s.scope(4) + +( +Pdef(\gl2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("gl04"), + \dur, Pseq([ 3,4,2,3,1 ] / 2,inf), + \amp, 1, + // \rate, Prand([0.8,0.9,1,1.1,1.2,1.5],inf) +)).quant_(8) +); + +( +Pdef(\gl3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("gl05"), + \dur, Pseq([ 4,3,4,3,4,2,1 ] / 4,inf), + // \amp, 0.5, + \rate, Prand((90..110) * 0.01,inf), + // \pan, Prand([-0.2, 0, 0.2], inf) +)).quant_(8) +); + +// BASSLINE + MELODIC LINES with buffer cycler + +( +Pdef(\bsln1, Pbind( \instrument, \bufCyc, + \bufnum, [~getSmp.("0043"),~getSmp.("0043")], + \octave, [3,2], + \detune, [0.1,0], + \chanDetune, 20, + \legato, 0.2, + \amp, [0.3,0.9,0.1] * 0.5, + \releaseTime, 0.1, + \degree, 2, + // \dur, 1 +)).quant_(2) +); + +( +Pdef(\strng1, Pbind( \instrument, \bufCyc, + \bufnum, [~getSmp.("sincyc06"),~getSmp.("sincyc06")], + + //\dur, Pseq([3/4,2/4,1/4]*2/3,inf), + //\degree, Pseq([[4,9],2,8,4,1], inf), + //\octave, Prand([[6,5,7],[4,5,7],[7,5,4]],inf), + \octave, 4, + //\mtranspose, Pstutter(12, Pseq([1,0,-2,3,-3],inf)), + + \detune, [0,0.3,-0.3], + \chanDetune, Pseq([-10,0,5,10,-5],inf), + \amp, [0.3,0.5,0.1] * 0.05, + \legato, 0.1, + \releaseTime, Prand([1,2,3,4],inf) + +)).quant_(8) +); + + + + + + diff --git a/lib/sinPulz.scd b/lib/sinPulz.scd new file mode 100644 index 0000000..a794256 --- /dev/null +++ b/lib/sinPulz.scd @@ -0,0 +1,25 @@ +( +SynthDef(\sinPulz, { + arg gate = 1, freq, out=0, amp = 1, attackTime=0.01, releaseTime=1, oscDetune=0.05, cutoff=1; + var snd, env; + + oscDetune = oscDetune * 0.1 + 1; + + env = Linen.kr(gate, attackTime:attackTime, releaseTime:releaseTime, doneAction:2); + + freq = freq * LFNoise1.kr(20).exprange(0.995,1.005); + snd = SinOsc.ar([freq, freq*oscDetune]) ; + snd = snd + SinOsc.ar([freq*2, freq*oscDetune*2]) ; + snd = snd + Pulse.ar([freq/2,(freq/2)*oscDetune]) * LFNoise1.kr(0.5).exprange(2,40); + + snd = snd.softclip; + snd = RLPF.ar(snd, freq: + //LFNoise1.kr(0.01).exprange(4000,300), + freq * cutoff, + rq:0.4); + + snd = snd * env * amp * 0.4; + + Out.ar(out, snd); +}).add; +); diff --git a/lib/verbDelay.scd b/lib/verbDelay.scd new file mode 100644 index 0000000..b4591b9 --- /dev/null +++ b/lib/verbDelay.scd @@ -0,0 +1,13 @@ +( +SynthDef(\verbDelayFX, { + arg inBus, outBus, revWet=0.8, dlyWet=0.8, feedback = 0.5 ; + + var snd = In.ar(inBus, 2); + var verb = JPverb.ar(snd); + var delay = Greyhole.ar(snd, feedback: feedback); + + snd = snd + (verb * revWet) + (delay * dlyWet) * 0.5; + + Out.ar(outBus, snd); +}).add; +); diff --git a/on-the-fly-livecode.scd b/on-the-fly-livecode.scd new file mode 100644 index 0000000..2222171 --- /dev/null +++ b/on-the-fly-livecode.scd @@ -0,0 +1,43 @@ +// on-the-fly, 21. oct 2020 + +100.do({post(".... hola every1, I'm luka, Luka P.!!!!!")}) + +~counter.play + +Ndef(\n1).play +Ndef(\n1).fadeTime=15 +( +Ndef(\n1,{ + var flt1, flt2, flt3, snd = WhiteNoise.ar; + flt1 = BPF.ar(snd, LFNoise1.ar(0.1).range(100,5000), 0.2); + flt2 = BPF.ar(snd, LFNoise1.ar(0.1).range(100,5000), 0.2); + flt3 = BPF.ar(snd, LFNoise1.ar(0.1).range(100,5000), 0.2); + snd = flt1 + flt2 + flt3; + snd!2 * 0; +}) +) + +Pdef(\bsln1).play +Pbindef(\bsln1, \dur, Pseq([1,2,3] * 1/2, 2)) +( +Pbindef(\bsln1, + \degree, Pxrand([0, 1,2,3], inf), + \legato, Pseq([1,2,3]/3, inf) +) +) + +Pdef(\strng1).play + +( +Pbindef(\strng1, + \degree, Pseq([[9,4],2,8,4,1],inf), + \dur, Pseq([3,2,1] * 1/4, 5), + \octave, [7,4,5], + \mtranspose, Pseq([1,0,-2,3,-3],inf) +) +) + + +// THANK YOU FOR LISTENING!!!!!!!!!!!!!!!!! +// HUGE PROPS to hangar!!! +// next is my pal from slovenia BLAŽ PAVLICA!!!! \ No newline at end of file diff --git a/on-the-fly-preload.scd b/on-the-fly-preload.scd new file mode 100644 index 0000000..fb4c20d --- /dev/null +++ b/on-the-fly-preload.scd @@ -0,0 +1,404 @@ + + +// ideas: +/* + +- bassline +- harmonic line/melody +- long strings - low +- kick, hihat, perc, snare. +- effects? - buses! + +- prep underlaying elements. +- preload samples +- preload synthdefs +- preload Pdefs + +- print or note patterns and ideas on paper. +- train 3x at least. print out. + + +*/ + + +( +// preload samples +var smpPath = PathName(thisProcess.nowExecutingPath.dirname +/+ "smp"); +// load samples +"\n--- load samples: ...".postln; + +// free all buffers to restart buffer count +~smpBuffers.do(_.free); + +// create Dictionary +~smpBuffers = Dictionary(); + +// iterate over each file in the folder +smpPath.filesDo({ |smpfile,i| + + // tell me what you are loading: + postln(" " + i + smpfile.fileName ); + + // add a sample into a buffer, store object to Dictionary + ~smpBuffers.add(smpfile.fileName -> Buffer.readChannel(s, + smpfile.fullPath, channels:[0])); +}); + + +// function to partially match filename for buffers +~getSmp = { |regexp| + ~smpBuffers.detect { |buf| + regexp.matchRegexp(buf.path) + } +}; + +// counter for 9 minutes +~counter = Routine { + (9 * 60).do( + { arg item; + var timeleft = (9*60)-item; + if (timeleft.mod(10)==0, {postln("--- toGo:" + ((9*60)-item) + "---")}); + 1.wait; + } + ); + (1000).do({ + 100.do({post("..time is up!!!!!")}); + 1.wait; + }); +}; +// ~counter.play +// ~counter.stop + + +/////////////////////////////////////////////////////////////////////////// +// Synthdefs predefined +postln("--- synthdefs ..."); +// synthdefs? + +SynthDef(\bufCyc, { + arg bufnum, gate=1, freq=440, chanDetune=1, out=0, amp = 1, + attackTime=0.01, releaseTime=1, lpf=10; + var snd, env, lpfreq; + + env = Linen.kr(gate, attackTime:attackTime, releaseTime:releaseTime, doneAction:2); + freq = [freq, freq * (1 + (chanDetune * 0.0005))]; + snd = BufRd.ar( + numChannels: 1, + bufnum: bufnum, + phase: LFSaw.ar(freq).range(0, BufFrames.ir(bufnum)), + loop: 1, + interpolation: 2); + + lpfreq = freq * lpf; + lpfreq = lpfreq.max(100); + lpfreq = lpfreq.min(18000); + + snd = LPF.ar(snd, lpfreq); + + snd = snd * amp * env; + Out.ar(out, snd); +}).add; + + +SynthDef(\smplr, {|out = 0, revBus, bufnum = 0, gate = 1, amp = 1, pan = 0, rate = 1, revWet = 0 | + var snd, env; + + snd = PlayBuf.ar(1, bufnum, BufRateScale.kr(bufnum) * rate, loop: 0); + env = EnvGen.kr(envelope: Env.cutoff(0.001,1), gate: gate, doneAction:Done.freeSelf); + snd = snd * env * amp; + snd = Pan2.ar(snd, pan); + Out.ar(out, snd); + + //Out.ar(revBus * revWet, snd); + +}).add; + + +/////////////////////////////////////////////////////////////////////////// +// pdef predefined +postln("--- pdefs ..."); + +Pdef(\bsln1, Pbind( \instrument, \bufCyc, + \bufnum, [~getSmp.("0043"),~getSmp.("0043")], + \octave, [3,2], + \detune, [0.1,0], + \chanDetune, 20, + \legato, 0.2, + \amp, [0.3,0.9,0.1] * 0.5, + \releaseTime, 0.1, + \degree, 2, + // \dur, 1 +)).quant_(2); + + +Pdef(\strng1, Pbind( \instrument, \bufCyc, + \bufnum, [~getSmp.("sincyc06"),~getSmp.("sincyc06")], + + //\dur, Pseq([3/4,2/4,1/4]*2/3,inf), + //\degree, Pseq([[4,9],2,8,4,1], inf), + //\octave, Prand([[6,5,7],[4,5,7],[7,5,4]],inf), + \octave, 4, + //\mtranspose, Pstutter(12, Pseq([1,0,-2,3,-3],inf)), + + \detune, [0,0.3,-0.3], + \chanDetune, Pseq([-10,0,5,10,-5],inf), + \amp, [0.3,0.5,0.1] * 0.15, + \legato, 0.1, + \releaseTime, Prand([1,2,3,4],inf) + +)).quant_(8); + + +// ===================================================================== +// percussion with sampler +// ===================================================================== + + +Pdef(\bd1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("bd01"), + //\dur, Pseq([3/4, 1, 1, 1, 1/4],inf), + //\dur, Pseq([3/4, 1, 1, 1, 1/4],inf), + \amp, 0.6 +) +).quant_(8); + +/* +Pdef(\bd2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("bd02"), + \dur, Pseq([1+(1/4), 1, 1, 1/4],inf), + \amp, 0.5 +) +).quant_(8); + + +Pdef(\bd3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("bd03"), + \dur, Pseq([1+(1/4), 1, 1, 1/4],inf), + \amp, 0.5 +) +).quant_(8); + */ + +Pdef(\hh1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("hh01"), + \dur, 1/2, + \amp, Prand([1,1.2,0.8]*0.5,inf), + \rate, Prand([0.99,1,1.01],inf), + \pan, Prand([-0.2, 0, 0.2], inf) +) +).quant_(8); + +Pdef(\hh2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("hh02"), + \dur, 1/2, + \amp, Prand([1,1.2,0.8] * 0.7,inf), + \rate, Prand([0.99,1,1.01],inf), + \pan, Prand([-0.2, 0, 0.2], inf) +) +).quant_(8); + + +Pdef(\hh3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("hh03"), + \dur, 1/4, + \amp, Prand([1,1.2,0.8]*0.2,inf), + \rate, Prand([0.99,1,1.01],inf), + \pan, Prand([-0.2, 0, 0.2], inf) +) +).quant_(8); + + +Pdef(\oh1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("oh01"), + \dur, Pseq([Rest(13/4),3/4],inf), + \amp, 0.4, + \pan, 0 +) +).quant_(8); + +Pdef(\oh2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("oh02"), + \dur, Pseq([Rest(13/4),3/4],inf), + \amp, 0.4, + \pan, 0 +) +).quant_(8); + +Pdef(\oh3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("oh03"), + \dur, Pseq([Rest(13/4),3/4],inf), + \amp, 0.4, + \pan, 0 +) +).quant_(8); + +Pdef(\sn1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("sn01"), + //\dur, Pseq([Rest(1),1],inf), + //\dur, Pseq([Rest(1),1],inf), + \amp, 1 +) +).quant_(8); + +Pdef(\sn2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("sn02"), + \dur, Pseq([Rest(1),1],inf), + \amp, 0.5 +) +).quant_(8); + + +Pdef(\sn3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("sn03"), + \dur, Pseq([Rest(1),1],inf), + \amp, 2 +) +).quant_(8); + + +Pdef(\perc1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("perc07"), + //\dur, Pseq([2],inf), + \dur, 1, + \amp, 0.6, + \rate, Prand((90..110) * 0.01,inf) +) +).quant_(8); + +Pdef(\perc2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("perc03"), + //\dur, Pseq([ Pn(1/2,6), 1/4, 1/2, 1/4 ],inf), + \dur, 1, + \amp, 0.7, + \rate, Prand([0.8,0.9,1,1.1,1.2,1.5],inf) +)).quant_(8); + + +Pdef(\perc3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("perc05"), + \dur, Pseq([ Pn(1/2,6), 1/4, 1/2, 1/4 ],inf), + // \amp, 0.5, + \rate, Prand((90..110) * 0.01,inf), + \pan, Prand([-0.2, 0, 0.2], inf) +)).quant_(8); + +Pdef(\cl1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("cl01"), + \dur, Pseq([ Rest(1), 1.5 ],inf), + \amp, 1, + // \rate, Prand([0.8,0.9,1,1.1,1.2,1.5],inf) +) +).quant_(8); + +Pdef(\cl2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("cl04"), + \dur, Pseq([ Rest(1.5), 3/4 ],inf), + \amp, 1, + // \rate, Prand([0.8,0.9,1,1.1,1.2,1.5],inf) +)).quant_(8); + +Pdef(\cl3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("cl05"), + \dur, Pseq([ Rest(3/4), 6/4],inf), + // \amp, 0.5, + \rate, Prand((90..110) * 0.01,inf), + // \pan, Prand([-0.2, 0, 0.2], inf) +)).quant_(8); + +Pdef(\gl1, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("gl01"), + \dur, Pseq([1,3,2,3 ] / 3,inf), + \amp, 1, + // \rate, Prand([0.8,0.9,1,1.1,1.2,1.5],inf) +) +).quant_(8); +//Pdef(\gl1).play +//s.scope(4) + +Pdef(\gl2, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("gl04"), + \dur, Pseq([ 3,4,2,3,1 ] / 2,inf), + \amp, 1, + // \rate, Prand([0.8,0.9,1,1.1,1.2,1.5],inf) +)).quant_(8); + + +Pdef(\gl3, Pbind( \instrument, \smplr, \bufnum, ~getSmp.("gl05"), + \dur, Pseq([ 4,3,4,3,4,2,1 ] / 4,inf), + // \amp, 0.5, + \rate, Prand((90..110) * 0.01,inf), + // \pan, Prand([-0.2, 0, 0.2], inf) +)).quant_(8); + +postln("--- init finished."); +""; +); + +////////////////////////////////////////////////////////////////////////////////// +// pre-score help! +100.do({post("... hola every1, I'm Luka. Luka P. :)")}) +~counter.reset +~counter.play +~counter.stop + +Ndef(\n1).play +Ndef(\n1).fadeTime = 15 +( +Ndef(\n1, { + var flt1, flt2, flt3, snd = WhiteNoise.ar; + flt1 = BPF.ar(snd, LFNoise1.ar(0.1).range(100,1000), 0.3); + flt2 = BPF.ar(snd, LFNoise1.ar(0.1).range(100,1000), 0.3); + flt3 = BPF.ar(snd, LFNoise1.ar(0.1).range(100,1000), 0.3); + snd = flt1 + flt2 + flt3; + snd!2 * 0.5; +}); +) +// possible development +Pdef(\bsln1).play; +( +Pbindef(\bsln1, + \dur, Pseq([1,2,3] * 1/4, inf), + \degree, Pstutter(2, Pxrand([1,2,3,0] , inf)), + \mtranspose, Pstutter(20, Pxrand([1,2,3], inf) ), + \legato, Pxrand([1,2,3]*0.3, inf), + \amp, [0.3,0.9,0.1] * 0.5, +) +) +Pdef(\strng1).play +( +Pbindef(\strng1, + \degree, Pseq([[9,4],2,8,4,1], inf), + \dur, Pseq([3,2,1]*2/8, 3), + \mtranspose, Pstutter(10,Pseq([1,0,-2,3,-3],inf)), + \ctranspose, Pseq([Pn(0,60), Pn(7,60)],inf), //later!!! + \octave, Pseq([[4,5,6],[5,6,7],[7,4,5]]-1,inf), + \octave, [3,4], + \legato, 0.1, +) +) + +Pbindef(\bd1, \dur, Pseq([3/4, 1, 1, 1, 1/4], inf)) +Pbindef(\bd1, \dur, Pseq([3/4, 1, 1/2, 1/2, 1, 1/4], inf)) +Pbindef(\bd1, \dur, Pseq([1/2], inf)) +Pdef(\bd1).play +Pdef(\bd1).clear + +Pbindef(\hh1, \dur, 1/2) +Pdef(\hh1).play + +Pbindef(\hh2, \dur, Pseq([Rest(1/4),1/4],inf)) +Pdef(\hh2).play + +Pbindef(\hh3, \dur, 1/4) +Pbindef(\hh3, \dur, 1/8) +Pbindef(\hh3, \dur, 1/6) +Pbindef(\hh3, \dur, 1/3) +Pbindef(\hh3, \dur, Pxrand([Pn(1/8, 16), Pn(1/6,12)],inf) +Pbindef(\hh3, \dur, Pseq([Pxrand([Pn(1/8, 16), Pn(1/6,12)], 8), Rest(8)],inf)) +Pdef(\hh3).play +Pdef(\hh3).stop +Pdef(\hh3).clear + +Pbindef(\perc1, \dur, Pseq([2,1.5],inf)) +Pdef(\perc1).play + +Pbindef(\perc2, \dur, Pseq([ Pn(1/2, 3), 1/4, 1/8, 1/4 ],inf)) +Pdef(\perc2).play + +Pbindef(\sn1, \dur, Pseq([Rest(1),1,Rest(1), Prand([1,1/2],1)],inf) ) +Pdef(\sn1).play + +Pbindef(\sn2, \dur, Pseq([Rest(1),1, 1/2, 2, 1/2, 1/4],inf)) +Pdef(\sn2).play; //////////////////////////////////////////////// +( + Pdef(\bsln1).stop; + Pdef(\bd1).stop; + Pdef(\bd2).stop; + Pdef(\hh1).stop; + Pdef(\hh2).stop; + Pdef(\hh3).stop; + Pdef(\sn1).stop; + Pdef(\sn2).stop; + Pdef(\perc1).stop; + Pdef(\perc2).stop; + ) \ No newline at end of file diff --git a/smp/403312__marco-luzi__forest-soil_norm-mono.wav b/smp/403312__marco-luzi__forest-soil_norm-mono.wav new file mode 100644 index 0000000..dda60ee Binary files /dev/null and b/smp/403312__marco-luzi__forest-soil_norm-mono.wav differ diff --git a/smp/amywars.wav b/smp/amywars.wav new file mode 100644 index 0000000..6016f74 Binary files /dev/null and b/smp/amywars.wav differ diff --git a/smp/bd01-vee_bassdrum_002.wav b/smp/bd01-vee_bassdrum_002.wav new file mode 100644 index 0000000..756ece6 Binary files /dev/null and b/smp/bd01-vee_bassdrum_002.wav differ diff --git a/smp/bd02-vee_bassdrum_006.wav b/smp/bd02-vee_bassdrum_006.wav new file mode 100644 index 0000000..2093eed Binary files /dev/null and b/smp/bd02-vee_bassdrum_006.wav differ diff --git a/smp/bd03-vee_bassdrum_007.wav b/smp/bd03-vee_bassdrum_007.wav new file mode 100644 index 0000000..c97a718 Binary files /dev/null and b/smp/bd03-vee_bassdrum_007.wav differ diff --git a/smp/bd04-vee_bassdrum_008.wav b/smp/bd04-vee_bassdrum_008.wav new file mode 100644 index 0000000..6ace658 Binary files /dev/null and b/smp/bd04-vee_bassdrum_008.wav differ diff --git a/smp/bd05-vee_bassdrum_009.wav b/smp/bd05-vee_bassdrum_009.wav new file mode 100644 index 0000000..d69cbc9 Binary files /dev/null and b/smp/bd05-vee_bassdrum_009.wav differ diff --git a/smp/bd06-vee_bassdrum_012.wav b/smp/bd06-vee_bassdrum_012.wav new file mode 100644 index 0000000..1a81187 Binary files /dev/null and b/smp/bd06-vee_bassdrum_012.wav differ diff --git a/smp/bd07-vee_bassdrum_013.wav b/smp/bd07-vee_bassdrum_013.wav new file mode 100644 index 0000000..4dcc07f Binary files /dev/null and b/smp/bd07-vee_bassdrum_013.wav differ diff --git a/smp/caretaker.wav b/smp/caretaker.wav new file mode 100644 index 0000000..1cc9294 Binary files /dev/null and b/smp/caretaker.wav differ diff --git a/smp/cl01-vee_clap_000.wav b/smp/cl01-vee_clap_000.wav new file mode 100644 index 0000000..4223c22 Binary files /dev/null and b/smp/cl01-vee_clap_000.wav differ diff --git a/smp/cl02-vee_clap_013.wav b/smp/cl02-vee_clap_013.wav new file mode 100644 index 0000000..49832f7 Binary files /dev/null and b/smp/cl02-vee_clap_013.wav differ diff --git a/smp/cl03-vee_clap_014.wav b/smp/cl03-vee_clap_014.wav new file mode 100644 index 0000000..e782165 Binary files /dev/null and b/smp/cl03-vee_clap_014.wav differ diff --git a/smp/cl04-vee_clap_031.wav b/smp/cl04-vee_clap_031.wav new file mode 100644 index 0000000..9fba065 Binary files /dev/null and b/smp/cl04-vee_clap_031.wav differ diff --git a/smp/cl05-vee_clap_033.wav b/smp/cl05-vee_clap_033.wav new file mode 100644 index 0000000..9bfc757 Binary files /dev/null and b/smp/cl05-vee_clap_033.wav differ diff --git a/smp/cl06-vee_clap_040.wav b/smp/cl06-vee_clap_040.wav new file mode 100644 index 0000000..5bdbb2f Binary files /dev/null and b/smp/cl06-vee_clap_040.wav differ diff --git a/smp/cl07-vee_clap_045.wav b/smp/cl07-vee_clap_045.wav new file mode 100644 index 0000000..ad47aeb Binary files /dev/null and b/smp/cl07-vee_clap_045.wav differ diff --git a/smp/esma1.wav b/smp/esma1.wav new file mode 100644 index 0000000..0a733ad Binary files /dev/null and b/smp/esma1.wav differ diff --git a/smp/gl01-BC_Hats001.wav b/smp/gl01-BC_Hats001.wav new file mode 100644 index 0000000..19f3f42 Binary files /dev/null and b/smp/gl01-BC_Hats001.wav differ diff --git a/smp/gl02-BC_Hats011.wav b/smp/gl02-BC_Hats011.wav new file mode 100644 index 0000000..315fec0 Binary files /dev/null and b/smp/gl02-BC_Hats011.wav differ diff --git a/smp/gl03-BC_Hats021.wav b/smp/gl03-BC_Hats021.wav new file mode 100644 index 0000000..0680da6 Binary files /dev/null and b/smp/gl03-BC_Hats021.wav differ diff --git a/smp/gl04-BC_Hats034.wav b/smp/gl04-BC_Hats034.wav new file mode 100644 index 0000000..3834020 Binary files /dev/null and b/smp/gl04-BC_Hats034.wav differ diff --git a/smp/gl05-BC_Hats042.wav b/smp/gl05-BC_Hats042.wav new file mode 100644 index 0000000..8f94126 Binary files /dev/null and b/smp/gl05-BC_Hats042.wav differ diff --git a/smp/gl06-BC_Hats044.wav b/smp/gl06-BC_Hats044.wav new file mode 100644 index 0000000..a3f5075 Binary files /dev/null and b/smp/gl06-BC_Hats044.wav differ diff --git a/smp/gl07-BC_Hats059.wav b/smp/gl07-BC_Hats059.wav new file mode 100644 index 0000000..09671a8 Binary files /dev/null and b/smp/gl07-BC_Hats059.wav differ diff --git a/smp/gl08-BC_Hats065.wav b/smp/gl08-BC_Hats065.wav new file mode 100644 index 0000000..d7279f0 Binary files /dev/null and b/smp/gl08-BC_Hats065.wav differ diff --git a/smp/gl09-BC_Hats092.wav b/smp/gl09-BC_Hats092.wav new file mode 100644 index 0000000..ad7daa3 Binary files /dev/null and b/smp/gl09-BC_Hats092.wav differ diff --git a/smp/gl10-BC_Hats096.wav b/smp/gl10-BC_Hats096.wav new file mode 100644 index 0000000..ef443cc Binary files /dev/null and b/smp/gl10-BC_Hats096.wav differ diff --git a/smp/gl11-BC_Hats099.wav b/smp/gl11-BC_Hats099.wav new file mode 100644 index 0000000..bec3854 Binary files /dev/null and b/smp/gl11-BC_Hats099.wav differ diff --git a/smp/gl12-BC_Hats112.wav b/smp/gl12-BC_Hats112.wav new file mode 100644 index 0000000..0e6a1f8 Binary files /dev/null and b/smp/gl12-BC_Hats112.wav differ diff --git a/smp/gl13-BC_Hats114.wav b/smp/gl13-BC_Hats114.wav new file mode 100644 index 0000000..d86da2e Binary files /dev/null and b/smp/gl13-BC_Hats114.wav differ diff --git a/smp/gl14-BC_Perc081.wav b/smp/gl14-BC_Perc081.wav new file mode 100644 index 0000000..5bdbbef Binary files /dev/null and b/smp/gl14-BC_Perc081.wav differ diff --git a/smp/gl15-BC_Perc105.wav b/smp/gl15-BC_Perc105.wav new file mode 100644 index 0000000..465fc1c Binary files /dev/null and b/smp/gl15-BC_Perc105.wav differ diff --git a/smp/gl16-BC_Perc324.wav b/smp/gl16-BC_Perc324.wav new file mode 100644 index 0000000..b21f038 Binary files /dev/null and b/smp/gl16-BC_Perc324.wav differ diff --git a/smp/gl17-BC_Perc347.wav b/smp/gl17-BC_Perc347.wav new file mode 100644 index 0000000..4ce71be Binary files /dev/null and b/smp/gl17-BC_Perc347.wav differ diff --git a/smp/gl18-BC_Perc385.wav b/smp/gl18-BC_Perc385.wav new file mode 100644 index 0000000..8b27a50 Binary files /dev/null and b/smp/gl18-BC_Perc385.wav differ diff --git a/smp/hh01-vec3_cymbals_hh_closed_02.wav b/smp/hh01-vec3_cymbals_hh_closed_02.wav new file mode 100644 index 0000000..7a5a04f Binary files /dev/null and b/smp/hh01-vec3_cymbals_hh_closed_02.wav differ diff --git a/smp/hh02-vec3_cymbals_hh_closed_08.wav b/smp/hh02-vec3_cymbals_hh_closed_08.wav new file mode 100644 index 0000000..1d5b868 Binary files /dev/null and b/smp/hh02-vec3_cymbals_hh_closed_08.wav differ diff --git a/smp/hh03-vec3_cymbals_hh_closed_29.wav b/smp/hh03-vec3_cymbals_hh_closed_29.wav new file mode 100644 index 0000000..1f35cf0 Binary files /dev/null and b/smp/hh03-vec3_cymbals_hh_closed_29.wav differ diff --git a/smp/hh04-vec3_cymbals_hh_closed_48.wav b/smp/hh04-vec3_cymbals_hh_closed_48.wav new file mode 100644 index 0000000..b4fbd96 Binary files /dev/null and b/smp/hh04-vec3_cymbals_hh_closed_48.wav differ diff --git a/smp/hh05-vec3_cymbals_hh_closed_63.wav b/smp/hh05-vec3_cymbals_hh_closed_63.wav new file mode 100644 index 0000000..b4b919a Binary files /dev/null and b/smp/hh05-vec3_cymbals_hh_closed_63.wav differ diff --git a/smp/hh06-vec3_cymbals_hh_closed_68.wav b/smp/hh06-vec3_cymbals_hh_closed_68.wav new file mode 100644 index 0000000..8c5ed81 Binary files /dev/null and b/smp/hh06-vec3_cymbals_hh_closed_68.wav differ diff --git a/smp/nameless.wav b/smp/nameless.wav new file mode 100644 index 0000000..07a963b Binary files /dev/null and b/smp/nameless.wav differ diff --git a/smp/oh01-vec3_cymbals_hh_open_006.wav b/smp/oh01-vec3_cymbals_hh_open_006.wav new file mode 100644 index 0000000..54f4d18 Binary files /dev/null and b/smp/oh01-vec3_cymbals_hh_open_006.wav differ diff --git a/smp/oh02-vec3_cymbals_hh_open_016.wav b/smp/oh02-vec3_cymbals_hh_open_016.wav new file mode 100644 index 0000000..e4de097 Binary files /dev/null and b/smp/oh02-vec3_cymbals_hh_open_016.wav differ diff --git a/smp/oh03-vec3_cymbals_hh_open_033.wav b/smp/oh03-vec3_cymbals_hh_open_033.wav new file mode 100644 index 0000000..775c59f Binary files /dev/null and b/smp/oh03-vec3_cymbals_hh_open_033.wav differ diff --git a/smp/oh04-vec3_cymbals_hh_open_040.wav b/smp/oh04-vec3_cymbals_hh_open_040.wav new file mode 100644 index 0000000..e4b600b Binary files /dev/null and b/smp/oh04-vec3_cymbals_hh_open_040.wav differ diff --git a/smp/oh05-vec3_cymbals_hh_open_058.wav b/smp/oh05-vec3_cymbals_hh_open_058.wav new file mode 100644 index 0000000..611928f Binary files /dev/null and b/smp/oh05-vec3_cymbals_hh_open_058.wav differ diff --git a/smp/oh06-vec3_cymbals_hh_open_098.wav b/smp/oh06-vec3_cymbals_hh_open_098.wav new file mode 100644 index 0000000..bf33b9b Binary files /dev/null and b/smp/oh06-vec3_cymbals_hh_open_098.wav differ diff --git a/smp/perc01-VEC3 Percussion 011.wav b/smp/perc01-VEC3 Percussion 011.wav new file mode 100644 index 0000000..31ac9dc Binary files /dev/null and b/smp/perc01-VEC3 Percussion 011.wav differ diff --git a/smp/perc02-VEC3 Percussion 017.wav b/smp/perc02-VEC3 Percussion 017.wav new file mode 100644 index 0000000..604537c Binary files /dev/null and b/smp/perc02-VEC3 Percussion 017.wav differ diff --git a/smp/perc03-VEC3 Percussion 040.wav b/smp/perc03-VEC3 Percussion 040.wav new file mode 100644 index 0000000..e46e2e6 Binary files /dev/null and b/smp/perc03-VEC3 Percussion 040.wav differ diff --git a/smp/perc04-VEC3 Percussion 041.wav b/smp/perc04-VEC3 Percussion 041.wav new file mode 100644 index 0000000..bae3938 Binary files /dev/null and b/smp/perc04-VEC3 Percussion 041.wav differ diff --git a/smp/perc05-VEC3 Percussion 049.wav b/smp/perc05-VEC3 Percussion 049.wav new file mode 100644 index 0000000..08f4fbf Binary files /dev/null and b/smp/perc05-VEC3 Percussion 049.wav differ diff --git a/smp/perc06-VEC3 Percussion 061.wav b/smp/perc06-VEC3 Percussion 061.wav new file mode 100644 index 0000000..376c29e Binary files /dev/null and b/smp/perc06-VEC3 Percussion 061.wav differ diff --git a/smp/perc07-VEC3 Percussion 068.wav b/smp/perc07-VEC3 Percussion 068.wav new file mode 100644 index 0000000..f2a5cdb Binary files /dev/null and b/smp/perc07-VEC3 Percussion 068.wav differ diff --git a/smp/perc08-VEC3 Percussion 076.wav b/smp/perc08-VEC3 Percussion 076.wav new file mode 100644 index 0000000..ad66ebd Binary files /dev/null and b/smp/perc08-VEC3 Percussion 076.wav differ diff --git a/smp/perc09-VEC3 Percussion 077.wav b/smp/perc09-VEC3 Percussion 077.wav new file mode 100644 index 0000000..6d8e5ba Binary files /dev/null and b/smp/perc09-VEC3 Percussion 077.wav differ diff --git a/smp/perc10-VEC3 Percussion 080.wav b/smp/perc10-VEC3 Percussion 080.wav new file mode 100644 index 0000000..a0f27e6 Binary files /dev/null and b/smp/perc10-VEC3 Percussion 080.wav differ diff --git a/smp/perc11-VEC3 Percussion 082.wav b/smp/perc11-VEC3 Percussion 082.wav new file mode 100644 index 0000000..c6c66e9 Binary files /dev/null and b/smp/perc11-VEC3 Percussion 082.wav differ diff --git a/smp/perc12-VEC3 Percussion 093.wav b/smp/perc12-VEC3 Percussion 093.wav new file mode 100644 index 0000000..3f37a97 Binary files /dev/null and b/smp/perc12-VEC3 Percussion 093.wav differ diff --git a/smp/perc13-VEC3 Percussion 094.wav b/smp/perc13-VEC3 Percussion 094.wav new file mode 100644 index 0000000..d045608 Binary files /dev/null and b/smp/perc13-VEC3 Percussion 094.wav differ diff --git a/smp/rain1.wav b/smp/rain1.wav new file mode 100644 index 0000000..2b155da Binary files /dev/null and b/smp/rain1.wav differ diff --git a/smp/roads1.wav b/smp/roads1.wav new file mode 100644 index 0000000..e428b03 Binary files /dev/null and b/smp/roads1.wav differ diff --git a/smp/romantiq.wav b/smp/romantiq.wav new file mode 100644 index 0000000..7e45744 Binary files /dev/null and b/smp/romantiq.wav differ diff --git a/smp/sincyc01-AKWF_0001.wav b/smp/sincyc01-AKWF_0001.wav new file mode 100644 index 0000000..5b3afb4 Binary files /dev/null and b/smp/sincyc01-AKWF_0001.wav differ diff --git a/smp/sincyc02-AKWF_0017.wav b/smp/sincyc02-AKWF_0017.wav new file mode 100644 index 0000000..1ab836a Binary files /dev/null and b/smp/sincyc02-AKWF_0017.wav differ diff --git a/smp/sincyc03-AKWF_0023.wav b/smp/sincyc03-AKWF_0023.wav new file mode 100644 index 0000000..d7cd0c2 Binary files /dev/null and b/smp/sincyc03-AKWF_0023.wav differ diff --git a/smp/sincyc04-AKWF_0027.wav b/smp/sincyc04-AKWF_0027.wav new file mode 100644 index 0000000..20f3043 Binary files /dev/null and b/smp/sincyc04-AKWF_0027.wav differ diff --git a/smp/sincyc05-AKWF_0043.wav b/smp/sincyc05-AKWF_0043.wav new file mode 100644 index 0000000..a36bd68 Binary files /dev/null and b/smp/sincyc05-AKWF_0043.wav differ diff --git a/smp/sincyc06-.wav b/smp/sincyc06-.wav new file mode 100644 index 0000000..7c6c846 Binary files /dev/null and b/smp/sincyc06-.wav differ diff --git a/smp/sincyc07-AKWF_0246.wav b/smp/sincyc07-AKWF_0246.wav new file mode 100644 index 0000000..f40f6d3 Binary files /dev/null and b/smp/sincyc07-AKWF_0246.wav differ diff --git a/smp/sincyc08-AKWF_0848.wav b/smp/sincyc08-AKWF_0848.wav new file mode 100644 index 0000000..a9d674f Binary files /dev/null and b/smp/sincyc08-AKWF_0848.wav differ diff --git a/smp/sincyc09-AKWF_bitreduced_0010.wav b/smp/sincyc09-AKWF_bitreduced_0010.wav new file mode 100644 index 0000000..ae518b5 Binary files /dev/null and b/smp/sincyc09-AKWF_bitreduced_0010.wav differ diff --git a/smp/sincyc10-AKWF_bitreduced_0030.wav b/smp/sincyc10-AKWF_bitreduced_0030.wav new file mode 100644 index 0000000..8b4a46d Binary files /dev/null and b/smp/sincyc10-AKWF_bitreduced_0030.wav differ diff --git a/smp/sincyc11-AKWF_blended_0001.wav b/smp/sincyc11-AKWF_blended_0001.wav new file mode 100644 index 0000000..9c2352d Binary files /dev/null and b/smp/sincyc11-AKWF_blended_0001.wav differ diff --git a/smp/sincyc12-AKWF_blended_0077.wav b/smp/sincyc12-AKWF_blended_0077.wav new file mode 100644 index 0000000..a962d32 Binary files /dev/null and b/smp/sincyc12-AKWF_blended_0077.wav differ diff --git a/smp/sincyc13-AKWF_granular_0006.wav b/smp/sincyc13-AKWF_granular_0006.wav new file mode 100644 index 0000000..e2ae370 Binary files /dev/null and b/smp/sincyc13-AKWF_granular_0006.wav differ diff --git a/smp/sincyc14-AKWF_rAsymSqu_19.wav b/smp/sincyc14-AKWF_rAsymSqu_19.wav new file mode 100644 index 0000000..31b9ebd Binary files /dev/null and b/smp/sincyc14-AKWF_rAsymSqu_19.wav differ diff --git a/smp/sincyc15-AKWF_raw_0032.wav b/smp/sincyc15-AKWF_raw_0032.wav new file mode 100644 index 0000000..d7b5336 Binary files /dev/null and b/smp/sincyc15-AKWF_raw_0032.wav differ diff --git a/smp/sn01-vee_snare_010.wav b/smp/sn01-vee_snare_010.wav new file mode 100644 index 0000000..41fe665 Binary files /dev/null and b/smp/sn01-vee_snare_010.wav differ diff --git a/smp/sn02-vee_snare_011.wav b/smp/sn02-vee_snare_011.wav new file mode 100644 index 0000000..57d58e8 Binary files /dev/null and b/smp/sn02-vee_snare_011.wav differ diff --git a/smp/sn03-vee_snare_022.wav b/smp/sn03-vee_snare_022.wav new file mode 100644 index 0000000..c5b04e8 Binary files /dev/null and b/smp/sn03-vee_snare_022.wav differ diff --git a/smp/sn04-vee_snare_031.wav b/smp/sn04-vee_snare_031.wav new file mode 100644 index 0000000..cf093c3 Binary files /dev/null and b/smp/sn04-vee_snare_031.wav differ diff --git a/smp/sn05-vee_snare_035.wav b/smp/sn05-vee_snare_035.wav new file mode 100644 index 0000000..23039f1 Binary files /dev/null and b/smp/sn05-vee_snare_035.wav differ diff --git a/smp/sn06-vee_snare_038.wav b/smp/sn06-vee_snare_038.wav new file mode 100644 index 0000000..c9acf91 Binary files /dev/null and b/smp/sn06-vee_snare_038.wav differ diff --git a/smp/sn07-vee_snare_051.wav b/smp/sn07-vee_snare_051.wav new file mode 100644 index 0000000..78a64e8 Binary files /dev/null and b/smp/sn07-vee_snare_051.wav differ diff --git a/work/200815_workspace.scd b/work/200815_workspace.scd new file mode 100644 index 0000000..30ae37c --- /dev/null +++ b/work/200815_workspace.scd @@ -0,0 +1,156 @@ + + + +( // "LFTri bass drum kick" - by luka@lukaprincic.si +SynthDef(\tribd, { + arg out=0, gate=1, freq=77, amp=0.1; + var snd, aenv, fenv, senv; + + fenv = Env(levels:[2, 1, 0], times: [0.1, 0.5]).kr; + freq = freq * fenv; + freq = freq.max(10); + + snd = LFTri.ar(freq) + SinOsc.ar(freq) + Pulse.ar(freq*2, mul:0.1); + snd = LPF.ar(snd, freq * 3); + + snd = snd + RLPF.ar( BrownNoise.ar(0.15), + Env(levels:[2000,500,90], times:[0.01,0.05]).kr, 0.3 ); + + snd = snd + ( BPF.ar(WhiteNoise.ar(0.1), 3000) + * Env([1,1,0], [0.004,0.005]).kr ); + snd = snd + ( BPF.ar(WhiteNoise.ar(0.1), 9000) + * Env([1,1,0], [0.002,0.002]).kr ); + + aenv = Env([1,1,0], [0.2,2], curve: -9).kr; + snd = snd * aenv; + + 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); + Out.ar(out, snd); +}).add; +) + + +TempoClock.tempo = 140/120 + +( +Pdef(\beat, + Ppar([ + Pbind( + \instrument, \tribd, + \dur, Pseq([1+1/4,1,1/4],inf), + \note, Prand([1,2,3] * 0.1, inf) + 1, + //\freq, 77, + \octave, 3, + \amp, 0.15 + ), + Pbind( + \instrument, \sc808sn, + \dur, Pseq([Rest(1),1],inf), + \amp, 0.1 + ), + Pbind( + \instrument, \sc808hh, + \dur, Pwrand([ + Pseq([1/4,1/4]), + Pseq([1/8],4), + Pseq([1/16],4), + Pseq([1/6],3) + ], [0.4,0.4,0.2,0.2], inf), + \amp, Prand([0.05,0.04,0.06],inf) + ), + Pbind( + \instrument, \sc808hh, + \dur, Pseq([1/8], inf), + \amp, 0 + ) + ]) +) +) + +Pdef(\beat).play +Pdef(\beat).quant(8) + +TempoClock.stop +TempoClock.play +TempoClock.tempo = 140/120 + + + +(// plot it! +{ + arg out=0, gate=1, freq=77, amp=1; + var snd, aenv, fenv, senv; + + fenv = Env(levels:[2, 1, 0], times: [0.1, 1]).kr; + freq = freq * fenv; + freq = freq.max(10); + + snd = LFTri.ar(freq, mul:amp/2) + SinOsc.ar(freq, mul:amp/2); + snd = LPF.ar(snd, freq * 4); + + snd = snd + RLPF.ar( + BrownNoise.ar(0.2), + Env(levels:[2000,500,90], times:[0.01,0.05]).kr, 0.3 ); + + snd = snd + ( + BPF.ar(WhiteNoise.ar(0.1), 9000) + * Env([1,1,0], [0.004,0.005]).kr + + ); + aenv = Env([1,1,0], [0.2,2], curve: -9).kr; + snd = snd * aenv; + + 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); +}.plot(2); +) + + + + + + + + + + + + + + + + + + + + + + + + + +({ // sound is fine despite steep release slope +var snd, env; +snd = LFTri.ar(80); +env = Env.linen(0,0.1,0.01).ar(doneAction:2); +snd = LPF.ar(snd,30); // filter BEFORE applying envelope +snd = snd * env; +snd!2 +}.play) + + +({ // steep release and LPF after env produces click +var snd, env; +snd = LFTri.ar(80); +env = Env.linen(0,0.1,0.01).ar; +//env = Env.linen(0,0.1,0.01).ar(doneAction:Done.freeSelf); +snd = snd * env; +snd = LPF.ar(snd,30); // filter AFTER applying envelope +DetectSilence.ar(snd, doneAction:Done.freeSelf); + snd!2 +}.play) diff --git a/work/200816_workspace.scd b/work/200816_workspace.scd new file mode 100644 index 0000000..f4a227a --- /dev/null +++ b/work/200816_workspace.scd @@ -0,0 +1,55 @@ + + +// synthdefs + +( +SynthDef(\noiSyn, { + arg out=0, gate=1, amp=0.1, pan=0, relTime=0.5; + var snd, env, aenv; + + snd = WhiteNoise.ar(0.7); + aenv = Env.perc(releaseTime:relTime).kr; + + snd = snd * aenv; + + snd = BHiPass.ar(snd, Line.ar(50,20000,relTime*2)); + //snd = HPF.ar(snd, Line.ar(200,10000,relTime)); + + // this responds favourably to Pbind gate:0 / release + env = Linen.kr(releaseTime: 0.05, gate: gate, doneAction:Done.freeSelf); + snd = snd * env; + snd = snd * amp; + snd = Pan2.ar(snd, pos:pan); + //DetectSilence.ar(snd, doneAction:Done.freeSelf); + Out.ar(out, snd); + +}).add; +) + + + +// patterns + +TempoClock.tempo = 100/120 + + +Pdef(\noises).play; +Pdef(\noises).stop; + +( +Pdef(\noises, + Ppar([ + Pbind( + \instrument, \noiSyn, + \dur, Prand([1/4, Pn(1/8,2)], inf), + \legato, 0.9, + \relTime, Pseq([Pseries(0.001,0.01,32)],inf), + \amp, 0.8 + )] + ) +) +) + + +s.meter +s.freqscope \ No newline at end of file diff --git a/work/200909_chinese_softclip.scd b/work/200909_chinese_softclip.scd new file mode 100644 index 0000000..1ac6ca9 --- /dev/null +++ b/work/200909_chinese_softclip.scd @@ -0,0 +1,81 @@ + +// evaluate to add a synth recipe to the server +( +SynthDef(\varDsine, { + arg gate=1, freq=100, amp, pan, out=0, clip=1, release; + var snd, env, vibrato; + + vibrato = 1 + ( + SinOsc.ar(4) + * 0.003 + * Env.adsr(0.5, 0, 1, 3, curve:4).kr(2, gate) + ); + freq = freq * vibrato; + freq = freq * (0.995 + (LFNoise1.ar(0.5)*0.01)); + env = Env.adsr(0, 0.3, 0.4, 3, 1, -7).kr(2,gate); + snd = (SinOsc.ar(freq, mul:0.5) * clip).softclip(1) * 0.9; + snd = LPF.ar(snd, freq * 5); // make it less bright + snd = snd * env * amp; + snd = Pan2.ar(snd, pan); + + Out.ar(out, snd); +}).add +) + + +Pdef(\playD).play// start playing the pattern which is not yet defined +Pdef(\playD).fadeTime = 0; // + +// define the pattern. it should play. +// make changes and re-evaluate without stopping +( +Pdef(\playD, { + Pbind( + \instrument, \varDsine, + \dur, Pseq([1/4,1/4,1/8,1/8,1/4,1/4,],inf) * Pseq([0.9,1.1] * 1,inf), + \octave, [2.99, 4.01, 5, 6.01], // x 4 synths, expanded + \scale, Scale.gong(\pythagorean), + //\mtranspose, Prand([Pn(0,30),Pn(1,30),Pn(-1,30),Pn(2,30),Pn(-2,30)],inf), + \mtranspose, Pstutter(30, Pwalk([0,1,-1,2,-2],1)), + \degree, Pseq([0,0,1,2,2,0,0,2,4,6,7], inf), + \clip, Prand([3,50,8,12,16,20,30],inf), + \detune, 0, + \legato, 0.1, + \amp, 0.1, + ); +}); +) + + +( // simple example +Pdef(\playD, { + Pbind( + \instrument, \varDsine, + \dur, Pseq([1, 2, 1, 4, 3 ] * 0.2,inf), // durations of notes + \octave, [3,4,5], // octave (3 is pretty low) + \scale, Scale.minor(\pythagorean), // try Scale.major or Scale.minor + \mtranspose, Prand([[0,3],[0,2]],inf), // modal transposition, try 1 or 2 or 3 + \degree, Pseq([0,0,1,2,2,0,0,2,4,6,7], inf), // NOTES within a scale + \clip, Prand([3,50,8,12,16,20,30],inf), // makes different timbre, randomly + \legato, 0.6, // try anything between 0.1 - 3 or more of you dare + \amp, 0, // gain/loudness + \pan, Prand([ { 2.0.rand - 1 } ],inf), + \out, 0 + //\pan, 0 + ); +}); +) + +Pdef(\playD).clear // stop and clear + + +// see all scales that you can use +Scale.directory + +// see all tunings you can use +Tuning.directory + + + +Env.cutoff(1, 3, 4).plot; +Env.circle([0, 1, 0,0.5,0.2,0.6], [0.01, 0.5, 0.2]).plot \ No newline at end of file diff --git a/work/201207workspace.scd b/work/201207workspace.scd new file mode 100644 index 0000000..880e518 --- /dev/null +++ b/work/201207workspace.scd @@ -0,0 +1,578 @@ +// ===================================================================== +// SuperCollider Workspace +// ===================================================================== + + + +//////////////////////////////////////////////////////////////////////// +( +~tempo = 2; +~tempoSynth = { |tempo=2| Impulse.ar(tempo)*1 }.play; +~myClock = TempoBusClock.new(~tempoSynth); +SynthDef(\beep, { Out.ar(0, Impulse.ar(\freq.kr(440), mul:\amp.kr)!2*EnvGate()) }).add; +{ + Ndef(\a).proxyspace.clock = ~myClock; + Ndef(\a).proxyspace.quant = 1; + Ndef(\b).proxyspace.clock = ~myClock; + Ndef(\b).proxyspace.quant = 1; + + Ndef(\a, Pbind(\instrument, \beep, + \dur, 1, + \freq, ~tempo, + \amp, 1)); + Ndef(\b, {Impulse.ar(~tempo, 1, mul:1)!2}); + + Ndef(\a).play; + Ndef(\b).play; + +}.fork(~myClock); +) + +s.record + +/* + +https://scsynth.org/t/how-to-sync-between-clock-and-running-synth/2979 + +The code above causes Pulses and notes from Pbind to go out of +sync, which to me is unexpected. I read Scheduling and Server timing +doc, but I’m not sure I understand how to force clock on the lang be +in sync with an oscilation on the server. Could anyone provide any +insight? Is this drift inherent in the architecture and needs to be +overcome in a different way - Synth on server controling events in the +lang? I might getting some things completely wrong. + +*/ + + + + + + + + + + +( +{ + WhiteNoise.ar([1,1]) + //* LFPulse.ar(LFTri.ar(0.1).range(10,1),1, width:0.1) + * EnvGen.ar( + envelope: Env.adsr([0.001,0.0001], 0.2, MouseX.kr(0,01), 0.1), + gate: LFPulse.ar(LFTri.ar(0.1).range(10,1), width:0.1) + ) +}.play +//}.plot(1) +) + +s.scope + + +([ Env.adsr(0.00001, 0.2, 0.5, 0.2),Env.adsr(0.001, 0.2, 0.5, 0.2)]).plot + + + + + +50.do({"whatever you want to do, you can do, but ".post;}) + +s.meter +s.plotTree + + + + +////////////////////////////////////////////////////////////////////////////////////////////// +// lcm and gcd code tennis +// https://www.listarc.bham.ac.uk/lists/sc-users/msg68907.html + +~clklcm = TempoClock.new(1); +Ndef(\lcmnoise).play(~clklcm) +Ndef(\lcmnoise).fadeTime = 10; + + +( +Ndef(\lcmnoise, { + 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( + LFPulse.ar( + LFNoise0.ar(1).exprange(0.01,2), + width:0.001), + 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 + revchain; + snd = LPF.ar(snd.softclip, LFNoise1.ar(0.1).exprange(100,20000)) * 1; +}) +) + + +{tanh(lcm(SinOsc.ar(LFNoise0.ar(5).range(0.5,1000)).range(MouseX.kr(-100,100),100).round(1),SinOsc.ar.range(MouseY.kr(-100,100),100).round(1))*0.001)!2}.scope + +{tanh(gcd(SinOsc.ar(MouseX.kr(1,1000,'exponential')).range(1,100).round(1),SinOsc.ar(MouseY.kr(1,1000,'exponential')).range(1,100).round(1))*0.1)!2}.scope + +{tanh(lcm(Saw.ar(MouseX.kr(1,1000,'exponential')).range(-100,100).round(1),LFCub.ar(MouseY.kr(1,1000,'exponential')).range(-100,100).round(1))*0.001) * [1,0]}.scope + +/////////////////////////////////////////////////////////////// +// https://www.listarc.bham.ac.uk/lists/sc-users/msg68916.html +( +{ + var a = LFSaw.ar(2) * 100; + var b = LFSaw.ar(1.2) * 100; + SinOsc.ar(lcm(a, b).poll + 300) * 0.1 +}.play; +) + + + +( +{ + var a = LFSaw.ar(0.02) * 300 + 1; + var b = LFSaw.ar(1.24 + [0, 0.1]) * 200 + 1; + SinOsc.ar(gcd(a, b).poll * 30 + 300) * 0.1 +}.play; +) + + + +( +{ + var a = LFSaw.ar(0.012) * 300 + 1; + var b = LFSaw.ar(0.24 + [0, 0.01]) * 200 + 1; + SinOsc.ar(gcd(a, b).poll * 30 + 300) * 0.1 +}.play; +) + + + +( +{ + var a = LFSaw.kr(0.002) * 300 + 1; + var b = LFSaw.kr(0.024 + [0, 0.001]) * 200 + 1; + var freq = ((gcd(a, b) * 43 + 300).cpsmidi - 0).midicps; + var snd; + freq = [freq, freq/2]; + snd = SinOsc.ar(freq) * 0.1; + //snd = snd + Saw.ar(freq*1.01, mul:0.08) * 1; + //snd = RLPF.ar(snd, LFNoise1.ar(0.7).exprange(500, 20000), rq:0.7); + //snd = snd + CombN.ar(snd, 1, LFNoise1.ar(1).range(0.01,0.7), 7, mul:0.4); + snd = snd * 2; +}.play; +) + +/////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////// + + +( +x = play { + var t = PulseCount.ar(Impulse.ar(3000)) % 200; + var u = PulseCount.ar(Impulse.ar(3000)) % 201; + var sig = gcd(t, u + [30, 20]); + Limiter.ar(LPF.ar(HPF.ar(sig, 50), 5000), 0.3) +} +) + +x.release + + +( +x = play { + var t = PulseCount.ar(Impulse.ar(3000)) % 100; + var u = PulseCount.ar(Impulse.ar(2995)) % 100; + var sig = gcd(t, u + [30, 25]); + Limiter.ar(LPF.ar(HPF.ar(sig, 20), 10000), 0.3) +} +) + +x.release + + +( +x = play { + var a = TDuty.ar(Dseq((1..20), inf) + 41 * SampleDur.ir); + var b = TDuty.ar(Dseq((21..1), inf) + 40 * SampleDur.ir); + var t = PulseCount.ar(a) % 20; + var u = PulseCount.ar(b) % 20; + var sig = gcd(t, u + [3, 7]); + Limiter.ar(LPF.ar(HPF.ar(sig, 20), 10000), 0.3) +} +) + +x.release + + +( +x = play { + var a = TDuty.ar(Dseq((1..10), inf) + 102 * SampleDur.ir); + var b = TDuty.ar(Dseq((1..10), inf) + 101 * SampleDur.ir); + var c = TDuty.ar(Dseq((1..10), inf) + 100 * SampleDur.ir); + var t = PulseCount.ar(a) % 100; + var u = PulseCount.ar(b) % 101; + var v = PulseCount.ar(c) % 102; + var sig = gcd(gcd(t + [0, 0], u + [0, 10]), v + [0, 20]); + Limiter.ar(LPF.ar(HPF.ar(sig, 20), 10000), 0.3) +} +) + +x.release + + +( +x = play { + var a = TDuty.ar(Dseq((1..10), inf) + 52 * SampleDur.ir); + var b = TDuty.ar(Dseq((1..11), inf) + 51 * SampleDur.ir); + var c = TDuty.ar(Dseq((1..12), inf) + 50 * SampleDur.ir); + var t = PulseCount.ar(a) % 200; + var u = PulseCount.ar(b) % 201; + var v = PulseCount.ar(c) % 202; + var sig = gcd(gcd(t + [0, 0], u + [0, 1]), v + [0, 2]); + Limiter.ar(LPF.ar(HPF.ar(sig, 20), 10000), 0.3) +} +) + +x.release + + +( +x = play { + var a = TDuty.ar(Dseq((1..10), inf) + 152 * SampleDur.ir); + var b = TDuty.ar(Dseq((1..11), inf) + 151 * SampleDur.ir); + var c = TDuty.ar(Dseq((1..12), inf) + 150 * SampleDur.ir); + var t = PulseCount.ar(a) % 100; + var u = PulseCount.ar(b) % 101; + var v = PulseCount.ar(c) % 102; + var sig = gcd(gcd(t + [0, 0], u + [0, 1]), v + [0, 2]); + Limiter.ar(LPF.ar(HPF.ar(sig, 20), 10000), 0.3) +} +) + +x.release + + +//////////////////////////////////// + + + + +//distorted amplitude mod (a is unipolar) +( +x = scope { + var a = SinOsc.ar(MouseX.kr(1,300)).range(1,100); + var b = SinOsc.ar(MouseY.kr(1,300))*40; + + var sig = gcd(a,b)%100; //distort + var sig2 = lcm(a,b)%300; //distort + + tanh([sig*sig2,a*b]*0.0001) + +} +) + + + +( +x = play { + var c = TDuty.ar(Dseq((51..77), inf) * XLine.kr(100,0.1,100)* SampleDur.ir); + var t = PulseCount.ar(Impulse.ar(10)) % 300; + var u = PulseCount.ar(c) % 101; + var sig = gcd(t, u + [0, 2]); + var sig2 = gcd(lcm(t+ [0, 2], u ),sig); + + sig = SinOsc.ar(sig * 443 + 600) * 0.1; + sig2 = SinOsc.ar(sig2 * 43 + 61) * 0.4; + + Limiter.ar(LPF.ar(HPF.ar(sig, 50)+sig2, 5000), 0.3) + +} +) + +( +x = play { + var c = TDuty.ar(Dseq((1..99), inf) * XLine.kr(10,0.01,100)* SampleDur.ir); + var t = PulseCount.ar(Impulse.ar(MouseX.kr(1,100))) % 500; + var u = PulseCount.ar(c) % 501; + var sig = gcd(t, u + [0, 2]); + var sig2 = gcd(lcm(t+ [1, 3], u ),sig); + + sig = SinOsc.ar(sig * 443 + 400) * 0.1; + sig2 = SinOsc.ar(sig2 * 53 + MouseY.kr(1,99)) * 0.3; + + Limiter.ar(LPF.ar(HPF.ar(sig, 50)+sig2, 5000), 0.3) + +} +) + + + +( +x.release; +x = play { +var a = TDuty.ar(Dseq((1..20), inf) + 41 * SampleDur.ir); +var b = TDuty.ar(Dseq((21..1), inf) + 40 * SampleDur.ir); +var t = PulseCount.ar(a) % 20; +var u = PulseCount.ar(b) % 20; +var daniel_sig = gcd(t, u + [3, 7]); +var julian_a = LFSaw.kr(0.002) * 300 + 1; +var julian_b = LFSaw.kr(0.024 + [0, 0.001]) * 200 + 1; +var julian_sig = SinOsc.ar(gcd(julian_a, julian_b).poll * 43 + 300) * 0.1; +var sig = Mix.new([daniel_sig * 0.125, julian_sig * 7, SinOsc.ar(daniel_sig * 17 + 200) ]); +Limiter.ar(LPF.ar(HPF.ar(sig, 20), 10000), 0.3) +} +) + +/////////////////////////////////////////////////////////////////// + +( +x = play { + var a = TDuty.ar(Dseq((0..3), inf) + 50 * SampleDur.ir); + var b = TDuty.ar(Dseq((3..0), inf) + 50.1 * SampleDur.ir); + var mod = 50; + var t = PulseCount.ar(a) % mod; + var u = PulseCount.ar(b) % mod; + var n, j, d, e; + + d = LocalIn.ar(2); + n = gcd(t, u + [0, 1]); + e = n.linexp(0, mod, 70, 10000); + j = SinOsc.ar(e, 0, d / 2); + + LocalOut.ar(e.reverse); + Out.ar(0, Limiter.ar(LPF.ar(HPF.ar(j, 20), 10000), 0.3) * EnvGate()) +} +) + +x.release + + +// gcd feedback used for FM + +( +x = play { + var a = TDuty.ar(Dseq((0..3), inf) + 50 * SampleDur.ir); + var b = TDuty.ar(Dseq((3..0), inf) + 50.1 * SampleDur.ir); + var mod = 50; + var t = PulseCount.ar(a) % mod; + var u = PulseCount.ar(b) % mod; + var n, j, d, e; + + d = LocalIn.ar(2); + n = gcd(t, u + [0, 1]); + e = n.linexp(0, mod, 70, 10000); + j = SinOsc.ar(e * (d / 10 + 1)); + + LocalOut.ar(d.reverse); + Out.ar(0, Limiter.ar(LPF.ar(HPF.ar(j, 20), 10000), 0.3) * EnvGate()) +} +) + +x.release + + +// GCD SINMODFEED ///////////////////////////////////////////////////////////////////////////////////////// +// feedback of modulated SinOsc +( +x = play { + 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, 20), LFNoise1.kr(0.1).exprange(200,18000)), 0.5, 0.2); + j = j * LFPulse.ar([2.2,4.4]*2, 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], mul: LFNoise1.kr(1/10).range(0,0.5) * Line.kr(0,1,10)); + j = LeakDC.ar(j); + + Out.ar(0, j * EnvGate()) +} +) + +x.release + + + +( +x = play { + var a = TDuty.ar(Dseq((0..3), inf) + 50 * SampleDur.ir); + var b = TDuty.ar(Dseq((4..0), inf) + 50 * SampleDur.ir); + var mod = 100; + var t = PulseCount.ar(a) % mod; + var u = PulseCount.ar(b) % mod; + var n, j, d, e; + + 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); + + Out.ar(0, Limiter.ar(LPF.ar(HPF.ar(j, 20), 10000), 0.3) * EnvGate()) +} +) + +x.release + + + +////////////////////////////// + +( +{ + +var freq,time, ex, delay, filter, local; + +freq = 440; + +time = freq.reciprocal; + +ex = WhiteNoise.ar * (Pulse.ar(1,time).abs); + +local = LocalIn.ar(1); + +filter = ex+local; + +delay = DelayN.ar(filter, time, time-ControlDur.ir); + +//LocalOut.ar(LeakDC.ar(gcd((delay*120),120)/Line.kr(120,12000,10))*0.9); + +LocalOut.ar(LeakDC.ar(gcd((delay*120),120)/MouseX.kr(120,12000))*MouseY.kr(0.1,0.97,'exponential')); + +Out.ar(0, tanh(filter)) + +}.scope +) + + +////////////////////////////////////////////////////////////////// + + +( +{ + var factors = [2,3,5,7]; + var fprod = factors.product; + var m; + var input = SinOscFB.ar(440,MouseX.kr(0,2pi)); //PMOsc + + //either 1 or factor randomly over time + m = factors.collect{|f| (ToggleFF.ar(Dust.ar(LFNoise0.kr(f).range(0.2,2))) * (f-1)) + 1 }; + + (gcd(input * fprod,m.product)/(fprod))!2; + +}.scope +) + + + +( +{ + var factorfunc; + var f1 = [2,3,5]; //[2,2,2,3,5,7]; + var f2 = [2,3,5]; //[2,2,3,7]; + var scaling = gcd(f1.product,f2.product); + var gcdoutput; + + factorfunc = {|factors| + var fprod = factors.product; + + //either 1 or factor randomly over time + factors.collect{|f| (ToggleFF.ar(Dust.ar(LFNoise0.kr(f).range(1,MouseX.kr(16,440,'exponential')))) * (f-1)) + 1 }; + + }; + + gcdoutput = gcd(factorfunc.(f1).product,factorfunc.(f2).product)/scaling; + + (SinOsc.ar(MouseX.kr(20,2000)*gcdoutput)*0.3)!2 + +}.scope +) + + + + + +( +{ + var factorfunc; + var f1 = [2,2,2,3,5,7,11]; + var f2 = [2,2,3,7,13]; + var scaling = gcd(f1.product,f2.product); + var scaling2 = lcm(f1.product,f2.product); + + var gcdoutput,lcmoutput; + + factorfunc = {|factors| + var fprod = factors.product; + + //either 1 or factor randomly over time + factors.collect{|f| (ToggleFF.ar(Dust.ar(LFNoise0.kr(f).range(1,MouseY.kr(1,440,'exponential')))) * (f-1)) + 1 }; + + }; + + f1 = factorfunc.(f1).product; + f2 = factorfunc.(f2).product; + + gcdoutput = gcd(f1,f2)/scaling; + lcmoutput = lcm(f1,f2)/scaling2; + + //SinOsc.ar(MouseX.kr(20,[2000,4001])*[gcdoutput,lcmoutput])*0.3 + //SinOsc.ar(([gcdoutput,lcmoutput]*2000) + (gcdoutput*MouseX.kr(0.1,10,'exponential')*SinOsc.ar(lcmoutput)))*0.3 + PMOsc.ar(lcmoutput*[5000,5001],gcdoutput*[700,703],MouseX.kr(1,10)) + +}.scope +) + + + + +///////////////////////////////////// + + +( +Ndef(\x, { + + var in, d, a; + var z1, z2, m, freq, freq2; + m = MouseX.kr(-10, 10); + in = LFSaw.kr(0.062).range(-10, 10) ; + in = in + (MouseY.kr(0, 5) * (0..8)); + d = in.frac; + a = 0.8 - d.moddif(0.5, 1); + z1 = gcd(in, m) + d; + z2 = lcm(in, m) + d; + freq = 120 * ([z1, z2].flop.abs + 1); + (SinOsc.ar(freq) * AmpComp.kr(freq) * a).mean * 0.6 + +}).play +) diff --git a/work/drums.scd b/work/drums.scd new file mode 100644 index 0000000..83e78fe --- /dev/null +++ b/work/drums.scd @@ -0,0 +1,299 @@ +( +SynthDef(\kick0, { + +}).add; +) + + + + + + + + + + + + + + + +(//booting a sever and connect to midi +s.boot; +MIDIIn.connectAll; +) + +//option +s.options.outDevice_("Soundflower (2ch)");//"audio device you use" +s.reboot; + + +(//lauch sc808 + +//////////////////////////////////////////SOUND DESIGN///////////////////////////////////////////// + +( +SynthDef.new(\bd, { + arg decay=30, amp=2, gate=0, tone=56; + var fenv, env, trienv, sig, sub, punch, pfenv; + env = EnvGen.kr(Env.new([0.11, 1, 0], [0, decay], -225),doneAction:2); + trienv = EnvGen.kr(Env.new([0.11, 0.6, 0], [0, decay], -230),doneAction:0); + fenv = Env([tone*7, tone*1.35, tone], [0.05, 0.6], -14).kr; + pfenv = Env([tone*7, tone*1.35, tone], [0.03, 0.6], -10).kr; + sig = SinOsc.ar(fenv, pi/2) * env; + sub = LFTri.ar(fenv, pi/2) * trienv * 0.05; + punch = SinOsc.ar(pfenv, pi/2) * env * 2; + punch = HPF.ar(punch, 350); + sig = (sig + sub + punch) * 2.5; + sig = Limiter.ar(sig, 0.5) * amp; + sig = Pan2.ar(sig, 0); + Out.ar(0, sig); +}).add; + +SynthDef.new(\sn, { + arg amp=2, tone=340, tone2=189, snappy=0.3, gate=0, amp2=1; + var noiseEnv, atkEnv, sig, noise, osc1, osc2, sum; + noiseEnv = EnvGen.kr(Env.perc(0.001, 4.2, 1, -115), doneAction:2); + atkEnv = EnvGen.kr(Env.perc(0.001, 0.8,curve:-95), doneAction:0); + noise = WhiteNoise.ar; + noise = HPF.ar(noise, 1800); + noise = LPF.ar(noise, 8850); + noise = noise * noiseEnv * snappy; + osc1 = SinOsc.ar(tone2, pi/2) * 0.6; + osc2 = SinOsc.ar(tone, pi/2) * 0.7; + sum = (osc1+osc2) * atkEnv * amp2; + sig = Pan2.ar((noise + sum) * amp * 2.5, 0); + sig = HPF.ar(sig, 340); + Out.ar(0, sig); +}).add; + +SynthDef.new(\cpRaw, { + arg amp=1, gate=0; + var atkenv, atk, decay, sum, denv; + atkenv = EnvGen.kr(Env.new([0.5,1,0],[0, 0.3], -160), doneAction:2); + denv = EnvGen.kr(Env.dadsr(0.026, 0, 6, 0, 1, 1, curve:-157), doneAction:0); + atk = WhiteNoise.ar * atkenv * 1.4; + decay = WhiteNoise.ar * denv; + sum = atk + decay * amp; + sum = HPF.ar(sum, 500); + sum = BPF.ar(sum, 1062, 0.5); + Out.ar(0, Pan2.ar(sum * 1.5, 0)); +}).add; + +SynthDef.new(\cpReverb, { // not working? + arg amp=1, gate=0; + var reverb, revgen; + revgen = EnvGen.kr(Env.perc(0.1, 4, curve:-9), gate, doneAction:2); + reverb = WhiteNoise.ar * revgen * 0.2; + reverb = HPF.ar(reverb, 500); + reverb = LPF.ar(reverb, 1000); + Out.ar(0, Pan2.ar(reverb * amp, 0)); +}).add; + +SynthDef.new(\LT, { + arg amp=1, freq=80; + var sig, fenv, env, pnoise, penv; + env = EnvGen.kr(Env.new([0.4, 1, 0], [0, 20], -250),doneAction:2); + penv = EnvGen.kr(Env.new([0.6, 1, 0], [0, 30], -225),doneAction:2); + fenv = Env([freq*1.25, freq*1.125, freq], [0.1, 0.5], -4).kr; + sig = SinOsc.ar(fenv, pi/2) * env; + sig = Pan2.ar(sig * amp * 3, 0); + Out.ar(0, sig); +}).add; + +SynthDef.new(\MT, { + arg amp, freq=120; + var sig, fenv, env; + env = EnvGen.kr(Env.new([0.4, 1, 0], [0, 16], -250),doneAction:2); + fenv = Env([freq*1.33333, freq*1.125, freq], [0.1, 0.5], -4).kr; + sig = SinOsc.ar(fenv, pi/2); + sig = Pan2.ar(sig * env * amp * 2, 0); + Out.ar(0, sig); +}).add; + +SynthDef.new(\HT, { + arg amp, freq=165; + var sig, fenv, env; + env = EnvGen.kr(Env.new([0.4, 1, 0], [0, 11], -250),doneAction:2); + fenv = Env([freq*1.333333, freq*1.121212, freq], [0.1, 0.5], -4).kr; + sig = SinOsc.ar(fenv, pi/2); + sig = Pan2.ar(sig * env * amp * 2, 0); + Out.ar(0, sig); +}).add; + +SynthDef.new(\LC, { + arg amp=1, freq=165; + var sig, fenv, env, pnoise, penv; + env = EnvGen.kr(Env.new([0.15, 1, 0], [0, 18], -250),doneAction:2); + penv = EnvGen.kr(Env.new([0.6, 1, 0], [0, 30], -225),doneAction:2); + fenv = Env([freq*1.333333, freq*1.121212, freq], [0.1, 0.5], -4).kr; + sig = SinOsc.ar(fenv, pi/2) * env; + sig = Pan2.ar(sig * amp * 3, 0); + Out.ar(0, sig); +}).add; + +SynthDef.new(\MC, { + arg amp=1, freq=250; + var sig, fenv, env; + env = EnvGen.kr(Env.new([0.15, 1, 0], [0, 9], -250),doneAction:2); + fenv = Env([freq*1.24, freq*1.12, freq], [0.1, 0.5], -4).kr; + sig = SinOsc.ar(fenv, pi/2); + sig = Pan2.ar(sig * env * amp * 2, 0); + Out.ar(0, sig); +}).add; + +SynthDef.new(\HC, { + arg amp=1, freq=370; + var sig, fenv, env; + env = EnvGen.kr(Env.new([0.15, 1, 0], [0, 6], -250),doneAction:2); + fenv = Env([freq*1.22972, freq*1.08108, freq], [0.1, 0.5], -4).kr; + sig = SinOsc.ar(fenv, pi/2); + sig = Pan2.ar(sig * env * amp * 2, 0); + Out.ar(0, sig); +}).add; + +SynthDef.new(\rimshot, { + arg amp=1; + var fenv, env, sig, punch, tri1, tri2; + env = EnvGen.kr(Env.new([1, 1, 0], [0.00272, 0.07], -42), doneAction:2); + tri1 = LFTri.ar(1667 * 1.1, 1) * env; + tri2 = LFPulse.ar(455 * 1.1, width:0.8) * env; + punch = WhiteNoise.ar * env * 0.46; + sig = tri1 + tri2 + punch; + sig = BPeakEQ.ar(sig, 464, 0.44, 8); + sig = HPF.ar(sig, 315); + sig = LPF.ar(sig, 7300); + sig = Pan2.ar(sig * amp, 0); + Out.ar(0, sig); +}).add; + +SynthDef.new(\claves, { + arg amp=1; + var env, sig; + env = EnvGen.kr(Env.new([1, 1, 0], [0, 0.1], -20), doneAction:2); + sig = SinOsc.ar(2500, pi/2) * env * amp; + sig = Pan2.ar(sig, 0); + Out.ar(0, sig); +}).add; + + + +SynthDef.new(\maracas, { + arg amp=1, gate=0; + var env, sig; + env = EnvGen.kr(Env.new([0.3, 1, 0], [0.027, 0.07], -250), gate, doneAction:2); + sig = WhiteNoise.ar * env * amp; + sig = HPF.ar(sig, 5500); + sig = Pan2.ar(sig, 0); + Out.ar(0, sig); +}).add; + +SynthDef.new(\cowbell, { + arg amp=1; + var sig, pul1, pul2, env, atk, atkenv, datk; + atkenv = EnvGen.kr(Env.perc(0, 1, 1, -215),doneAction:0); + env = EnvGen.kr(Env.perc(0.01, 9.5, 1, -90),doneAction:2); + pul1 = LFPulse.ar(811.16); + pul2 = LFPulse.ar(538.75); + atk = (pul1 + pul2) * atkenv * 6; + datk = (pul1 + pul2) * env; + sig = (atk + datk) * amp; + sig = HPF.ar(sig, 250); + sig = LPF.ar(sig, 4500); + sig = Pan2.ar(sig, 0); + Out.ar(0, sig); +}).add; + + +SynthDef.new(\hat, { + arg decay=0.42, amp=1, pan=0; + var sig, sighi,siglow, sum, env, osc1, osc2, osc3, osc4, osc5, osc6; + env = EnvGen.kr(Env.perc(0.005, decay, 1, -30),doneAction:2); + osc1 = LFPulse.ar(203.52); + osc2 = LFPulse.ar(366.31); + osc3 = LFPulse.ar(301.77); + osc4 = LFPulse.ar(518.19); + osc5 = LFPulse.ar(811.16); + osc6 = LFPulse.ar(538.75); + sighi = (osc1 + osc2 + osc3 + osc4 + osc5 + osc6); + siglow = (osc1 + osc2 + osc3 + osc4 + osc5 + osc6); + sighi = BPF.ar(sighi, 8900, 1); + sighi = HPF.ar(sighi, 9000); + siglow = BBandPass.ar(siglow, 8900, 0.8); + siglow = BHiPass.ar(siglow, 9000, 0.3); + sig = BPeakEQ.ar((siglow+sighi), 9700, 0.8, 0.7); + sig = sig * env * amp; + sig = Pan2.ar(sig, pan); + Out.ar(0, sig); +}).add; + + +SynthDef.new(\openhihat, { + arg decay=0.5, amp=4, pan=0; + var sig, siga, sigb, env1, env2, osc1, osc2, osc3, osc4, osc5, osc6, sum; + env1 = EnvGen.kr(Env.perc(0.1, decay, curve:-3), doneAction:2); + env2 = EnvGen.kr(Env.new([0, 1, 0], [0, decay*5], curve:-150), doneAction:0); + osc1 = LFPulse.ar(203.52) * 0.6; + osc2 = LFPulse.ar(366.31) * 0.6; + osc3 = LFPulse.ar(301.77) * 0.6; + osc4 = LFPulse.ar(518.19) * 0.6; + osc5 = LFPulse.ar(811.16) * 0.6; + osc6 = LFPulse.ar(538.75) * 0.6; + sig = osc1 + osc2 + osc3 + osc4 + osc5 +osc6; + sig = BLowShelf.ar(sig, 990, 2, -3); + sig = BPF.ar(sig, 7700); + sig = BPeakEQ.ar(sig, 7200, 0.5, 5); + sig = BHiPass4.ar(sig, 8100, 0.7); + sig = BHiShelf.ar(sig, 9400, 1, 5); + siga = sig * env1 * 0.6; + sigb = sig * env2; + sum = siga + sigb; + sum = LPF.ar(sum, 4000); + sum = Pan2.ar(sum, 0); + sum = sum * amp * 2; + Out.ar(0, sum); +}).add; + +SynthDef.new(\cymbal, { + arg decay=2, amp=20, pan=0, gate=0, tone=0.002; + var sig, sig1,sig2, sig2a, sig2b, sig3, env1, env2, env2b, env3, osc1, osc2, osc3, osc4, osc5, osc6, sum; + env1 = EnvGen.kr(Env.perc(0.3, decay, curve:-3), doneAction:2); + env2 = EnvGen.kr(Env.new([0, 0.6, 0], [0.1, decay*0.7], -5), doneAction:0); + env2b = EnvGen.kr(Env.new([0, 0.3, 0], [0.1, decay*20], -120), doneAction:0); + env3 = EnvGen.kr(Env.new([0, 1, 0], [0, decay*5], curve:-150), doneAction:0); + osc1 = LFPulse.ar(203.52) * 0.6; + osc2 = LFPulse.ar(366.31) * 0.6; + osc3 = LFPulse.ar(301.77) * 0.6; + osc4 = LFPulse.ar(518.19) * 0.6; + osc5 = LFPulse.ar(811.16) * 0.6; + osc6 = LFPulse.ar(538.75) * 0.6; + sig = osc1 + osc2 + osc3 + osc4 + osc5 +osc6; + sig1 = BLowShelf.ar(sig, 2000, 1, 5); + sig1 = BPF.ar(sig1, 3000); + sig1 = BPeakEQ.ar(sig1, 2400, 0.5, 5); + sig1 = BHiPass.ar(sig1, 1550, 0.7); + sig1 = LPF.ar(sig1, 3000); + sig1 = BLowShelf.ar(sig1, 1000, 1, 0); + sig1 = sig1 * env1 * tone; + sig2 = BLowShelf.ar(sig, 990, 2, -5); + sig2 = BPF.ar(sig2, 7400); + sig2 = BPeakEQ.ar(sig2, 7200, 0.5, 5); + sig2 = BHiPass4.ar(sig2, 6800, 0.7); + sig2 = BHiShelf.ar(sig2, 10000, 1, -4); + sig2a = sig2 * env2 * 0.3; + sig2b = sig2 * env2b * 0.6; + sig3 = BLowShelf.ar(sig, 990, 2, -15); + sig3 = BPF.ar(sig3, 6500); + sig3 = BPeakEQ.ar(sig3, 7400, 0.35, 10); + sig3 = BHiPass4.ar(sig3, 10500, 0.8, 2); + sig3 = sig3 * env3; + sum = sig1 + sig2a + sig2b + sig3; + sum = LPF.ar(sum, 4000); + sum = Pan2.ar(sum, 0); + sum = sum * amp; + Out.ar(0, sum); +}).add; + +) + +