0

我正在摆弄 SuperCollider + OSC,现在我似乎对它没有正确的理解。

这段代码应该这样做:

  1. 启动服务器
  2. 定义一个合成器
  3. 启动合成器的一个实例
  4. 挂载一个监听器以通过远程命令改变 sin 频率
(
Server.default = Server.internal;
s = 服务器。默认值;
s.boot;

SynthDef(\fly, { 参数频率 = 500;
   Out.ar(0, SinOsc.ar(频率, 0, 0.1))
})。添加;

~fly = Synth.new(\fly);

OSCdef.new(
    \移动,
    {arg 味精;
        [味精].postln;

        ~fly.set(\freq, msg[0]);
    },
    '/移动',
    无,57120
);
)

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

4

1 回答 1

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
);
)

参考:

于 2019-03-13T22:55:03.677 回答