0

外部ソースからのセミランダム入力に基づいて正弦波を滑らかにする (高周波を除去する) ために、バスを使用して振幅をシンセにマッピングしようとしていますが、このコードを実行すると音が出ません。

s.boot;
(
SynthDef( \cello, {|rate = 440, amp = 0.2|
    var signal;
    signal = SinOsc.ar(rate, 0, amp);
    Out.ar([0,1], signal)}
).add;)

h = Synth( \cello, [ \rate, 440, \amp, 0 ] );

c = Bus.control(s, 2);

c.scope;



Task({
 var counter, pyAmp, newAmp, oldAmp = 0;

 counter = 0;

 {counter < 1}.while ({

  pyAmp = 3.0.rand;
  (pyAmp).postln;

  d = { XLine.ar(oldAmp, pyAmp, 0.1) }.play(outbus: c);
        ("and").postln;
        (oldAmp).postln;
  oldAmp = pyAmp;

  h.map(\amp, d);
  0.1.wait;

 })
}).play;


)
4

1 に答える 1

2

少なくともいくつかの問題があります。

  1. 最初の XLine シンセは、0 から始まるXLineを実行しようとします。絶対零度は指数領域の問題であり、不可能です。代わりに、小さいが正の値から始めてください。
  2. あなたはアンプを試して設定するために小さな XLine シンセを作成していますが、これらのシンセをリリースすることはありません。それらの多くが構築されています。そのアンプが最終的にどのような価値をもたらすか誰が知っていますか? シンセ自体を解放するには、 doneActions を使用する必要があります。

第三に (しかし有害ではありません) これらの XLine シンセをオーディオ レートで実行しても意味がありません。XLine.ar ではなく XLine.kr を使用することもできます。

于 2015-06-24T15:24:48.507 に答える