0

我通读了文档Pmono并且一定读错了。从以下我推断节点Pmono创建将在Pmono完成后被删除:

“该节点在进入 Pmono 时创建,并在 Pmono 终止时释放。”

所以我想了一个Pmono这样的:

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

...将创建一个播放 0.2 秒然后自动释放的合成器。但是,它一直在播放,这让我想知道这与什么\dur, 0.2有关。

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

编辑:我正在尝试做的更多上下文:我希望能够创建一个昂贵的效果合成器的实例,我只想要一个酒吧左右,它会在我完成后自动释放用它。

4

1 回答 1

4

首先要理解的是为什么它会一直播放而不仅仅是 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 没有终止。

于 2013-09-10T08:08:23.733 回答