我有这个简单的补丁:
现在我将一个游戏控制器连接到 Pd,根据我是否按下按钮,按键给我 1 或 0。
如果我按下按钮,我希望 osc~“播放”,如果我松开它,它应该会停止。
但是:我无法找到连接开关的位置。我不想关闭 DSP,因为我想同时在另一个键上播放另一个声音。
如果你们中的任何人都有解决方案,那就太好了
编辑: 好的,以下解决方案有效,如果我完成的项目有任何需要(使用游戏控制器作为工具),请直接与我联系。
我有这个简单的补丁:
现在我将一个游戏控制器连接到 Pd,根据我是否按下按钮,按键给我 1 或 0。
如果我按下按钮,我希望 osc~“播放”,如果我松开它,它应该会停止。
但是:我无法找到连接开关的位置。我不想关闭 DSP,因为我想同时在另一个键上播放另一个声音。
如果你们中的任何人都有解决方案,那就太好了
编辑: 好的,以下解决方案有效,如果我完成的项目有任何需要(使用游戏控制器作为工具),请直接与我联系。
通过将信号与 0 或 1 相乘来切换 Pd 中的信号。信号的乘法由对象 完成*~
。由于您的游戏控制器已经有 0 和 1,这应该很容易。但是,您将开始听到咔嗒声,具体取决于您突然关闭它时正弦波的位置。要解决此问题,请添加一个line~
对象并将振荡器斜进和斜出。
如前一个答案所述,这是通过音频乘法对象 [*~] 和 0 或 1 完成的。
这是一个带有 PureData 切换框的简单示例(输出 0 或 1,与您的游戏手柄按钮相同):
对象 [line~] 在 100 毫秒的过程中从 0 到 1 平滑过渡(上面的消息框用它的输入替换了令牌 $1),这提供了一个音量包络和停止点击,当音调变化太突然。如果您希望此更改立即生效,仍使用 [line~],但将 100 更改为 10。
如果对你有帮助的话,我还有一个纯数据中使用游戏手柄的教程
还需要记住的一件事是,当打开 LFO 时,其相位的效果是可以听到的。因此,根据振荡器的频率,在开启时控制其相位是可取的。您可以将数字参数 (0-1) 发送到正确的入口以控制相位。例如,如果您希望每次打开 osc~ 时 LFO 都降低,您可以将 0 发送到右侧入口以在阶段开始时开始。
如果你走这条路,你必须包括一个触发器,在你将一个触发器发送到相位入口之前,它会强制一个砰的一声到斜坡上。否则每次开机都会听到削波。这一点很重要,尤其是在斜坡时间较短的情况下。在 PureData 的帮助文件中的“2.control.examples/03.connections.pd”下,有更多关于使用触发器的爆炸顺序的信息。
当你关闭它时,可能没有理由向 osc~ 发送一个相位参数,所以你可以简单地添加一个选择原子来根据你是打开还是关闭来引导开关。