Я пытаюсь направить синтезатор в другой синтезатор (для создания эффектов) через автобус. Вот мой код:
b = Bus.audio(numChannels: 2);
SynthDef(
"mySynth",
{
|freq, amp, gate = 1|
var audio = Pulse.ar(freq, 0.5);
var env = EnvGen.kr(Env.perc, doneAction:2);
audio = Pan2.ar(audio, MouseX.kr(-1, 1));
Out.ar(b, audio * env);
}
).add;
SynthDef(
"effects",
{
var audio = In.ar(b, 2);
//TODO: Implement some crazy, revolutionary effects
Out.ar(0, audio);
}
).add;
p = Pbind(*[
instrument: \mySynth,
scale: #[0, 2, 4, 5, 7, 9, 11],
degree: Pseq([3, 3, 9, 9, 2, 9, 9, 3, 5, 7], inf),
dur: Pseq([0.2, 0.2, 0.2, 0.1, 0.1, 0.2, 0.2, 0.2, 0.1, 0.1], inf),
amp: Pseq([1, 0.6, 0.9, 0.3, 0.4, 0.9, 0.6, 0.85, 0.3, 0.4], inf),
]);
p.play;
Код не содержит ошибок (в окне вывода отображается «EventStreamPlayer»). Но я не слышу.
Если я изменю строку Out.ar
в \mySynth
на использование канала 0
вместо шины b
, то я получу звук, хотя и без какой-либо маршрутизации на синтезатор эффектов. Итак, я предполагаю, что проблема связана с автобусами и / или порядком обработки. Но я не знаю, как это исправить. Кто-нибудь может помочь?
1 ответ
В вашем коде вы не создаете экземпляр синтезатора effects
, поэтому звук не поступает на выходную шину.
Похожие вопросы
Связанные вопросы
Новые вопросы
supercollider
SuperCollider - это среда и язык программирования для синтеза звука в реальном времени и алгоритмической композиции. Он предоставляет интерпретированный объектно-ориентированный язык, который функционирует как сетевой клиент для современного сервера синтеза звука в реальном времени.
e = Synth(\effects);
после егоSynthDef
.