SynthDefs by combining modular parts.
Here is a class that makes this easier and more expressive. [jrh]
PatchSynthDef.tar.gz
////// this doesn't work reliably yet //////
it can be used like this:
s.boot;
(
Instr(\sine, { arg freq=440, amp=0.1; SinOsc.ar(freq) * amp });
Instr(\panner, { arg input, pan=0; Pan2.ar(input.asArray.sum, pan) });
)
PatchSynthDef("test", [\panner, [\sine, 700], 0]).store;
x = Synth("test");
x.set(\out, 4);
x.set(\out, 0);
x.release;
PatchSynthDef("test", { arg freq=800;
[\panner, [\sine, freq * [1, 1.2], 0.1], 0]
}).store;
x = Synth("test");
x.set(\freq, 500);
Pbind(
\instrument, \test,
\degree, Prand([0, 3, 5], inf),
\dur, 0.3
).play;