1
0
Fork 0

final sonoretum version

main
Luka Prinčič 2020-12-18 23:03:23 +01:00
parent b41cd6bf85
commit 92c1fd71f2
2 changed files with 244 additions and 366 deletions

View File

@ -1,16 +1,16 @@
( (
// a function to position sound in space // a function to position sound in space
~octoPanOut = { ~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, var s1_x=0, s1_y=0, s1_amp,
s2_x=0, s2_y=360, s2_amp, s2_x=540, s2_y=0, s2_amp,
s3_x=0, s3_y=720, s3_amp, s3_x=0, s3_y=350, s3_amp,
s4_x=0, s4_y=1080, s4_amp, s4_x=540, s4_y=350, s4_amp,
s5_x=650, s5_y=1260, s5_amp, s5_x=0, s5_y=700, s5_amp,
s6_x=650, s6_y=900, s6_amp, s6_x=540, s6_y=700, s6_amp,
s7_x=650, s7_y=540, s7_amp, s7_x=0, s7_y=1050, s7_amp,
s8_x=650, s8_y=180, s8_amp ; s8_x=540, s8_y=1050, s8_amp ;
var factor = (1 / (5000000 * fact)); // exponential curve of amplification calculated from distance? log???? 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}; //var distance = {|x1,y1,x2,y2| ((x2-x1).squared + (y2-y1).squared).sqrt};
@ -21,7 +21,7 @@
in_x = in_x * 650; in_x = in_x * 650;
//in_y = (in_y + 1) * 0.5 * 1260; //in_y = (in_y + 1) * 0.5 * 1260;
in_y = in_y * 1260; in_y = in_y * 1260;
s1_amp = amp.value(in_x,in_y,s1_x,s1_y); s1_amp = amp.value(in_x,in_y,s1_x,s1_y);
s2_amp = amp.value(in_x,in_y,s2_x,s2_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); 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); 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] [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); var snd = In.ar(inBus,1);
snd = ~octoPanOut.value(snd, x, y, radius); snd = ~octoPanOut.value(snd, x, y, radius);
Out.ar(outBus, snd); Out.ar(outBus, snd);
}).add; }).add;
); );
@ -60,12 +60,12 @@ SynthDef("reverBusser", {
snd.put(5, Limiter.ar(in:snd.at(5), level:-6.dbamp, dur:0.04)); 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(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)); snd.put(7, Limiter.ar(in:snd.at(7), level:-6.dbamp, dur:0.04));
verb1 = JPverb.ar(snd.at([0,1]) * verb1wet); verb1 = JPverb.ar(snd.at([0,1]) * verb1wet);
verb2 = JPverb.ar(snd.at([2,3]) * verb2wet); verb2 = JPverb.ar(snd.at([2,3]) * verb2wet);
verb3 = JPverb.ar(snd.at([4,5]) * verb3wet); verb3 = JPverb.ar(snd.at([4,5]) * verb3wet);
verb4 = JPverb.ar(snd.at([6,7]) * verb4wet); verb4 = JPverb.ar(snd.at([6,7]) * verb4wet);
snd.put(0, snd.at(0) + verb1.at(0) ); snd.put(0, snd.at(0) + verb1.at(0) );
snd.put(1, snd.at(1) + verb1.at(1) ); snd.put(1, snd.at(1) + verb1.at(1) );
snd.put(2, snd.at(2) + verb2.at(0) ); 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(5, snd.at(5) + verb3.at(1) );
snd.put(6, snd.at(6) + verb4.at(0) ); snd.put(6, snd.at(6) + verb4.at(0) );
snd.put(7, snd.at(7) + verb4.at(1) ); snd.put(7, snd.at(7) + verb4.at(1) );
Out.ar(outBus, snd); Out.ar(outBus, snd);
}).add; }).add;
); );
@ -124,7 +124,7 @@ OctoPan : MultiOutUGen {
}; };
^in*amps; ^in*amps;
} }
} }
*/ */

View File

@ -1,381 +1,259 @@
(/* (/*
Copyright (c) 2020 Luka Prinčič, All rights reserved. Copyright (c) 2020 Luka Prinčič, All rights reserved.
This program is free software distributed under This program is free software distributed under
GNU General Public Licence. See COPYING for more info. GNU General Public Licence. See COPYING for more info.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// TECHNOKINSHIP - OCTOPODA //////////////////////////////////// // TECHNOKINSHIP - OCTOPODA ////////////////////////////////////
██████╗ ██████╗████████╗ ██████╗ ██████╗ ██████╗ ██████╗ █████╗ ██████╗ ██████╗████████╗ ██████╗ ██████╗ ██████╗ ██████╗ █████╗
██╔═══██╗██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗██╔═══██╗██╔══██╗██╔══██╗ ██╔═══██╗██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗██╔═══██╗██╔══██╗██╔══██╗
██║ ██║██║ ██║ ██║ ██║██████╔╝██║ ██║██║ ██║███████║ ██║ ██║██║ ██║ ██║ ██║██████╔╝██║ ██║██║ ██║███████║
██║ ██║██║ ██║ ██║ ██║██╔═══╝ ██║ ██║██║ ██║██╔══██║ ██║ ██║██║ ██║ ██║ ██║██╔═══╝ ██║ ██║██║ ██║██╔══██║
╚██████╔╝╚██████╗ ██║ ╚██████╔╝██║ ╚██████╔╝██████╔╝██║ ██║ ╚██████╔╝╚██████╗ ██║ ╚██████╔╝██║ ╚██████╔╝██████╔╝██║ ██║
╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝
*/ SONORETUM VERSION FOR 15.DEC 2020 ///////////////////////////////
*/
#[\internal, \local].do { |s| #[\internal, \local].do { |s|
s = Server.perform(s); s = Server.perform(s);
s.options.numInputBusChannels = 2; s.options.numInputBusChannels = 2;
s.options.numOutputBusChannels = 8; s.options.numOutputBusChannels = 8;
s.options.memSize = 2097152; // 2 gigs s.options.memSize = 2097152; // 2 gigs
}; };
Server.default.waitForBoot { Server.default.waitForBoot {
var timeLine;
// library path // library path
var libPath = PathName(thisProcess.nowExecutingPath.dirname +/+ "lib"); var libPath = PathName(thisProcess.nowExecutingPath.dirname +/+ "lib");
// for each files in that lib folder // for each files in that lib folder
libPath.filesDo({|afile| libPath.filesDo({|afile|
// tell me what you're executing: // tell me what you're executing:
postln(" ." + afile.fileName); postln(" ." + afile.fileName);
// execute it: // 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
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -