gpt4 book ai didi

IOS 8 : Real Time Sound Processing and Sound Pitching - OpenAL or another framework

转载 作者:行者123 更新时间:2023-12-03 02:04:42 27 4
gpt4 key购买 nike

我正在尝试实现一个循环播放一系列音调的应用程序。
实际上,我使用 OpenAL 并且我对这种框架的经验是积极的,因为我也可以发出声音。

这是场景:

  • 从 CAF 文件中加载短声音(3 秒)
  • 循环播放该声音并执行声音转换。

  • 这很好用,前提是节拍率不太高——我的意思是每个音调超过 10 毫秒的时间。

    无论如何,我的 NSTimer(嵌入我要播放的声音序列)应该是可配置的——一旦我的节拍率增加(我的意思是每个音调小于 10 毫秒),声音就不再正确回响——甚至有些音调被丢弃一种明显的随机方式。

    似乎实时声音处理成为一个问题。
    我仍然是 IOS 编程的新手,但我相信 Apple 对时间消耗和/或信号量设置了限制。

    现在我的问题:
  • OpenAL 是用 C 语言编写的——直到现在,我还不了解该框架背后的全部代码和理念。是否有可能通过一些修改来解决我上面提到的问题 - 我的意思是设置标志/值或覆盖某些方法?
  • 如果没有,你知道另一个更适合这种实时声音处理的 IOS 声音框架吗?

  • 提前谢谢了!
    我知道它处理的是一个非常特殊和困难的问题——也许是这样。你们中有没有解决过类似的问题?只是强调:必须保证音高!

    最佳答案

    从解释中并不能立即清楚地说明您要达到的目标。一些代码是预期的。

    但是,您使用 NSTimer对音频播放进行排序显然是有问题的。它既不是可靠的也不是高分辨率的定时器。

  • NSTimer通过运行循环队列(可能是您的应用程序的主队列)传递事件,在那里它们满足用户界面事件。
  • 由于主线程不是实时线程,它甚至可能有一段时间没有被调度运行。
  • 您请求的延迟可能会产生量化效果,这意味着您的事件有效地舍入到零时钟节拍并立即安排。
  • 周期性定时器对电池生命周期有有害影响。 iOS 和 MacOSX 都采取措施将其影响降低 timer coalescing

  • 您应该用于对事件进行排序的时钟是回放采样时钟——它在您使用的任何框架的渲染处理程序中都可用。除了可靠之外,这也是高效的,因为渲染处理程序无论如何都会定期运行,并且在实时线程中。

    关于IOS 8 : Real Time Sound Processing and Sound Pitching - OpenAL or another framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28570782/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com