Как запустить и изменить Synth? - PullRequest
0 голосов
/ 24 февраля 2019

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

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

  1. запустить сервер
  2. определение синтезатора
  3. запуск экземпляра синтезатора
  4. монтирование слушателя для изменения частоты греха с помощью удаленной команды
(
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 synth: FAILURE IN SERVER /n_set Node 1000 not found.

1 Ответ

0 голосов
/ 14 марта 2019

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

Ссылка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...