代码之家  ›  专栏  ›  技术社区  ›  David

如何阻止Pmono?

  •  0
  • David  · 技术社区  · 11 年前

    我通读了 Pmono 一定是看错了。根据以下内容,我推断该节点 普莫诺 创建的将在 普莫诺 饰面:

    此节点在输入Pmono时创建,在Pmono终止时释放

    所以我想 普莫诺 这样地:

    p = Pmono(\default, \dur, 0.2, \freq, 400).play;
    

    …将创建一个Synth,播放0.2秒,然后自动释放。然而,它一直在播放,这让我想知道 \dur, 0.2 与相关。

    我该如何杀死 普莫诺 当我不再想要它的时候?或者更重要的是,是否有一个Pthing,意思是“创建这个单声道合成器,我可以在它启动后继续向它发送控制数据,并在模式结束时自动释放”?

    编辑:我想做的更多内容:我希望能够创建一个昂贵的效果合成器的实例,我只想要一个酒吧左右,它在我完成后自动发布。

    1 回复  |  直到 11 年前
        1
  •  4
  •   Dan Stowell    11 年前

    首先要理解的是,为什么它会永远播放,而不仅仅是0.2。如果你运行 Pbind 等效:

     p = Pbind(\instrument, \default, \dur, 0.2, \freq, 400).play;
    

    如果你跑步,你不会只听到一个音符,你会听到这个音符被一次又一次地敲击,直到你跑步

     p.stop;
    

    那为什么呢?这是因为所有指定的“值”都是简单的数字或符号( \default ... 0.2 ... 400 ),这些总是被解释为“永远持续下去,或者直到其他事情阻止我们”。

    如果你想让Pbind只演奏一个音符,你需要在其中使用至少一个模式,该模式将自己限制为一个项目:

     p = Pbind(\instrument, \default, \dur, 0.2, \freq, Pseq([400], 1)).play;
    

    所以你可以对Pmono做同样的事情:

     p = Pmono(\default, \dur, 0.2, \freq, Pseq([400], 1)).play;
    

    这已经 完全相同的结果 实际上,就像Pbind的例子一样,但那是因为它只演奏一个音符。通过以下两个注意的例子,我们可以更清楚地说明区别:

     p = Pbind(\instrument, \default, \dur, 0.4, \freq, Pseq([400, 500], 1)).play;
    
     p = Pmono(\default, \dur, 0.4, \freq, Pseq([400, 500], 1)).play;
    

    第一个演奏两个不同的音符,第二个演奏一个,中途改变音高。

    因此,请注意,您的推断是正确的——在Pmono终止后,节点确实会被删除——但您的Pmono并没有终止。

    推荐文章
    David  ·  如何阻止Pmono?
    11 年前