关于 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 的人肯定可以分享经验。它可能与以下内容有关:

    • 线程如何工作,以及它如何与主队列交互
    • 给定目标设备,什么采样率最有效
    • 有哪些调试工具可用。
    • 通过丰富的经验获得的其他建议。
    • 我认为接近投票来自那些不知道 libPd 是什么的人?
    • 仅供参考,我将您的问题编辑为不那么具有煽动性(即,将其放入您的烟斗中并吸一点)。有些人会对这种评论反应不佳。
    • @thegrinner 哈!谢谢 :) 。 . .我认为这个话题对于 StackOverflow 来说可能太专业了。 . .不幸的是,这两张关于与编程无关的投票被误导了。
    • 我们会的,我用谷歌搜索了 libPd,但仍然没有任何线索。目前还不清楚这里的”补丁”是什么意思。这是未经授权的 iOS 补丁吗? (如果是这样,那么所有的赌注都没有了。)
    • @HotLicks – 我认为您需要了解纯数据
    • 我对 PD 一无所知,但键盘的外观似乎可能导致您因某种原因而缺乏 CPU。你可以试试:

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

      434511

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

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

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

      1
      [PdBase setDelegate:_dispatcher];

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

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

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

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

      434511

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

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

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

      1
      [PdBase setDelegate:_dispatcher];

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

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

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

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

      434511

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

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

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

      1
      [PdBase setDelegate:_dispatcher];


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

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

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

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

      434511

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

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

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

      1
      [PdBase setDelegate:_dispatcher];

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

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


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

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

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

    1
    [PdBase setDelegate:_dispatcher];

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

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


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

    • 验证这仍然会在发布时发生并且未附加到调试器(日志消息在附加到调试器时会导致长时间延迟,仅此一项就会导致像这样的打嗝)
    • 使用 Instruments 分析您的代码,看看您是否无意中一次使用了大量 CPU 或
    • 增加缓冲区大小,这样 PD 就不再需要 CPU。
    • 绝对值得看看 CPU 在噼啪作响时发生了什么。 .第 3 点也值得研究(如果我们确实受到 CPU 限制)。谢谢。
    • “噼啪声”几乎可以肯定是由于发声器”饿死”了。确切的原因很难说,尤其是在不了解 iOS/iPhone 声音机制内部的情况下。可能是生成器硬件没有足够快地处理中断,也可能是软件无法足够快地填充中间队列。


    来源:https://www.codenong.com/20517945/

    微信公众号
    手机浏览(小程序)

    Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9968.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
    0
    分享到:
    没有账号? 忘记密码?