0

我正在尝试使用 OSC 消息作为在 Supercollider 中调度任务/例程的方法。具体来说,我希望例程等到通过 OSC 接收到消息后再恢复。所以不是(例如) 10.wait 我想要 - 类似:等待(OSC 监听器 - 收到消息,所以继续)。我已经梳理了 Supercollider 文档,但找不到任何可以适应这种情况的东西。任何有关解决方案的建议将不胜感激..

4

1 回答 1

0

查看该Condition对象的文档。您可以创建一个Condition,在一个线程中等待它,然后在稍后/从另一个线程恢复该线程,方法是使用condition.unhangcondition.test_(true).signal

您的 OSC 消息处理程序的代码可能类似于:

~stepCond = Condition();

Routine({
    "starting".postln;
    ~stepCond.wait;
    "continuing".postln;
}).play;

OSCfunc(\step, {
    ~stepCond.unhang();
}, '/step')
于 2019-02-14T14:44:15.717 回答