can someone help me at fixing this?
(
SynthDef(\LayeredTexture, {
arg out=0, gate=1, fadeTime=180;
var osc1, osc2, osc3, fx1, fx2, fx3, env;
var lfo1, lfo2, lfo3, globalMod;
var randFreqs1, randFreqs2, randFreqs3;
var panPositions1, panPositions2, panPositions3;
var densityEnv, spreadEnv, modEnv;
var sig;
// Control envelopes for evolving parameters
densityEnv = EnvGen.kr(Env([0.1, 1, 0.3], [fadeTime*0.3, fadeTime*0.7], \sin));
spreadEnv = EnvGen.kr(Env([0.5, 2, 1.5], [fadeTime*0.5, fadeTime*0.5], \exp));
modEnv = EnvGen.kr(Env([0.1, 0.8, 0.4], [fadeTime*0.4, fadeTime*0.6], \sin));
// Global modulation sources
globalMod = LFNoise1.kr(0.05).range(0.8, 1.2);
lfo1 = SinOsc.kr(0.03).range(0.7, 1.3);
lfo2 = SinOsc.kr(0.07, 0.5pi).range(0.5, 1.5);
lfo3 = LFNoise2.kr(0.1).range(0.8, 1.2);
// Generate random frequencies for each oscillator
randFreqs1 = Array.fill(48, { exprand(20, 5000) });
randFreqs2 = Array.fill(48, { exprand(20, 5000) });
randFreqs3 = Array.fill(48, { exprand(20, 5000) });
// Generate random pan positions for spatialization
panPositions1 = Array.fill(48, { rrand(-1.0, 1.0) });
panPositions2 = Array.fill(48, { rrand(-1.0, 1.0) });
panPositions3 = Array.fill(48, { rrand(-1.0, 1.0) });
// Oscillator layers with individual processing
osc1 = Mix.fill(48, {|i|
var baseFreq = randFreqs1[i] * globalMod * lfo1;
var tmFreq = XLine.kr(rrand(0.125, 8), rrand(0.125, 16), fadeTime * rrand(0.8, 1.2));
var modAmp = SinOsc.kr(rrand(0.01, 0.1)) * modEnv;
var sig = SinOsc.ar(baseFreq * tmFreq, 0, modAmp * densityEnv);
var pan = panPositions1[i] * spreadEnv;
Pan2.ar(sig, pan);
});
osc2 = Mix.fill(48, {|i|
var baseFreq = randFreqs2[i] * globalMod * lfo2;
var tmFreq = XLine.kr(rrand(0.125, 8), rrand(0.25, 12), fadeTime * rrand(0.7, 1.3));
var modAmp = LFTri.kr(rrand(0.005, 0.2)) * modEnv;
var pulseWidth = LFNoise1.kr(0.1).range(0.1, 0.9);
var sig = Pulse.ar(baseFreq * tmFreq, pulseWidth, modAmp * densityEnv);
var pan = panPositions2[i] * LFNoise1.kr(0.05).range(0.5, 1.5) * spreadEnv;
Pan2.ar(sig, pan);
});
osc3 = Mix.fill(48, {|i|
var baseFreq = randFreqs3[i] * globalMod * lfo3;
var tmFreq = XLine.kr(rrand(0.25, 4), rrand(0.5, 8), fadeTime * rrand(0.9, 1.1));
var modAmp = LFNoise2.kr(rrand(0.02, 0.15)) * modEnv;
var sig = Saw.ar(baseFreq * tmFreq, modAmp * densityEnv);
var pan = panPositions3[i] * LFNoise1.kr(0.03).range(0.7, 1.3) * spreadEnv;
Pan2.ar(sig, pan);
});
// Individual effects processing for each layer
fx1 = osc1.collect {|ch|
var time = LFNoise1.kr(0.02).range(0.1, 0.3);
var decay = LFNoise1.kr(0.01).range(1.5, 3.0);
FreeVerb.ar(
CombC.ar(ch, 0.5, time, decay),
mix: LFNoise1.kr(0.05).range(0.2, 0.4),
room: 0.7,
damp: 0.4
)
};
fx2 = osc2.collect {|ch|
var time = LFNoise1.kr(0.03).range(0.15, 0.35);
var decay = LFNoise1.kr(0.02).range(1.0, 2.5);
FreeVerb.ar(
AllpassC.ar(ch, 0.4, time, decay * 0.5),
mix: 0.5,
room: 0.9,
damp: 0.2
)
};
fx3 = osc3.collect {|ch|
var time = LFNoise1.kr(0.04).range(0.05, 0.25);
var decay = LFNoise1.kr(0.03).range(0.5, 2.0);
FreeVerb.ar(
GVerb.ar(ch, roomsize: 10, revtime: decay, damping: 0.3),
mix: 0.3,
room: 0.5,
damp: 0.6
)
};
// Master effects chain
sig = Mix([fx1, fx2, fx3]) * 0.5;
sig = LPF.ar(sig, LinExp.kr(LFNoise1.kr(0.1), -1, 1, 200, 8000));
sig = HPF.ar(sig, 30);
sig = Balance2.ar(sig[0], sig[1], LFNoise1.kr(0.1));
sig = sig * EnvGen.kr(Env.asr(10, 1, 10), gate, doneAction: 2);
sig = Limiter.ar(sig, 0.95);
Out.ar(out, sig * 0.25);
}).add;
)
// Start the synth with control over duration
x = Synth(\LayeredTexture, [\fadeTime, 240]);
// Fade out after 5 minutes
SystemClock.sched(300, { x.set(\gate, 0); });