Как запустить и изменить Synth?

Я возился с SuperCollider + OSC, и сейчас я, кажется, не понимаю его должным образом.

Этот код должен делать:

  1. запустить сервер
  2. определить синтезатор
  3. запустить экземпляр синтезатора
  4. смонтировать прослушиватель для изменения частоты sin с помощью удаленной команды
(
Server.default = Server.internal;
s = Server.default;
s.boot;

SynthDef(\fly, { arg freq = 500;
   Out.ar(0, SinOsc.ar(freq, 0, 0.1))
}).add;

~fly = Synth.new(\fly);

OSCdef.new(
    \move,
    {arg msg;
        [msg].postln;

        ~fly.set(\freq, msg[0]);
    },
    '/move',
    nil, 57120
);
)

Очевидно, что это не работает так, как задумано. Синтез не создается путем запуска всего скрипта. Мне нужно запускать каждый блок отдельно. Также вызов в OSCDef не знает о синтезаторе ~fly: FAILURE IN SERVER /n_set Node 1000 not found.


person Imperative    schedule 24.02.2019    source источник


Ответы (1)


JITLib использует переменные окружения и добавляет несколько вариантов поведения. Если вы хотите использовать простую переменную и самостоятельно управлять синтезатором, используйте одну из односимвольных переменных [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
);
)

Ссылка:

person Chad Cassady    schedule 13.03.2019