Как заставить OSC взаимодействовать с процедурой планирования в Supercollider - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь использовать сообщения OSC в качестве метода планирования задач / процедур в Supercollider.В частности, я хочу, чтобы подпрограмма ожидала, пока сообщение не будет получено через OSC, прежде чем возобновить.Так что вместо (например) 10.wait я хочу - что-то вроде: wait (OSC listener - сообщение получено, поэтому продолжайте).Я просмотрел документацию по Supercollider, но не смог найти ничего, что можно было бы приспособить к такой ситуации.Будем весьма благодарны за любые предложения относительно решения ..

1 Ответ

0 голосов
/ 14 февраля 2019

Посмотрите документацию для объекта Condition.Вы можете создать Condition, подождать его в одном потоке, а затем возобновить этот поток позже / из другого потока, используя condition.unhang или condition.test_(true).signal.

Код для вашего обработчика сообщений OSC может выглядеть примерно так:

~stepCond = Condition();

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

OSCfunc(\step, {
    ~stepCond.unhang();
}, '/step')
...