几个月前,我为iOS设备开发了一款应用程序,可生成实时谐波丰富的无人机。它在较新的设备上运行良好,但它在较慢的设备上运行缓冲区欠载。我需要优化这个东西,需要一些心理帮助。这是我目前正在做的事情的超级基本概述:
同样,它很有效,直到它没有。我想优化这个东西,所以我没有使用实时计算的正弦波的粗糙加法合成。如果我将谐波数量(" bank")限制为2,它将在旧设备上运行。不酷。在较新的设备上,它低于50次谐波。还不错。但是,如果我想一次玩多个无人机来创造一些和弦,那就是处理能力太强......所以...
我的大算法问题(非常非数学):
也许我对复杂的事情感到困惑......什么是快速,处理器友好的多个正弦合成的实时合成的标准方式?
在此期间,我一直在四处寻找。
谢谢!
答案 0 :(得分:1)
您(或者您可以,而不是iOS用户)是否增加了缓冲区大小?可能会给你足够的开销,你不需要这个。否则是wave-table synthesis是一种可行的方法。只有当参数发生变化时,才可以从所有谐波的总和中计算出新的波表。
答案 1 :(得分:0)
我在服务器端的golang上写过这样的野兽......对于初学者来说是使用单精度浮点
为了解决表格填充问题,我确保通过合成方波确保您的实现是可靠的。可视化每次运行的输出,同时为每个运行提供额外的频率(以及相应的振幅和相移参数)......根据定义,只要您正确使用足够的周期来覆盖时间段,单个周期就足够了。样品
利用从一组正弦波(每个都具有频率,幅度,相移)生成输出曲线的知识非常重要,这有助于进行反向...即在该输出曲线上执行FFT以使其具有api给你它的底层正弦波版本(每个都有频率,幅度和相位)...这将确认你的系统是准确的
您正在实施的流程的名称是: 逆傅里叶变换 并且有这样的库但是我也更喜欢滚动我自己的