diff --git a/lib/fmGrains.scd b/lib/fmGrains.scd index 5f4443e..735d692 100644 --- a/lib/fmGrains.scd +++ b/lib/fmGrains.scd @@ -1,6 +1,6 @@ ( // synthdef ///////// SynthDef(\fm_grainer, { - arg out = 0, modfreq = rrand(10,1000), carfreq = 100 ; + arg out = 0, modfreq = rrand(10,1000), carfreq = 100, amp=0.5 ; var signal; signal = GrainFM.ar( @@ -11,12 +11,12 @@ SynthDef(\fm_grainer, { modfreq: modfreq, // index: LFNoise1.kr.range(1, 90), index: SinOsc.kr(0.05)*0.2,// LFNoise1.kr.range(1, 90), - pan: LFNoise1.kr.range(-1,1), + pan: 0, envbufnum: -1 ) * 0.2; - signal = signal * EnvGen.kr(Env.linen(1,60,10,0.4,\lin),doneAction:Done.freeSelf); + signal = signal * EnvGen.kr(Env.linen(1,60,10,0.4,\lin),doneAction:Done.freeSelf) * amp; - Out.ar(out, Splay.ar(signal)); + Out.ar(out, signal); }).add; ); \ No newline at end of file diff --git a/lib/henonSynthDef.scd b/lib/henonSynthDef.scd index 4e18286..aab25bd 100644 --- a/lib/henonSynthDef.scd +++ b/lib/henonSynthDef.scd @@ -1,8 +1,8 @@ ( SynthDef(\henonSynth1, { - arg out=0; - var sig, freq; + arg out=0, amp=0.5, gate=1, fadeTime=1; + var sig, freq, env; freq = HenonN.ar( freq: 5000, @@ -19,15 +19,10 @@ SynthDef(\henonSynth1, { sig = sig.clip2(0.8); sig = LeakDC.ar(sig); - // if you don't have sc3_plugins, comment out the following line - //sig = sig + (Greyhole.ar(in:sig, feedback:0.2, diff: 1, delayTime: 0.6) * 0.7); + env = EnvGen.kr( Env([0, 1, 0], [fadeTime, fadeTime], \sin, 1), + gate, doneAction: Done.freeSelf); - //y = SinOsc.kr(0.1,phase:1.5pi).range(0,1); - //x = SinOsc.kr(0.1,phase:1.5pi).range(0,1); - //x = SinOsc.kr(0.1,phase:1pi,mul:5).clip2.range(0,1); - - //Out.ar(out, sig); - //sig = ~octoPanOut.value(sig, x, y, fact); + sig = sig * env * amp; Out.ar(out,sig); }).add; diff --git a/lib/latoocarfianSynthDef.scd b/lib/latoocarfianSynthDef.scd index ff2ec7e..2a1d39b 100644 --- a/lib/latoocarfianSynthDef.scd +++ b/lib/latoocarfianSynthDef.scd @@ -1,7 +1,7 @@ ( // latoocarfian trig and 2DC ... -SynthDef(\latooTriggers, { |out, trigA=1.1| - var trig, sig; +SynthDef(\latooTriggers, { |out, trigA=1.1, gate=1, fadeTime=1, amp=0.5| + var trig, sig, env; trig = LatoocarfianTrig.kr( minfreq: 4, @@ -38,6 +38,12 @@ SynthDef(\latooTriggers, { |out, trigA=1.1| sig = LeakDC.ar(sig * 0.6); + env = EnvGen.kr( + Env([0, 1, 0], [fadeTime, fadeTime], \sin, 1), + gate, doneAction: Done.freeSelf); + + sig = sig * env * amp; + Out.ar(out,sig); }).add; diff --git a/rhizosphere.scd b/rhizosphere.scd index 2fee08e..5c9430a 100644 --- a/rhizosphere.scd +++ b/rhizosphere.scd @@ -97,7 +97,7 @@ s.meter; s.plotTree; ); ( -var timeLine, r; +var timeLine; // CmdPeriod frees these, but not the busses, so only these need to be re-inst. @@ -138,10 +138,10 @@ var timeLine, r; ~panner3y.free; ~panner4y.free; //~panner1y = SynthDef(\pannerOsc, {Out.kr(~panBus1y, SinOsc.kr(0.1).range(0.1,0.2))}).play; -~panner1y = SynthDef(\randomPanY1, { Out.kr(~panBus1y, LFNoise2.kr(1).range(0,0.28))}).play; -~panner2y = SynthDef(\randomPanY2, { Out.kr(~panBus2y, LFNoise2.kr(1).range(0,0.28))}).play; -~panner3y = SynthDef(\randomPanY3, { Out.kr(~panBus3y, LFNoise2.kr(1).range(0,0.28))}).play; -~panner4y = SynthDef(\randomPanY4, { Out.kr(~panBus4y, LFNoise2.kr(1).range(0,0.28))}).play; +~panner1y = SynthDef(\randomPanY1, { Out.kr(~panBus1y, LFNoise1.kr(1).range(0,0.28))}).play; +~panner2y = SynthDef(\randomPanY2, { Out.kr(~panBus2y, LFNoise1.kr(1).range(0,0.28))}).play; +~panner3y = SynthDef(\randomPanY3, { Out.kr(~panBus3y, LFNoise1.kr(1).range(0,0.28))}).play; +~panner4y = SynthDef(\randomPanY4, { Out.kr(~panBus4y, LFNoise1.kr(1).range(0,0.28))}).play; // convert to SynthDef + Synth for common oscilations? ~reverb1wetBus.free; ~wetOsc.free; // clean up @@ -165,108 +165,196 @@ timeLine = Routine { "--- starting forestSoil granulation ...".postln; ~soil1 = Synth(\granSoil, [\out, ~octoBus1, \sndbuf, ~forestSoilBuf, \dur, 0.0001 ,\fadeTime, 20]); - ~soil1durBus = Bus.control(s,1); ~soil1durBus.value = 0.0001; ~soil1.map(\dur, ~soil1durBus); - wait(80); + "--- starting soil2 ...".postln; ~soil2 = Synth(\granSoil, [\out, ~octoBus2, \sndbuf, ~forestSoilBuf, \dur, 0.0001 ,\fadeTime, 20]); - ~soil2durBus = Bus.control(s,1); ~soil2durBus.value = 0.0001; ~soil2.map(\dur, ~soil2durBus); - - wait(20); - - ~soil1DurOsc = SynthDef( \soilDurOsc, {Out.kr(~soil1durBus, SinOsc.kr(0.01,1.5pi).range(0.0001, 0.1))} ).play; - wait(20); + "--- starting oscilating duration ...".postln; + ~soil1DurOsc = SynthDef( \soilDurOsc, {Out.kr(~soil1durBus, SinOsc.kr(0.01,1.5pi).range(0.0001, 0.1))} ).play; + wait(20); + + "--- starting oscilating duration 2...".postln; ~soil2DurOsc = SynthDef( \soilDurOsc, {Out.kr(~soil2durBus, SinOsc.kr(0.01,1.5pi).range(0.0001, 0.2))} ).play; - wait(120); + "--- return to static duration...".postln; ~soil1.set(\dur, 0.0001); wait(1); ~soil2.set(\dur, 0.0001); - // this could repeat somewhat? + + "--- fade soils...".postln; ~soil1.set(\gate, 0, \fadeTime, 15); // use envelope to fade out wait(3); ~soil2.set(\gate, 0, \fadeTime, 15); // use envelope to fade out - wait(2); - - - /* NOTES: - ~soil1DurOsc = SynthDef(\soilDurOsc, {Out.kr(30, SinOsc.kr(0.01,1.5pi).range(0.0001, 1))}).play - ~soil1DurOsc.free - // start oscilation, very slowly - ~soil1.set(\dur, 0.0001); - - ~soil1 = Synth(\granSoil, [\out, ~octoBus1, \sndbuf, ~forestSoilBuf]); - - ~soil1.set(\rate, 0.2); - ~soil1.set(\out, 1); - ~soil1.set(\dur, 0.01); - ~soil1.set(\amp, 1); - ~soil1.set(\out, 1); - ~soil1.set(\envbuf, ~planotaBuf); - - // send SinOscilation to a argument via bus - ~foreskrBus = Bus.control(s, 1); - ~soil1.map(\dur, ~foreskrBus); - ~durOsc = {Out.kr(~foreskrBus, SinOsc.kr(0.1).range(0.007,0.1))}.play; - ~durOsc.free; - - // another granulator - ~soil2 = Synth(\granSoil, [\out, ~octoBus2, \sndbuf, ~forestSoilBuf]); - ~soil2.map(\dur, ~foreskrBus); - - ~soil2.set(\amp, 0.1) - - ~soil1.set(\gate, 0, \fadeTime, 2); // use envelope to fade out - ~soil2.set(\gate, 0, \fadeTime, 2); // use envelope to fade out - - // stop:free - ~soil1.free // stop. - ~soil2.free // stop. - */ - - ~lorenzTrig1 = Synth(\lorenzTrigRing, [\out, ~octoBus1, \freq, 1400, \amp, 0.5, \fadeTime, 5]); - ~lorenzTrig1.set(\fadeTime, 5, \gate, 0); - - //~lorenzTrig1.free; - - - - - - - - - - - - - - - - - - - - - - - - - + wait(20); + ~soil1DurOsc.free; + ~soil2DurOsc.free; + // trigRingz ////////////////////////////////////////////////////////////////////////////////////////////////////// + + "--- starting lorenzTrig1 ...".postln; + ~lorenzTrig1 = Synth(\lorenzTrigRing, [\out, ~octoBus1, \freq, 1400, \amp, 0.5, \fadeTime, 5]); + wait(30); + + "--- starting stdTrig1 ...".postln; + ~stdTrig1 = Synth(\stndTrigRing, [\out, ~octoBus2, \freq,1900, \amp,0.5,\fadeTime, 10]); + wait(20); + + "--- starting lorenzTrig2 ...".postln; + ~lorenzTrig2 = Synth(\lorenzTrigRing, [\out, ~octoBus3, \freq, 400, \amp, 0.3, \fadeTime, 10, \min, 5, \max, 20]); + wait(20); + + "--- starting stdTrig2 ...".postln; + ~stdTrig2 = Synth(\stndTrigRing, [\freq, 70, \min, 0, \max, 2, \decay, 2, \ffreq, 200, \amp, 0.4, \out, ~octoBus4, \fadeTime, 20]) ; + wait(20); + + "--- starting henoTrig1 ...".postln; + ~henoTrig1 = Synth(\henoTrigRing, [\out, ~octoBus2, \freq, 2700, \amp, 1, \min, 0.1, \max, 1, \fadeTime, 20]); + wait(20); + + "--- starting henoTrig1 ...".postln; + ~gbmanTrig1 = Synth(\gbmanTrigRing, [\out, ~octoBus1, \freq, 90, \decay, 2, \min, 0.2, \max, 1, \amp, 0.4, \fadeTime, 2]); + wait(20); + + "--- starting latooTrig1 ...".postln; + ~latooTrig1 = Synth(\latooTrigRing, [\out, ~octoBus4, \freq, 3300, \decay, 3, \min, 0.2, \max, 1, \amp, 0.2, \fadeTime, 10 ]); + wait(20); + + "--- starting latooTrig2 ...".postln; + ~latooTrig2 = Synth(\latooTrigRing, [\out, ~octoBus3, \freq, 4300, \decay, 0.2, \min, 1, \max, 10, \amp, 0.2, \fadeTime, 10 ]); + wait(20); + + "--- starting fhnTrig1 ...".postln; + ~fhnTrig1 = Synth(\fhnTrigRing, [\out, ~octoBus1, \freq, 110, \amp, 0.5, \decay, 2, \min, 0.2, \max, 1, \amp, 0.4, \fadeTime, 10]); + wait(20); + + "--- starting fhnTrig2 ...".postln; + ~fhnTrig2 = Synth(\fhnTrigRing, [\out, ~octoBus2, \freq, 2110, \amp, 0.5, \min, 2, \max, 20, \amp, 0.5, \fadeTime, 10]); + wait(40); + + "--- starting ~fmgrainer ...".postln; + ~fmgrainer = Routine { 200.do({ x = Synth(\fm_grainer, [ "modfreq", rrand(10,1000), "carfreq", rrand(40,100), \out, ~octoBus1 ]); 1.wait; }); "--- fmgrains done generating new ones ...".postln; }.play; + // this one will fade out by itself at some point + wait(60); + + "--- fading out ~stdTrig1, stdTrig2, lorenzTrig2, henoTrig1...".postln; + ~stdTrig1.set(\fadeTime, 5, \gate, 0); + ~stdTrig2.set(\fadeTime, 8, \gate, 0); + ~lorenzTrig2.set(\fadeTime, 12, \gate, 0); + ~henoTrig1.set(\fadeTime, 15, \gate, 0); + wait(30); + + "--- fading out ...".postln; + ~gbmanTrig1.set(\fadeTime, 15, \gate, 0); + ~latooTrig1.set(\fadeTime, 1, \gate, 0); + ~latooTrig2.set(\fadeTime, 10, \gate, 0); + ~fhnTrig1.set(\fadeTime, 1, \gate, 0); + wait(20); + + "--- fading out lorenzTrgi1 ...".postln; + ~lorenzTrig1.set(\fadeTime, 30, \gate, 0); + wait(80); + + "--- fading out fhnTrig2 ...".postln; + ~fhnTrig2.set(\fadeTime, 20, \gate, 0); + + "--- latooWanderings ...".postln; + ~latooWan1 = Synth(\latooWanderings, [\out, ~octoBus4, \fadeTime, 30, \amp, 0.3]); + wait(60); + + "--- markov1 ...".postln; + ~markov1 = Synth(\markovS1, [ \out, ~octoBus1, \freq, 440, \tsize, 3, \amp, 0.3, \clip, 0.69, \fadeTime, 0.01 ]); + wait(60); + + "--- markov fade, latooWan fade, distbleeps ...".postln; + ~markov1.set(\gate, 0, \fadeTime, 0.01); + ~latooWan1.set(\gate, 0, \fadeTime, 0.01); + ~distbleeps = Synth(\latooTriggers, [\out, ~octoBus3, \trigA, 1.1, \fadeTime, 0.01, \amp, 0.7]); + wait(60); + + "--- markov7 ...".postln; + ~markov7 = Synth(\markovS1, [ \out, ~octoBus2, \freq, 740, \tsize, 3, \amp, 0.1, \clip, 0.9, \fadeTime, 7 ]); + wait(60); + + "--- fade: markov7, distbleeps ...".postln; + ~markov7.set(\gate, 0, \fadeTime, 0.01); + ~distbleeps.set(\gate, 0, \fadeTime, 0.01); + + "--- markov9 ...".postln; + ~markov9 = Synth(\markovS1, [ \out, ~octoBus1, \freq, 1940, \tsize, 3, \amp, 0.2, \clip, 0.9, \fadeTime, 0.01 ]); + wait(30); + + "--- fade: markov9 ...".postln; + ~markov9.set(\gate, 0, \fadeTime, 0.01); + wait(5); + + "--- markov10,11,12 ...".postln; + ~markov10 = Synth(\markovS1, [ \out, ~octoBus4, + \freq, 501, \tsize, 3, \amp, 0.2, \clip, 0.9, \fadeTime, 0.1 ]); + ~markov11 = Synth(\markovS1, [ \out, ~octoBus3, + \freq, 1101, \tsize, 3, \amp, 0.2, \clip, 0.9, \fadeTime, 0.1 ]); + ~markov12 = Synth(\markovS1, [ \out, ~octoBus2, + \freq, 3001, \tsize, 3, \amp, 0.2, \clip, 0.9, \fadeTime, 0.1 ]); + wait(60); + + "--- noiseCrackle ...".postln; + ~noiseCr1 = Synth(\noiseCrackle, [\out, ~octoBus1, \fadeTime, 40 ]); + "--- fade markov10,11,12 ...".postln; + ~markov10.set(\gate, 0, \fadeTime, 50); + ~markov11.set(\gate, 0, \fadeTime, 50); + ~markov12.set(\gate, 0, \fadeTime, 50); + wait(40); + + "--- noiseCrackle lpfa hpfa ...".postln; + ~noiseCr1.set(\lpfa,1,\hpfa,0); + wait(10); + + "--- noiseCrackle lpfa hpfa ...".postln; + ~noiseCr1.set(\lpfa,0,\hpfa,1); + wait(5); + + "--- noiseCrackle lpfa hpfa ...".postln; + ~noiseCr1.set(\lpfa,1,\hpfa,1); + wait(10); + + "--- darkHenon ...".postln; + ~darkHenon1 = Synth(\henonLsynth2, [\out, ~octoBus4, \fadeTime, 60]); + wait(20); + + "--- noiseCrackle amp 0.5 ...".postln; + ~noiseCr1.set(\amp, 0.5); + wait(40); + + "--- noiseCrackle amp 0.2 ...".postln; + ~noiseCr1.set(\amp, 0.2); + wait(30); + + "--- noiseCrackle fade ...".postln; + ~noiseCr1.set(\fadeTime, 30, \gate,0); + wait(60); + + "--- henonS1 ...".postln; + ~henonS1 = Synth(\henonSynth1, [\out, ~octoBus3, \amp, 0.2, \fadeTime, 40]); + wait(180); + + "--- final fade henonS1, darkHenon ...".postln; + ~henonS1.set(\gate, 0, \fadeTime, 50); + ~darkHenon1.set(\gate, 0, \fadeTime, 40); + + + //1.wait; /* @@ -381,43 +469,6 @@ timeLine = Routine { \freq, 5000, \tsize, 3, \amp, 0.1, \clip, 0.9, \fadeTime, 10 ]); wait(30); - ~markov10 = Synth(\markovS1, [ \out, ~octoBus1, - \freq, 501, \tsize, 3, \amp, 0.1, \clip, 0.9, \fadeTime, 10 ]); - ~markov11 = Synth(\markovS1, [ \out, ~octoBus1, - \freq, 1101, \tsize, 3, \amp, 0.1, \clip, 0.9, \fadeTime, 10 ]); - ~markov12 = Synth(\markovS1, [ \out, ~octoBus1, - \freq, 3001, \tsize, 3, \amp, 0.1, \clip, 0.9, \fadeTime, 10 ]); - - ~markov5.set(\gate, 0); - ~markov6.set(\gate, 0); - - wait(30); - - ~markov7.set(\gate, 0, \fadeTime, 40); - ~markov8.set(\gate, 0, \fadeTime, 40); - ~markov9.set(\gate, 0, \fadeTime, 40); - wait(60); - - ~markov10.set(\gate, 0, \fadeTime, 40); - ~markov11.set(\gate, 0, \fadeTime, 40); - ~markov12.set(\gate, 0, \fadeTime, 40); - wait(20); - - - ~noiseCr1 = Synth(\noiseCrackle, [\out, ~octoBus1, \fadeTime, 10 ]); - wait(30); - - ~noiseCr1.set(\lpfa,1,\hpfa,0); - wait(10); - - ~noiseCr1.set(\lpfa,0,\hpfa,1); - wait(5); - - ~noiseCr1.set(\lpfa,1,\hpfa,1); - wait(30); - - ~noiseCr1.set(\fadeTime, 20, \gate,0); - **********/ @@ -514,7 +565,7 @@ FreqScope.new(400, 200, 0, server: s); ~henonSquare = Synth(\henonSquare, [\out, ~octoBus1, \amp, 0.2]); ~henonSquare.set(\gate,0); -~latooWan1 = Synth(\latooWanderings, [\out, ~octoBus4, \fadeTime, 0.1]); +~latooWan1 = Synth(\latooWanderings, [\out, ~octoBus4, \fadeTime, 20, \amp, 0.3]); ~latooWan1.set(\out,1) ~latooWan1.set(\out,~octoBus1) ~latooWan1.set(\amp,1) @@ -546,30 +597,6 @@ FreqScope.new(400, 200, 0, server: s); -////// ring resonator ringing the clicks from triggers - -~stdTrig1 = Synth(\stndTrigRing, [\out, ~octoBus1, \freq,1900]); -~stdTrig1.free - -(~stdTrig2 = Synth(\stndTrigRing, [\freq, 70, \min, 0, \max, 2, \decay, 2, \ffreq, 200, \amp, 0.9, -\out, ~octoBus1]) ) -~stdTrig2.free - -~henoTrig1 = Synth(\henoTrigRing, [\out, ~octoBus1, \freq, 700, \amp, 0.5], ~octoPanner1, \addBefore); -~henoTrig1.free; - -~gbmanTrig1 = Synth(\gbmanTrigRing, [\out, ~octoBus1, \freq, 900, \amp, 0.5], ~octoPanner1, \addBefore); -~gbmanTrig1.free; - -~latooTrig1 = Synth(\latooTrigRing, [\out, ~octoBus1, \freq, 300], ~octoPanner1, \addBefore); -~latooTrig1.free; - -~lorenzTrig1 = Synth(\lorenzTrigRing, [\out, ~octoBus1, \freq, 1400, \amp, 0.5]); -~lorenzTrig1.free; - -~fhnTrig1 = Synth(\fhnTrigRing, [\out, ~octoBus1, \freq, 2100, \amp, 0.5], ~octoPanner1, \addBefore); -~fhnTrig1.free; -