From 92c1fd71f21071a1b87bf799133f315e2f7266d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Prin=C4=8Di=C4=8D?= Date: Fri, 18 Dec 2020 23:03:23 +0100 Subject: [PATCH] final sonoretum version --- scd/lib/octoPanOut.scd | 32 +-- scd/octopoda.scd | 578 ++++++++++++++++------------------------- 2 files changed, 244 insertions(+), 366 deletions(-) diff --git a/scd/lib/octoPanOut.scd b/scd/lib/octoPanOut.scd index bba4184..5526141 100644 --- a/scd/lib/octoPanOut.scd +++ b/scd/lib/octoPanOut.scd @@ -1,16 +1,16 @@ ( // a function to position sound in space ~octoPanOut = { - arg in, in_x, in_y, fact; - + arg in, in_x, in_y, fact; + // 5.4m 3.5m var s1_x=0, s1_y=0, s1_amp, - s2_x=0, s2_y=360, s2_amp, - s3_x=0, s3_y=720, s3_amp, - s4_x=0, s4_y=1080, s4_amp, - s5_x=650, s5_y=1260, s5_amp, - s6_x=650, s6_y=900, s6_amp, - s7_x=650, s7_y=540, s7_amp, - s8_x=650, s8_y=180, s8_amp ; + s2_x=540, s2_y=0, s2_amp, + s3_x=0, s3_y=350, s3_amp, + s4_x=540, s4_y=350, s4_amp, + s5_x=0, s5_y=700, s5_amp, + s6_x=540, s6_y=700, s6_amp, + s7_x=0, s7_y=1050, s7_amp, + s8_x=540, s8_y=1050, s8_amp ; var factor = (1 / (5000000 * fact)); // exponential curve of amplification calculated from distance? log???? //var distance = {|x1,y1,x2,y2| ((x2-x1).squared + (y2-y1).squared).sqrt}; @@ -21,7 +21,7 @@ in_x = in_x * 650; //in_y = (in_y + 1) * 0.5 * 1260; in_y = in_y * 1260; - + s1_amp = amp.value(in_x,in_y,s1_x,s1_y); s2_amp = amp.value(in_x,in_y,s2_x,s2_y); s3_amp = amp.value(in_x,in_y,s3_x,s3_y); @@ -32,7 +32,7 @@ s8_amp = amp.value(in_x,in_y,s8_x,s8_y); [in * s1_amp, in * s2_amp, in * s3_amp, in * s4_amp, in * s5_amp, in * s6_amp, in * s7_amp, in * s8_amp] - + }; @@ -41,7 +41,7 @@ SynthDef("octoPanner", { var snd = In.ar(inBus,1); snd = ~octoPanOut.value(snd, x, y, radius); - + Out.ar(outBus, snd); }).add; ); @@ -60,12 +60,12 @@ SynthDef("reverBusser", { snd.put(5, Limiter.ar(in:snd.at(5), level:-6.dbamp, dur:0.04)); snd.put(6, Limiter.ar(in:snd.at(6), level:-6.dbamp, dur:0.04)); snd.put(7, Limiter.ar(in:snd.at(7), level:-6.dbamp, dur:0.04)); - + verb1 = JPverb.ar(snd.at([0,1]) * verb1wet); verb2 = JPverb.ar(snd.at([2,3]) * verb2wet); verb3 = JPverb.ar(snd.at([4,5]) * verb3wet); verb4 = JPverb.ar(snd.at([6,7]) * verb4wet); - + snd.put(0, snd.at(0) + verb1.at(0) ); snd.put(1, snd.at(1) + verb1.at(1) ); snd.put(2, snd.at(2) + verb2.at(0) ); @@ -74,7 +74,7 @@ SynthDef("reverBusser", { snd.put(5, snd.at(5) + verb3.at(1) ); snd.put(6, snd.at(6) + verb4.at(0) ); snd.put(7, snd.at(7) + verb4.at(1) ); - + Out.ar(outBus, snd); }).add; ); @@ -124,7 +124,7 @@ OctoPan : MultiOutUGen { }; ^in*amps; } - + } */ \ No newline at end of file diff --git a/scd/octopoda.scd b/scd/octopoda.scd index 0c3caa0..0c89396 100644 --- a/scd/octopoda.scd +++ b/scd/octopoda.scd @@ -1,381 +1,259 @@ (/* - Copyright (c) 2020 Luka Prinčič, All rights reserved. - This program is free software distributed under - GNU General Public Licence. See COPYING for more info. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Copyright (c) 2020 Luka Prinčič, All rights reserved. +This program is free software distributed under +GNU General Public Licence. See COPYING for more info. +- - - - - - - - - - - - - - - - - - - - - - - - - - - - // TECHNOKINSHIP - OCTOPODA //////////////////////////////////// - ██████╗ ██████╗████████╗ ██████╗ ██████╗ ██████╗ ██████╗ █████╗ +██████╗ ██████╗████████╗ ██████╗ ██████╗ ██████╗ ██████╗ █████╗ ██╔═══██╗██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗██╔═══██╗██╔══██╗██╔══██╗ ██║ ██║██║ ██║ ██║ ██║██████╔╝██║ ██║██║ ██║███████║ ██║ ██║██║ ██║ ██║ ██║██╔═══╝ ██║ ██║██║ ██║██╔══██║ ╚██████╔╝╚██████╗ ██║ ╚██████╔╝██║ ╚██████╔╝██████╔╝██║ ██║ - ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ - +╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ - */ +SONORETUM VERSION FOR 15.DEC 2020 /////////////////////////////// + +*/ #[\internal, \local].do { |s| s = Server.perform(s); s.options.numInputBusChannels = 2; - s.options.numOutputBusChannels = 8; + s.options.numOutputBusChannels = 8; s.options.memSize = 2097152; // 2 gigs }; Server.default.waitForBoot { + var timeLine; + // library path var libPath = PathName(thisProcess.nowExecutingPath.dirname +/+ "lib"); - // for each files in that lib folder + // 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); + this.executeFile(afile.fullPath); }); + + s.meter; + s.plotTree; + s.scope(8); + + timeLine = Routine { + "--- starting main routine ...".postln; + + 1.wait; + + // octoPan busses ////////////// + "loading octoPan busses...".postln; + // free busses and panners when re-trying things? + ~octoBus1.free; ~octoBus2.free; ~octoBus3.free; ~octoBus4.free; + ~panBus1x.free; ~panBus1y.free; ~panBus1r.free; + ~panBus2x.free; ~panBus2y.free; ~panBus2r.free; + ~panBus3x.free; ~panBus3y.free; ~panBus3r.free; + ~panBus4x.free; ~panBus4y.free; ~panBus4r.free; + ~revBus.free; + + // octoBus1 + panners and control busses: + ~octoBus1 = Bus.audio(s,1); + ~panBus1x = Bus.control(s,1); + ~panBus1y = Bus.control(s,1); + ~panBus1r = Bus.control(s,1); + ~panBus1y.value = 0.14; // set a fixed value to a bus + ~panBus1x.value = 0; + ~panBus1r.value = 1; + + // octoBus2 + panners and control busses: + ~octoBus2 = Bus.audio(s,1); + ~panBus2x = Bus.control(s,1); + ~panBus2y = Bus.control(s,1); + ~panBus2r = Bus.control(s,1); + ~panBus2y.value = 0.14; // set a fixed value to a bus + ~panBus2x.value = 0; + ~panBus2r.value = 2; + + // octoBus3 + panners and control busses: + ~octoBus3 = Bus.audio(s,1); + ~panBus3x = Bus.control(s,1); + ~panBus3y = Bus.control(s,1); + ~panBus3r = Bus.control(s,1); + ~panBus3y.value = 0.14; // set a fixed value to a bus + ~panBus3x.value = 0; + ~panBus3r.value = 2; + + // octoBus4 + panners and control busses: + ~octoBus4 = Bus.audio(s,1); + ~panBus4x = Bus.control(s,1); + ~panBus4y = Bus.control(s,1); + ~panBus4r = Bus.control(s,1); + ~panBus4y.value = 0.14; // set a fixed value to a bus + ~panBus4x.value = 0; + ~panBus4r.value = 2; + + // 8chan reverb bus + ~revBus = Bus.audio(s,8); + ">>> loaded all busses".postln; + + 1.wait; + ////////////////////////////////////////////////////////////////////////////// + + "\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>".postln; + "--- O C T O P O D A -----".postln; + ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n".postln; + + "--- loading octoPanners ...".postln; + ~octoPanner1 = Synth("octoPanner", [\inBus, ~octoBus1, \outBus, ~revBus], addAction: \addToTail); + ~octoPanner1.map(\x, ~panBus1x); + ~octoPanner1.map(\y, ~panBus1y); + ~octoPanner1.map(\radius, ~panBus1r); + + ~octoPanner2 = Synth("octoPanner", [\inBus, ~octoBus2, \outBus, ~revBus], addAction: \addToTail); + ~octoPanner2.map(\x, ~panBus2x); + ~octoPanner2.map(\y, ~panBus2y); + ~octoPanner2.map(\radius, ~panBus2r); + + ~octoPanner3 = Synth("octoPanner", [\inBus, ~octoBus3, \outBus, ~revBus], addAction: \addToTail); + ~octoPanner3.map(\x, ~panBus3x); + ~octoPanner3.map(\y, ~panBus3y); + ~octoPanner3.map(\radius, ~panBus3r); + + ~octoPanner4 = Synth("octoPanner", [\inBus, ~octoBus4, \outBus, ~revBus], addAction: \addToTail); + ~octoPanner4.map(\x, ~panBus4x); + ~octoPanner4.map(\y, ~panBus4y); + ~octoPanner4.map(\radius, ~panBus4r); + + // 4 x stereo reverbs are fixed to outputs ([0,1][2,3][4,5][6,7]) not panners! + ~reverb = Synth("reverBusser", [\inBus, ~revBus, \outBus, 0], addAction: \addToTail); + + + // some default oscilations of pan and reverb + //~panner1y.free; ~panner2y.free; ~panner3y.free; ~panner4y.free; + //~panner1x.free; ~panner2x.free; ~panner3x.free; ~panner4x.free; + + + + ~reverb1wetBus.free; // ~wetOsc.free; // clean up + ~reverb2wetBus.free; // ~wetOsc.free; // clean up + ~reverb3wetBus.free; // ~wetOsc.free; // clean up + ~reverb4wetBus.free; // ~wetOsc.free; // clean up + + ~reverb1wetBus = Bus.control(s, 1); // create control bus + ~reverb.map(\verb1wet, ~reverb1wetBus); // map an argument to control bus + ~reverb2wetBus = Bus.control(s, 1); // create control bus + ~reverb.map(\verb2wet, ~reverb2wetBus); // map an argument to control bus + ~reverb3wetBus = Bus.control(s, 1); // create control bus + ~reverb.map(\verb3wet, ~reverb3wetBus); // map an argument to control bus + ~reverb4wetBus = Bus.control(s, 1); // create control bus + ~reverb.map(\verb4wet, ~reverb4wetBus); // map an argument to control bus + + //~wetOsc1.free; ~wetOsc2.free; ~wetOsc3.free; ~wetOsc4.free; + ~wetOsc1 = SynthDef(\randomVerb1, {Out.kr(~reverb1wetBus, LFNoise2.kr(1).range(0, 0.8)) }).play; + ~wetOsc2 = SynthDef(\randomVerb2, {Out.kr(~reverb2wetBus, LFNoise2.kr(1).range(0, 0.8)) }).play; + ~wetOsc3 = SynthDef(\randomVerb3, {Out.kr(~reverb3wetBus, LFNoise2.kr(1).range(0, 0.8)) }).play; + ~wetOsc4 = SynthDef(\randomVerb4, {Out.kr(~reverb4wetBus, LFNoise2.kr(1).range(0, 0.8)) }).play; + + 1.wait; + + SynthDef(\tw, { + //Pan2.ar(FreeVerb.ar( + arg outBus; + var snd, rev, z, y; + snd = 0.5 * TermanWang.ar( + input: 2.0 + SinOsc.ar( + LFNoise1.kr(LFNoise0.kr(LFNoise0.kr(1).range(10,0.1)).range(10,0.1)).exprange(10,10000), 0, + LFNoise1.kr(LFNoise0.kr(LFNoise0.kr(1).range(10,0.1)).range(10,0.1)).exprange(0.1,100.0)), + reset: Impulse.kr(LFNoise1.kr(0.1).exprange(1,10000, 'exponential')), + ratex: 0.2, + ratey:0.2, + alpha:2.0, + beta:2.0, + eta:1.0, + initx:LFNoise1.kr(LFNoise0.kr(LFNoise0.kr(1).range(10,0.1)).range(10,0.1)).range(0.4,1.2), + inity:LFNoise1.kr(LFNoise0.kr(LFNoise0.kr(1).range(10,0.1)).range(10,0.1)).range(2.0,4.0) + ); + snd = LeakDC.ar(snd); + snd = snd * LFPulse.kr(LFNoise0.kr(0.4).range(0.01,0.1), width:LFNoise0.kr(0.5).exprange(0.01,0.1)); + + // reverb predelay time : + z = DelayN.ar(snd*100, 0.048); + // 7 length modulated comb delays in parallel : + y = Mix.ar(Array.fill(7,{ CombL.ar(z, 0.1, LFNoise1.kr(0.01, 0.02, 0.022), 15) })); + // two parallel chains of 4 allpass delays (8 total) : + 4.do({ y = AllpassN.ar(y, 0.020, [0.050.rand, 0.050.rand], 1) }); + + rev = Limiter.ar(y, LFNoise1.kr(0.1).exprange(0.01, 0.3)-0); + snd = snd * LFNoise1.kr(0.05).range(0.1,1); + snd = snd + rev; + + snd = LeakDC.ar(snd); + //snd = HPF.ar(snd, 300); + Out.ar(outBus, snd); + }).add; + + + 1.wait; + + //~tw.free; + ~tw = Synth(\tw, [\outBus, ~octoBus1]); + ~panBus1y.value = 0; // set a fixed value to a bus + ~panBus1x.value = 0; + ~panBus1r.value = 0.1; + + 1.wait; + + //~tw2.free; + ~tw2 = Synth(\tw, [\outBus, ~octoBus2]); + ~panBus2y.value = 0.28; // set a fixed value to a bus + ~panBus2x.value = 0; + ~panBus2r.value = 0.1; + + 1.wait; + + //~tw3.free; + ~tw3 = Synth(\tw, [\outBus, ~octoBus3]); + ~panBus2y.value = 1; // set a fixed value to a bus + ~panBus2x.value = 0; + ~panBus2r.value = 0.001; + + 1.wait; + + //~tw4.free; + ~tw4 = Synth(\tw, [\outBus, ~octoBus4]); + ~panBus2y.value = 1; // set a fixed value to a bus + ~panBus2x.value = 0; + ~panBus2r.value = 0.001; + + //~panner1y.free; ~panner2y.free; ~panner3y.free; ~panner4y.free; + //~panner1x.free; ~panner2x.free; ~panner3x.free; ~panner4x.free; + + ~panner1y = SynthDef(\randomPanY1, { Out.kr(~panBus1y, LFNoise1.kr(0.1).range(0,1))}).play; + ~panner2y = SynthDef(\randomPanY2, { Out.kr(~panBus2y, LFNoise1.kr(2).range(0,1))}).play; + ~panner3y = SynthDef(\randomPanY3, { Out.kr(~panBus3y, LFNoise1.kr(1).range(0,1))}).play; + ~panner4y = SynthDef(\randomPanY4, { Out.kr(~panBus4y, LFNoise1.kr(1).range(0,1))}).play; + ~panner2x = SynthDef(\randomPanX2, { Out.kr(~panBus2x, LFPulse.kr(0.3).range(0,1))}).play; + ~panner3x = SynthDef(\randomPanX3, { Out.kr(~panBus3x, LFPulse.kr(0.44).range(0,1))}).play; + ~panner4x = SynthDef(\randomPanX4, { Out.kr(~panBus4x, LFPulse.kr(0.22).range(0,1))}).play; + + + "--- end of the TIMELINE ---".postln + }; + + timeLine.play; + + + }); -// octoPan busses ////////////// -( -// free busses and panners when re-trying things? -~octoBus1.free; ~octoBus2.free; ~octoBus3.free; ~octoBus4.free; -~panBus1x.free; ~panBus1y.free; ~panBus1r.free; -~panBus2x.free; ~panBus2y.free; ~panBus2r.free; -~panBus3x.free; ~panBus3y.free; ~panBus3r.free; -~panBus4x.free; ~panBus4y.free; ~panBus4r.free; -~revBus.free; -// octoBus1 + panners and control busses: -~octoBus1 = Bus.audio(s,1); -~panBus1x = Bus.control(s,1); -~panBus1y = Bus.control(s,1); -~panBus1r = Bus.control(s,1); -~panBus1y.value = 0.14; // set a fixed value to a bus -~panBus1x.value = 0; -~panBus1r.value = 1; - -// octoBus2 + panners and control busses: -~octoBus2 = Bus.audio(s,1); -~panBus2x = Bus.control(s,1); -~panBus2y = Bus.control(s,1); -~panBus2r = Bus.control(s,1); -~panBus2y.value = 0.14; // set a fixed value to a bus -~panBus2x.value = 0; -~panBus2r.value = 2; - -// octoBus3 + panners and control busses: -~octoBus3 = Bus.audio(s,1); -~panBus3x = Bus.control(s,1); -~panBus3y = Bus.control(s,1); -~panBus3r = Bus.control(s,1); -~panBus3y.value = 0.14; // set a fixed value to a bus -~panBus3x.value = 0; -~panBus3r.value = 2; - -// octoBus4 + panners and control busses: -~octoBus4 = Bus.audio(s,1); -~panBus4x = Bus.control(s,1); -~panBus4y = Bus.control(s,1); -~panBus4r = Bus.control(s,1); -~panBus4y.value = 0.14; // set a fixed value to a bus -~panBus4x.value = 0; -~panBus4r.value = 2; - -// 8chan reverb bus -~revBus = Bus.audio(s,8); -">>> loaded all busses".postln; -); - - -r = Recorder(s); -r.recHeaderFormat = "wav"; -r.record(numChannels:8); -r.stopRecording; - - - - - -( /////////////////////////////////////////////////////////////////////////////// -var timeLine; -"\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>".postln; -"--- O C T O P O D A -----".postln; -">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n".postln; - -"--- loading octoPanners ...".postln; -~octoPanner1 = Synth("octoPanner", [\inBus, ~octoBus1, \outBus, ~revBus], addAction: \addToTail); -~octoPanner1.map(\x, ~panBus1x); -~octoPanner1.map(\y, ~panBus1y); -~octoPanner1.map(\radius, ~panBus1r); - -~octoPanner2 = Synth("octoPanner", [\inBus, ~octoBus2, \outBus, ~revBus], addAction: \addToTail); -~octoPanner2.map(\x, ~panBus2x); -~octoPanner2.map(\y, ~panBus2y); -~octoPanner2.map(\radius, ~panBus2r); - -~octoPanner3 = Synth("octoPanner", [\inBus, ~octoBus3, \outBus, ~revBus], addAction: \addToTail); -~octoPanner3.map(\x, ~panBus3x); -~octoPanner3.map(\y, ~panBus3y); -~octoPanner3.map(\radius, ~panBus3r); - -~octoPanner4 = Synth("octoPanner", [\inBus, ~octoBus4, \outBus, ~revBus], addAction: \addToTail); -~octoPanner4.map(\x, ~panBus4x); -~octoPanner4.map(\y, ~panBus4y); -~octoPanner4.map(\radius, ~panBus4r); - -// 4 x stereo reverbs are fixed to outputs ([0,1][2,3][4,5][6,7]) not panners! -~reverb = Synth("reverBusser", [\inBus, ~revBus, \outBus, 0], addAction: \addToTail); - - -// some default oscilations of pan and reverb -~panner1y.free; ~panner2y.free; ~panner3y.free; ~panner4y.free; -~panner1x.free; ~panner2x.free; ~panner3x.free; ~panner4x.free; - - - -~reverb1wetBus.free; // ~wetOsc.free; // clean up -~reverb2wetBus.free; // ~wetOsc.free; // clean up -~reverb3wetBus.free; // ~wetOsc.free; // clean up -~reverb4wetBus.free; // ~wetOsc.free; // clean up - -~reverb1wetBus = Bus.control(s, 1); // create control bus -~reverb.map(\verb1wet, ~reverb1wetBus); // map an argument to control bus -~reverb2wetBus = Bus.control(s, 1); // create control bus -~reverb.map(\verb2wet, ~reverb2wetBus); // map an argument to control bus -~reverb3wetBus = Bus.control(s, 1); // create control bus -~reverb.map(\verb3wet, ~reverb3wetBus); // map an argument to control bus -~reverb4wetBus = Bus.control(s, 1); // create control bus -~reverb.map(\verb4wet, ~reverb4wetBus); // map an argument to control bus - -~wetOsc1.free; ~wetOsc2.free; ~wetOsc3.free; ~wetOsc4.free; -~wetOsc1 = SynthDef(\randomVerb1, {Out.kr(~reverb1wetBus, LFNoise2.kr(1).range(0, 0.8)) }).play; -~wetOsc2 = SynthDef(\randomVerb2, {Out.kr(~reverb2wetBus, LFNoise2.kr(1).range(0, 0.8)) }).play; -~wetOsc3 = SynthDef(\randomVerb3, {Out.kr(~reverb3wetBus, LFNoise2.kr(1).range(0, 0.8)) }).play; -~wetOsc4 = SynthDef(\randomVerb4, {Out.kr(~reverb4wetBus, LFNoise2.kr(1).range(0, 0.8)) }).play; - -// ~wetOsc.free; -// ~reverb.set(\verb1wet, 0); -// ~reverb.set(\verb1wet, 1); -// ~reverb.set(\verb2wet, 1); -//); - -//( -//var timeLine; - -timeLine = Routine { - "--- starting main routine ...".postln; - -SynthDef(\tw, { - //Pan2.ar(FreeVerb.ar( - arg outBus; - var snd, rev, z, y; - snd = 0.5 * TermanWang.ar( - input: 2.0 + SinOsc.ar( - LFNoise1.kr(LFNoise0.kr(LFNoise0.kr(1).range(10,0.1)).range(10,0.1)).exprange(10,10000), 0, - LFNoise1.kr(LFNoise0.kr(LFNoise0.kr(1).range(10,0.1)).range(10,0.1)).exprange(0.1,100.0)), - reset: Impulse.kr(LFNoise1.kr(0.1).exprange(1,10000, 'exponential')), - ratex: 0.2, - ratey:0.2, - alpha:2.0, - beta:2.0, - eta:1.0, - initx:LFNoise1.kr(LFNoise0.kr(LFNoise0.kr(1).range(10,0.1)).range(10,0.1)).range(0.4,1.2), - inity:LFNoise1.kr(LFNoise0.kr(LFNoise0.kr(1).range(10,0.1)).range(10,0.1)).range(2.0,4.0) - ); - snd = LeakDC.ar(snd); - snd = snd * LFPulse.kr(LFNoise0.kr(0.4).range(0.01,0.1), width:LFNoise0.kr(0.5).exprange(0.01,0.1)); - - // reverb predelay time : - z = DelayN.ar(snd*100, 0.048); - // 7 length modulated comb delays in parallel : - y = Mix.ar(Array.fill(7,{ CombL.ar(z, 0.1, LFNoise1.kr(0.01, 0.02, 0.022), 15) })); - // two parallel chains of 4 allpass delays (8 total) : - 4.do({ y = AllpassN.ar(y, 0.020, [0.050.rand, 0.050.rand], 1) }); - - rev = Limiter.ar(y, LFNoise1.kr(0.1).exprange(0.01, 0.3)-0); - snd = snd * LFNoise1.kr(0.05).range(0.1,1); - snd = snd + rev; - - snd = LeakDC.ar(snd); - snd = HPF.ar(snd, 300); - Out.ar(outBus, snd); -}).add; - - -1.wait; - -~tw.free; -~tw = Synth(\tw, [\outBus, ~octoBus1]); -~panBus1y.value = 0; // set a fixed value to a bus -~panBus1x.value = 0; -~panBus1r.value = 0.1; - -1.wait; - -~tw2.free; -~tw2 = Synth(\tw, [\outBus, ~octoBus2]); -~panBus2y.value = 0.28; // set a fixed value to a bus -~panBus2x.value = 0; -~panBus2r.value = 0.1; - -1.wait; - -~tw3.free; -~tw3 = Synth(\tw, [\outBus, ~octoBus3]); -~panBus2y.value = 1; // set a fixed value to a bus -~panBus2x.value = 0; -~panBus2r.value = 0.001; - -1.wait; - -~tw4.free; -~tw4 = Synth(\tw, [\outBus, ~octoBus4]); -~panBus2y.value = 1; // set a fixed value to a bus -~panBus2x.value = 0; -~panBus2r.value = 0.001; - - - - - "--- end of the TIMELINE ---".postln -}; - -timeLine.play; -); - - - - -// testing stuff! /////////////////////////////////////////////////////////////////////////////////////// - - - - - -// do stuff with panning: - "--- starting panner1y sin Oscilation ...".postln; - ~panner1y = SynthDef(\sinPanY1, { Out.kr(~panBus1y, SinOsc.kr(0.01).range(0.3,0.5))}).play; - ~panBus1x.value = 1; - ~panBus1r.value = 1; - - "--- return to static duration, abruptly...".postln; - ~panner1y.free; ~panner2y.free; - ~panBus1y.value = 0.1; - ~soil1.set(\dur, 0.0001); - wait(1); - ~soil2.set(\dur, 0.0001); - ~panBus2y.value = 0.9; - - ~panBus1y.value = 0; // set a fixed value to a bus - ~panBus1x.value = 0; - ~panBus1r.value = 0.1; - -// or -~paner2y.free; ~panner3y.free; ~panner4y.free; ~panner2x.free; ~panner3x.free; ~panner4x.free; - - ~panner1y = SynthDef(\randomPanY1, { Out.kr(~panBus1y, LFNoise1.kr(0.1).range(0,1))}).play; - -~panner2y = SynthDef(\randomPanY2, { Out.kr(~panBus2y, LFNoise1.kr(2).range(0,1))}).play; - ~panner3y = SynthDef(\randomPanY3, { Out.kr(~panBus3y, LFNoise1.kr(1).range(0,1))}).play; - ~panner4y = SynthDef(\randomPanY4, { Out.kr(~panBus4y, LFNoise1.kr(1).range(0,1))}).play; - ~panner2x = SynthDef(\randomPanX2, { Out.kr(~panBus2x, LFPulse.kr(0.3).range(0,1))}).play; - ~panner3x = SynthDef(\randomPanX3, { Out.kr(~panBus3x, LFPulse.kr(0.44).range(0,1))}).play; - ~panner4x = SynthDef(\randomPanX4, { Out.kr(~panBus4x, LFPulse.kr(0.22).range(0,1))}).play; - -// ... etc ///////////////////////////////////////////////////////////////////////////////// - - - - -Fhn2DC -Fhn2DL -Fhn2DN -FitzHughNagumo.ar -TermanWang.ar - -{Out.ar(0,Pan2.ar(0.5*TermanWang.ar(2.0,Impulse.kr(MouseX.kr(1,1000)),0.1,0.01,1.0,1.0,1.0,MouseX.kr(0.4,1.2), MouseY.kr(2.0,4.0)),0.0))}.play; - -{Out.ar(0,Pan2.ar(0.5*TermanWang.ar(LFNoise1.ar(LFNoise0.kr(0.5,500,500),1.0,3.0),Impulse.kr(MouseX.kr(1,10000, 'exponential')),0.01,0.01,1.0,1.0,1.0,MouseX.kr(0.4,1.2), MouseY.kr(2.0,4.0)),0.0))}.play; - -{Out.ar(0,Pan2.ar(FreeVerb.ar(0.5*TermanWang.ar(2.0+ SinOsc.ar(MouseX.kr(10,10000,'exponential'),0,MouseY.kr(0.1,100.0,'exponential')),Impulse.kr(MouseX.kr(1,10000, 'exponential')),0.01,0.01,1.0,1.0,1.0,MouseX.kr(0.4,1.2), MouseY.kr(2.0,4.0)),0.5)))}.play; - - -Ndef(\tw).clear -Ndef(\tw).play - - - -Ndef(\dneu).play; -Ndef(\dneu).stop; -( -SynthDef(\dneumod, { - arg outBus; - var dt, module, m, snd; - dt = 0.1; - module = Dneuromodule(2, - theta: [LFNoise0.kr(0.2).range(-2, 2), LFNoise0.kr(0.3).range(-2, 2)], - x: [0.1, 0.3], - weights: [-3, 2, -2, 0] - ); - m = Duty.ar(dt, 0, module).lag3(dt/40); - snd = SinOsc.ar(m * 1400 + 1600) * 0.8; - snd = HPF.ar(snd, 200); - snd = snd * LFPulse.kr(LFNoise0.kr(0.4).range(0.1,0.8), width:LFNoise0.kr(0.4).exprange(0.1,1)); - snd = Limiter.ar(snd, 0.8); - Out.ar(outBus, snd); -}).add; -) - - - - -( -SynthDef(\fhnTrigRing, { - arg out=0, freq=1000, min=1, max=10, decay=0.1, ffreq=1000, amp=1, gate=1, fadeTime=1; - 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; - Out.ar(out,snd) -}).add; -); - - -~fhnTrig2 = Synth(\fhnTrigRing, [\out, ~octoBus1, \freq, 2110, \amp, 0.5, \min, 2, \max, 20, \amp, 0.5, \fadeTime, 10]); -~fhnTrig2.free; - - - - - -~hpfHenon = Synth(\henonLsynth1, [\out, ~octoBus3, \hpfreqmin, 100]); -~hpfHenon = Synth(\henonLsynth1, [\out, ~octoBus1, \hpfreqmin, 100]); -~hpfHenon.set(\hpfreqmin, 1000) -~hpfHenon.free; - -~bassLatoo = Synth(\latooThroBass, [\out, ~octoBus1, \amp, 0.2]); -~bassLatoo.free; - -~henonSquare = Synth(\henonSquare, [\out, ~octoBus1, \amp, 0.2]); -~henonSquare.set(\gate,0); - -// recording - - - -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file