( Ndef(\algo22bass, { var freq = \freq.kr(55); var amp = \amp.kr(0.5); var gate = \gate.kr(1); var pan = \pan.kr(0); var lfo, fb, op1, op2, op3, op4, op5, op6; var env1, env2, env3, env4, env5, env6; var sig; lfo = LFSaw.kr(8).range(0.1, 1.5); // Feedback loop fb = LocalIn.ar(1); // Operator 6 env6 = EnvGen.kr(Env.new([0, 1, 1, 1, 0], [0.01, 0.1, 0.1, 0.1], \lin, 3), gate); op6 = SinOsc.ar((freq * 8) + (fb * 7), 0, env6 * lfo * 0.6); LocalOut.ar(op6); // Operator 5 env5 = EnvGen.kr(Env.new([0, 1, 1, 1, 0], [0.01, 0.2, 0.2, 0.2], \lin, 3), gate); op5 = SinOsc.ar((freq * 0.5) + (op6 * 200), 0, env5); // Operator 4 env4 = EnvGen.kr(Env.new([0, 1, 1, 1, 0], [0.01, 0.3, 0.3, 0.3], \lin, 3), gate); op4 = SinOsc.ar((freq * 1.0) + (op5 * 200), 0, env4); // Operator 1 env1 = EnvGen.kr(Env.new([\op1_env1_atk.kr(0);, 1, 1, 1, 0], [0.01, 0.2, 0.4, 0.2], \lin, 3), gate, doneAction:2); op1 = SinOsc.ar(freq * 3.0, 0, env1 * 0.6); // Operator 2 env2 = EnvGen.kr(Env.new([0, 1, 1, 1, 0], [0.01, 0.2, 0.2, 0.2], \lin, 3), gate); op2 = SinOsc.ar(freq * 5.91, 0, env2 * 0.4); // Operator 3 env3 = EnvGen.kr(Env.new([0, 1, 1, 1, 0], [0.01, 0.3, 0.2, 0.2], \lin, 3), gate); op3 = SinOsc.ar(freq * 2.0, 0, env3 * 0.5); sig = (op1 + op2 + op3 + op4) * amp; sig = RLPF.ar(sig, 1200, 0.4); sig = sig.tanh * 1.5; sig = CombL.ar(sig, 0.3, 0.15, 1.5, mul: 0.7); Pan2.ar(sig, pan) }); ) ( Ndef(\algo22bass).addSpec( \freq, \amp, \op1_env1_atk, [0.0, 0.01], ).edit; )