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.kr 而不是 XLine.ar

于 2015-06-24T15:24:48.507 回答