BusやGroupをPbindと使う場合

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);




「いいね!」 1