【问题标题】:Iteration in supercollider超级对撞机中的迭代
【发布时间】:2021-01-29 06:01:11
【问题描述】:

我需要使用 .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;
};
) 
)

感谢您的帮助!

【问题讨论】:

    标签: supercollider


    【解决方案1】:

    代码结构:

    {
    \\...
    }.play;
    

    是创建和播放 SynthDef 的快捷方式。您只能在 SynthDef 中使用 UGen。这意味着freq = [/*...*/].choose 行不能进入 SynthDef。

    如果您确实想在 SynthDef 中进行选择,您可以使用像 Drand 这样的需求率 Ugen。有关更多信息,请参阅需求帮助文件https://doc.sccode.org/Classes/Demand.html

    【讨论】:

      【解决方案2】:
      (
      10.do({
          var hz;
          hz = [[660, 880], [440, 660], [1320, 880],[220,660]].choose;
          {
              SinOsc.ar(hz, 0, 0.05)
          }.play;
      });
      )
      

      【讨论】:

        猜你喜欢
        • 2022-12-11
        • 2014-01-17
        • 2013-04-11
        • 2014-01-17
        • 2012-08-12
        • 1970-01-01
        • 2020-08-17
        • 2022-01-18
        • 2013-12-04
        相关资源
        最近更新 更多