如何让 OSC 与 Supercollider 中的 Scheduling Routine 交互
How to get OSC to interact with Scheduling Routine in Supercollider
我正在尝试使用 OSC 消息传递作为在 Supercollider 中调度 tasks/routines 的方法。具体来说,我希望例程在恢复之前等到通过 OSC 收到消息。因此,而不是(例如)10.wait 我想要 - 类似的东西:等待(OSC 侦听器 - 收到消息,所以继续)。我已经梳理了 Supercollider 文档,但无法找到任何可以适应这种情况的东西。任何关于解决方案的建议将不胜感激..
查看 Condition
对象的文档。您可以创建一个 Condition
,在一个线程中等待它,然后稍后通过使用 condition.unhang
或 condition.test_(true).signal
在另一个线程上/从另一个线程恢复该线程。
您的 OSC 消息处理程序的代码可能类似于:
~stepCond = Condition();
Routine({
"starting".postln;
~stepCond.wait;
"continuing".postln;
}).play;
OSCfunc(\step, {
~stepCond.unhang();
}, '/step')
我正在尝试使用 OSC 消息传递作为在 Supercollider 中调度 tasks/routines 的方法。具体来说,我希望例程在恢复之前等到通过 OSC 收到消息。因此,而不是(例如)10.wait 我想要 - 类似的东西:等待(OSC 侦听器 - 收到消息,所以继续)。我已经梳理了 Supercollider 文档,但无法找到任何可以适应这种情况的东西。任何关于解决方案的建议将不胜感激..
查看 Condition
对象的文档。您可以创建一个 Condition
,在一个线程中等待它,然后稍后通过使用 condition.unhang
或 condition.test_(true).signal
在另一个线程上/从另一个线程恢复该线程。
您的 OSC 消息处理程序的代码可能类似于:
~stepCond = Condition();
Routine({
"starting".postln;
~stepCond.wait;
"continuing".postln;
}).play;
OSCfunc(\step, {
~stepCond.unhang();
}, '/step')