关于 ios:播放 libPd 补丁期间的噼啪声 – 尤其是。与键盘演示有关

Crackling during playback of a libPd patch - esp. related to keyboard presentation

我在 iOS 中集成了一个 libPd 补丁。

当输入一个文本字段并显示键盘时,会有一些噼啪声。

我该如何调试呢?

注意我已经用 Objective-C 和 iOS 标记了这个问题,但是这个问题可能需要所有四个标签的知识 - libPd 和 Pure Data 很好:

什么是纯数据

  • Pure Data 是一种功能强大的编程语言,用于根据核心数学概念处理音频。它广泛用于游戏以及 DJ 和其他以音乐为中心的应用程序。使用 Pure Data 和 libPd 构建的一些示例应用程序包括:RjDj 的 Rj Voyager 应用程序和 Warner Brothers 的 Inception 应用程序。

  • libPD 是一种在 iOS 应用程序中嵌入 Pure Data 补丁(使用可视化界面开发)的方法。控制 Pd 接口是通过类似于 OSC 或 MIDI 的发布/订阅消息接口完成的。 .

  • libPd 的 GitHub 页面在这里:https://github.com/libpd

    我在寻求什么帮助?

    我不确定从哪里开始调试。在 iOS 上集成和使用过 libPd 的人肯定可以分享经验。它可能与以下内容有关:

    • 线程如何工作,以及它如何与主队列交互
    • 给定目标设备,什么采样率最有效
    • 有哪些调试工具可用。
    • 通过丰富的经验获得的其他建议。


    我在正在开发的应用中遇到了同样的症状。我确实设法在早期确定了一些事情。我最近的更改涉及在应用程序初始化期间向 pd 发送大量消息。我在调试时注意到,当我减少发送的消息量时,声音得到了改善。另外,我在模拟器中没有看到这个,只在设备上看到。

    如果您增加可以生成的补丁数量,则 libpd 示例 PolyPatch 在这种情况下非常有用。我发现声音随着打开许多补丁而破裂,与我的应用程序中的方式完全相同。这很简单,使用 libpd 的开销会影响性能。同样清楚的是,简化补丁(因此它包含更少的对象)会影响性能。但到目前为止,最大的成功是创建一个新的、单独的补丁。所以你不会想要创建大量的补丁。调试当然也需要付出代价。

    就采样率而言,44.1khz 几乎可以在任何地方使用(这也是 pd 标准)。没有什么可以阻止你在 xcode 中调试 libpd 代码,我已经做过几次了。除此之外,还有调试补丁的问题。您可以直接在 pd 中使用对象的测试版本设置补丁,或者您应该能够设置 libpd 以查看与通常在控制台的 pd 主窗口中看到的相同的输出(您只需要确保你有这样的

    1
    [PdBase setDelegate:_dispatcher];

    在您的代码中 - 当然都在 dox 中)。然后,您只需根据需要在补丁中添加打印消息...

    希望它有所帮助,并且在 3 个月后仍然有用...!


    我对 PD 一无所知,但键盘的外观似乎可能导致您因某种原因而缺乏 CPU。你可以试试:

    • 验证这仍然会在发布时发生并且未附加到调试器(日志消息在附加到调试器时会导致长时间延迟,仅此一项就会导致像这样的打嗝)
    • 使用 Instruments 分析您的代码,看看您是否无意中一次使用了大量 CPU 或
    • 增加缓冲区大小,这样 PD 就不再需要 CPU。