为什么这个合成结构是沉默的?

时间:2013-08-06 20:43:52

标签: supercollider

我正在尝试通过总线将合成器路由到另一个合成器(以提供效果)。这是我的代码:

b = Bus.audio(numChannels: 2);

SynthDef(
    "mySynth",
    {
        |freq, amp, gate = 1|
        var audio = Pulse.ar(freq, 0.5);
        var env = EnvGen.kr(Env.perc, doneAction:2);
        audio = Pan2.ar(audio, MouseX.kr(-1, 1));
        Out.ar(b, audio * env);
    }
).add;

SynthDef(
    "effects",
    {
        var audio = In.ar(b, 2);
            //TODO: Implement some crazy, revolutionary effects
            Out.ar(0, audio);
    }
).add;

p = Pbind(*[
    instrument: \mySynth,
    scale: #[0, 2, 4, 5, 7, 9, 11],
    degree: Pseq([3,    3,      9,      9,      2,      9,      9,      3,      5,      7], inf),
    dur:    Pseq([0.2,  0.2,    0.2,    0.1,    0.1,    0.2,    0.2,    0.2,    0.1,    0.1], inf),
    amp:    Pseq([1,    0.6,    0.9,    0.3,    0.4,    0.9,    0.6,    0.85,   0.3,    0.4], inf),
]);

p.play;

代码没有错误(输出窗口显示'EventStreamPlayer')。但我没有任何声音。

如果我更改Out.ar中的\mySynth行以使用频道0而不是公共b,那么我确实会听到声音,尽管没有任何路由到效果合成器。所以我猜测问题是与总线和/或处理顺序有关。但我不知道如何解决它。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

在你的代码中,你没有实例化effects合成器,因此没有声音进入输出总线。