final sonoretum version
							parent
							
								
									b41cd6bf85
								
							
						
					
					
						commit
						92c1fd71f2
					
				| 
						 | 
					@ -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;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
	
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
							
								
								
									
										578
									
								
								scd/octopoda.scd
								
								
								
								
							
							
						
						
									
										578
									
								
								scd/octopoda.scd
								
								
								
								
							| 
						 | 
					@ -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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 | 
					 | 
				
			||||||
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 | 
					 | 
				
			||||||
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 | 
					 | 
				
			||||||
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 | 
					 | 
				
			||||||
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 | 
					 | 
				
			||||||
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 | 
					 | 
				
			||||||
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 | 
					//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 | 
				
			||||||
		Loading…
	
		Reference in New Issue