如何生成波形表以更快地进行实时音频合成

和路德玛

几个月前,我为iOS设备开发了一个可生成实时谐波丰富无人机的应用程序。它在较新的设备上可以正常工作,但在较慢的设备上会遇到缓冲区欠载的情况。我需要优化这个东西,需要一些心理帮助。以下是我目前正在做的工作的超级基本概述:

  • 创建一个由X个谐波组成的“振荡器组”(简单地从给定的基频计算得出。在这里没有什么幻想。)
  • 在我的DAC函数(将样本分配到iOS音频缓冲区)内部,我调用了“ GetNextSample()”函数,该函数经过正弦振荡器组,为每个样本计算样本并将其相加。一些简单的添加剂合成。
  • 享受无人机的美丽。

再次,它很好用,直到没有用。我想优化这个东西,所以我不使用实时计算出的正弦波的强加法合成。如果我将谐波数(“组”)限制为2,它将在较旧的设备上运行。不酷 在较新的设备上,它欠载约50次谐波。还不错 但是,如果我想一次播放多架无人机来创建和弦,那就太强大了。

  • 我应该生成波形表来循环而不是进行常量计算吗?(我认为是...)
  • 我应该将双精度浮点的用法转换为基于整数的计算吗?(我认为是...)

我的大算法问题(完全是非数学的):

  • 如果使用波形表,如何准确确定波形/表应保持多长时间?根据我开发此应用程序的经验,如果我只是走了一段时期(2 * PI),然后重新开始,将相位重置为0,我会得到声音,因为我要强制抵消相位。换句话说,我不能保证一个时期能给我正确的结果...

也许我已经使事情复杂化了……快速,多处理的正弦处理器实时合成的标准方法是什么?

同时,我将继续四处张望。

谢谢!

红党

您是否增加了缓冲区大小(或者您不是iOS用户,可以)?可能会给您带来足够的开销,您不需要这样做。否则,波表综合是一种可行的方法。仅当参数更改时,才可以根据所有谐波的总和来计算新的波表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章