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

@ -2,15 +2,15 @@
// 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};

View File

@ -1,19 +1,20 @@
(/* (/*
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;
@ -24,6 +25,8 @@
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");
@ -35,140 +38,127 @@ Server.default.waitForBoot {
// execute it: // execute it:
this.executeFile(afile.fullPath); this.executeFile(afile.fullPath);
}); });
});
s.meter;
s.plotTree;
s.scope(8);
// octoPan busses ////////////// timeLine = Routine {
(
// 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; "--- starting main routine ...".postln;
SynthDef(\tw, { 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( //Pan2.ar(FreeVerb.ar(
arg outBus; arg outBus;
var snd, rev, z, y; var snd, rev, z, y;
@ -200,175 +190,63 @@ SynthDef(\tw, {
snd = snd + rev; snd = snd + rev;
snd = LeakDC.ar(snd); snd = LeakDC.ar(snd);
snd = HPF.ar(snd, 300); //snd = HPF.ar(snd, 300);
Out.ar(outBus, snd); Out.ar(outBus, snd);
}).add; }).add;
1.wait; 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;
//~tw.free;
~tw = Synth(\tw, [\outBus, ~octoBus1]);
~panBus1y.value = 0; // set a fixed value to a bus ~panBus1y.value = 0; // set a fixed value to a bus
~panBus1x.value = 0; ~panBus1x.value = 0;
~panBus1r.value = 0.1; ~panBus1r.value = 0.1;
// or 1.wait;
~paner2y.free; ~panner3y.free; ~panner4y.free; ~panner2x.free; ~panner3x.free; ~panner4x.free;
//~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; ~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;
~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; ~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; ~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; ~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; ~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; ~panner4x = SynthDef(\randomPanX4, { Out.kr(~panBus4x, LFPulse.kr(0.22).range(0,1))}).play;
// ... etc /////////////////////////////////////////////////////////////////////////////////
"--- end of the TIMELINE ---".postln
};
timeLine.play;
});
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