如何启动和更改Synth?

时间:2019-02-24 10:28:34

标签: osc supercollider

我对SuperCollider + OSC不满意,现在看来我对它还没有正确的了解。

此代码应执行以下操作:

  1. 启动服务器
  2. 定义一个合成器
  3. 启动合成器实例
  4. 安装监听器以通过远程命令更改正弦频率
(
Server.default = Server.internal;
s = Server.default;
s.boot;

SynthDef(\fly, { arg freq = 500;
   Out.ar(0, SinOsc.ar(freq, 0, 0.1))
}).add;

~fly = Synth.new(\fly);

OSCdef.new(
    \move,
    {arg msg;
        [msg].postln;

        ~fly.set(\freq, msg[0]);
    },
    '/move',
    nil, 57120
);
)

显然,它不能按预期工作。不能通过运行整个脚本来创建合成器。我需要自己运行每个块。另外,OSCDef中的调用也不知道~fly合成器:FAILURE IN SERVER /n_set Node 1000 not found

1 个答案:

答案 0 :(得分:0)

JITLib使用了环境变量并添加了许多行为。如果要使用普通变量并自己管理Synth,请使用单字符变量[a..z]之一,而不要使用~fly。否则,您可以让JITLib做它的事情,在这种情况下,这样的事情将起作用:

(
Server.default = Server.internal;
s = Server.default;
s.boot;

~fly = { arg freq = 500;
   SinOsc.ar(freq, 0, 0.1)
};


OSCdef.new(
    \move,
    {arg msg;
        [msg].postln;

        ~fly.set(\freq, msg[0]);
    },
    '/move',
    nil, 57120
);
)

参考: