我正在尝试使用 OSC 消息作为在 Supercollider 中调度任务/例程的方法。具体来说,我希望例程等到通过 OSC 接收到消息后再恢复。所以不是(例如) 10.wait 我想要 - 类似:等待(OSC 监听器 - 收到消息,所以继续)。我已经梳理了 Supercollider 文档,但找不到任何可以适应这种情况的东西。任何有关解决方案的建议将不胜感激..
问问题
62 次
1 回答
0
查看该Condition
对象的文档。您可以创建一个Condition
,在一个线程中等待它,然后在稍后/从另一个线程恢复该线程,方法是使用condition.unhang
或condition.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 回答