Pbindでどうやってgroupを指定するの?という疑問がありましたので、サンプルコードを貼っておきます。
//バスとグループを使ってエフェクトをかけるサンプルです
//ノードの構成を表示する
s.plotTree;
// 1.busを定義
~effectBus = Bus.audio(s, 2);
~masterBus = Bus.audio(s, 2);
// 2.groupsを定義
(
~sources = Group.new;
~effects = Group.new(~sources, \addAfter);
~master = Group.new(~effects, \addAfter);
);
~rip = Synth(\ripfilter45, target: ~sources);
~test = Synth(\nl_chord, [\target, ~effects]).play
// 3. 音をだす
(
// 必要あればSynthDef
SynthDef("ripfilter45", { arg delay = 0.2, decay = 4, ripfreq =10000;
var in;
in = In.ar(~effectBus, 2);
Out.ar(~masterBus, RLPF.ar(in, Lag.kr(ripfreq, 4),0.2), In.ar*0.3);
}).add;
SynthDef("simpleReverb", { arg delay = 0.2, decay = 4, ripfreq =10000;
var in;
in = In.ar(~effectBus, 2);
Out.ar(~masterBus, FreeVerb.ar(in,mix: 0.7, room: 0.9));
}).add;
SynthDef("nl_chord", {arg freq, amp=1, gate=1, pan=0, out;
Out.ar(effectBus,
Pan2.ar(Saw.ar([freq, freq*2]) * EnvGen.ar((Env.adsr(0.001,0.1)),gate, doneAction:2) * amp, pan))
}).add;
// Pbindのgroup指定は\groupで
Pbind(
\instrument, \nl_chord,
\out, ~effectBus,
\group, ~sources,
\dur, 0.25,
\degree, [0,3,5],
\legato,0.3,
\tempo,0.75,
\pan, Pseq([0.5,-0.5],inf)
).play;
// Synthでは2つ目のアーギュメントがtarget。
//r = Synth(\ripfilter45, ~effects);
// キーワード式で書くなら、
~rip = Synth(\ripfilter45, target: ~effects);
~rev = Synth(\simpleReverb, target: ~effects);
// 関数.playのときは1つめのアーギュメントがtarget
{Out.ar(0, In.ar(~masterBus, 2) * MouseY.kr(0, 1))}.play(target: ~master);
)
// エフェクトのパラメータを変更
~rip.set(\ripfreq, 1000);