Массив автобусов в суперколлайдере

У меня есть Synth, сгенерированный с помощью do:

(
SynthDef(\siny, { arg freq, outBus=0; Out.ar( outBus, SinOsc.ar(freq!2,0,0.2) ) } ).send(s);
SynthDef(\filter, { arg cFreq,q=0.8, inBus; Out.ar( 0, BPF.ar(In.ar(inBus), cFreq!2, 1/q ) ) } ).send(s);

)

(
~sourceOut = Bus.audio(s);
~sine_Group = ParGroup.new;
z = [100,500,1000,1500,250];

{
z.do({ arg val; Synth.head(~sine_Group, \siny, [\freq: val, \outBus: ~sourceOut]) });
z.do({ arg val; Synth.after(~sine_Group, \filter, [\inBus: ~sourceOut, \cFreq: 200] ) });

}.play;
)

На данный момент я понимаю, что вывод нескольких экземпляров Synth\siny смешивается в шине ~sourceOut и идет как вход в synth\filter

На самом деле я хочу иметь прямое соединение между несколькими экземплярами \siny и \filter. Могу ли я использовать массив шин для их соединения? Если да, то как мне это сделать?


person Rithesh    schedule 29.01.2016    source источник


Ответы (1)


Да, ты можешь. Здесь я изменил ваш код минимально. Сначала я сделал ~sourceOut массив шин, а не одну шину. Во-вторых, внутри циклов do я использовал тот факт, что основные функции итерации в SuperCollider могут предоставлять второй аргумент index, а также каждый элемент сам по себе. В-третьих, я использую этот аргумент index для выбора нужной шины:

(
z = [100,500,1000,1500,250];
~sourceOut = z.collect{ Bus.audio(s) };
~sine_Group = ParGroup.new;

{
z.do({ arg val, index; Synth.head(~sine_Group, \siny, [\freq: val, \outBus: ~sourceOut[index]]) });
z.do({ arg val, index; Synth.after(~sine_Group, \filter, [\inBus: ~sourceOut[index], \cFreq: 200] ) });

}.play;
)

В зависимости от ваших потребностей, вы также можете взглянуть на NodeProxy, который полезен для прототипирования и живого кодирования, а также предоставляет некоторые приемы для подключения вывода синтезаторов друг к другу.

person Dan Stowell    schedule 30.01.2016
comment
Привет @Dan_S, у меня есть еще один вопрос, он больше похож на продолжение. Не могли бы вы пройти через это? [ссылка] (stackoverflow.com/questions/35167856/) - person Rithesh; 03.02.2016