( 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) );