【问题标题】:Pure Data osc~ on/off switchPure Data osc~开/关开关
【发布时间】:2014-07-01 12:26:53
【问题描述】:

我有这个简单的补丁:

现在我将一个游戏控制器连接到 Pd,根据我是否按下按钮,按键给我 1 或 0。

如果我按下按钮,我希望 osc~“播放”,如果我松开它,它应该会停止。

但是:我找不到连接开关的位置。 我不想关闭 DSP,因为我想同时在另一个键上播放另一个声音。

如果你们中的任何人有解决方案,那就太好了

编辑: 好的,以下解决方案有效,如果对我所做的项目有任何需求(使用游戏控制器作为工具),请直接与我联系。

【问题讨论】:

    标签: puredata


    【解决方案1】:

    正如前面的答案所述,这是通过音频乘法对象 [*~] 和 0 或 1 完成的。

    这是一个带有 PureData 切换框的简单示例(输出 0 或 1,与您的游戏手柄按钮相同):

    source

    对象 [line~] 在 100 毫秒的过程中从 0 到 1 平滑过渡(上面的消息框用它的输入替换了令牌 $1),这提供了一个音量包络和停止点击,它可以当音调的电平变化太突然时会发生。如果您希望此更改立即生效,仍使用 [line~],但将 100 更改为 10。

    如果对你有帮助,我也有a tutorial on using game pads in pure data

    【讨论】:

      【解决方案2】:

      在 Pd 中切换信号是通过将信号与 0 或 1 相乘来完成的。信号的乘法是通过对象 *~ 完成的。由于您的游戏控制器已经有 0 和 1,这应该很容易。但是,您会开始听到咔嗒声,具体取决于您突然关闭正弦波的位置。要解决此问题,请添加一个 line~ 对象并将振荡器斜进和斜出。

      【讨论】:

        【解决方案3】:

        还有一点要记住,当打开 LFO 时,其相位的效果是可以听到的。因此,根据振荡器的频率,在开启时控制其相位是可取的。您可以将数字参数 (0-1) 发送到正确的入口以控制相位。例如,如果您希望每次打开 osc~ 时 LFO 都降低,您可以将 0 发送到右侧入口以在阶段开始时开始。

        如果你走这条路,你必须包括一个触发器,在你发送一个到相位入口之前强制一个砰砰声到斜坡上。否则每次开机都会听到削波。这一点很重要,尤其是在斜坡时间较短的情况下。在 PureData 的帮助文件的“2.control.examples/03.connections.pd”下,有更多关于使用触发器的 bang order 的信息。

        当你关闭它时,可能没有理由向 osc~ 发送一个相位参数,所以你可以简单地添加一个选择原子来根据你是打开还是关闭来引导开关。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-15
          • 1970-01-01
          • 2012-11-14
          • 2013-05-23
          • 1970-01-01
          • 1970-01-01
          • 2021-01-04
          • 1970-01-01
          相关资源
          最近更新 更多