6

我正在尝试在 Pure Data 上自动模拟海洋声音。到目前为止,我已经通过使用 [bp~] 过滤一些噪音来实现非常基本的声音。我已经看到截止频率的最佳范围是从 300 到 500 Hz,因此我想要一个水平滑块 [hsl] 从 300 到 500 并返回,自动循环,直到我告诉它停止。(我已经为滑块分配了范围(300,500),我现在只需要自动控制它)。我试过 [osc~] 但它不起作用,因为滑块不是音频元素,而 [osc~] 的输出是音频信号。在图片中,我展示了我到目前为止所拥有的东西:

我的程序的当前分布

那么我怎样才能自动控制滑块而不必手动改变它呢?到目前为止,一切都按我的意愿工作,但我需要滑块定期增加和减少以模拟海浪。

4

2 回答 2

5

如果您的问题只是:如何使滑块自动化?答案是查看 [line] 对象。线在给定时间内从当前值内插到目标值。

使用线对象在浮动之间进行插值并自动移动滑块

(注:控制信号时,我们使用 [line~] 代替。)

但是,您的目标是模拟海岸波浪。在上面的滑块自动化中有两个问题:1.)我们在控制数据率而不是信号数据率下运行,2.)我们希望缓入和缓出斜坡。振荡器将同时解决这两个问题。

用作信号包络的振荡器

(注:为简化起见,此处省略了幅度控制不应该是线性的,因为感知音量不等于功率增加。)

因为我们不想只改变幅度,但我们想使用正弦函数的音色(带通的截止频率),我们可以运行一个计数器来实现所需的输出范围动画,包括缓动和 -出去。注意:滑块仅用作此补丁中的可视化。

带通自动化

(由于循环点未对齐而导致动画故障)

于 2015-05-18T04:29:33.093 回答
4

Pd 中有两个对象可以让您从信号世界转换为控制世界。[sig~] 将控件转换为信号, [snapshot~] 将信号转换为控件。您可以使用 [snapshot~] 来使用 [osc~] 解决方案。

[snapshot~] 的工作原理是在每次收到 bang 时将即时信号值报告为一个数字。您可以以给定的费率设置 Metro 以定期报告这些情况。

这是一个测试,每秒敲击 [snapshot~] 20 次以捕获以 1 Hz 移动的 [osc~]。我使用了一些简单的运算符将输出从 -1 缩放到 1 到 300 到 500 之间,以适应您的示例。您可以将其修补到滑块上并参加比赛。

Pd 补丁说明快照和节拍器解决方案

于 2015-05-15T03:55:14.547 回答