Итерация в суперколлайдере

Мне нужна помощь с синтаксисом итерации с использованием .do ;

У меня есть эта функция:

(
{var freq;
    freq = [[660, 880], [440, 660], [1320, 880],[220,660]].choose;
    SinOsc.ar(freq, 0, 0.1);
}.play;
)

Я пытаюсь повторить это, поэтому в каждой итерации я получаю другой массив частот, а также слышу вывод.

Я пытаюсь что-то вроде этого без успеха:

(
10.do({arg i;
    [[660, 880], [440, 660], [1320, 880],[220,660]].choose;
    {SinOsc.ar(i,0,0.1);        
    }.play;
};
) 
)

Спасибо за любую помощь!


person Omer    schedule 14.10.2020    source источник


Ответы (1)


Структура кода:

{
\\...
}.play;

это ярлык для создания и воспроизведения SynthDef. Вы можете использовать UGens только в SynthDef. Это означает, что строка freq = [/*...*/].choose не может идти в SynthDef.

Если вы хотите выбрать в SynthDef, вы можете использовать ставку спроса Ugen, такую ​​​​как Drand. Дополнительные сведения см. в справочном файле Demand https://doc.sccode.org/Classes/Demand.html< /а>

person Les_h    schedule 04.12.2020