CCIn
次のように、クラスを使用する単純な SynthDef があります。
(
SynthDef(\lfo_sin, {|bus, amp, myArg|
var m = CCIn.new;
var v = [300, 700, \exp].asSpec;
var sig = SinOsc.ar(m.kr(0, myArg, v), mul:amp);
Out.ar(bus, sig);
}).add;
)
そのようにインスタンス化するとy = Synth(\lfo_sin, [\bus, 0, \amp, 1, \myArg, 71]);
、MIDI コントローラーの MIDI CC と一致するCCIn.kr
ようになりますが、必要な方法を使用できません。
ただし、SynthDef を次のように定義するときに MIDI CC を直接入力すると、次のようになります。
(
SynthDef(\lfo_sin2, {|bus, amp|
var m = CCIn.new;
var v = [300, 700, \exp].asSpec;
var sig = SinOsc.ar(m.kr(0, 71, v), mul:amp);
Out.ar(bus, sig);
}).add;
)
すべてが正常に動作し、MIDI コントローラーを使用して周波数を制御できます。
この動作はなぜ発生し、シンセの初期化時または後で引数を設定するときに MIDI CC を渡すことができるようにコードを変更するにはどうすればよいですか?