SuperCollider中的映射

时间:2015-06-23 15:48:14

标签: supercollider

我正在尝试使用总线将振幅映射到合成器,以便根据来自外部源的半随机输入平滑正弦波(移除高频),但是当我运行此代码时,没有声音。

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;


)

1 个答案:

答案 0 :(得分:2)

你至少有几个问题。

  1. 你的第一个XLine合成器试图从0开始 XLine 。绝对零是指数地的一个问题,这是不可能的。从一个微小但正面的价值开始。
  2. 您正在创建小型XLine合成器来尝试设置放大器,但您永远不会发布这些合成器。很多人正在积累。谁知道放大器到底有什么价值呢? 你应该use doneActions 让合成器自由。
  3. 第三(但没有害处)没有必要以音频速率运行这些XLine合成器,你也可以使用XLine.kr而不是XLine.ar