Closed. This question needs to be more focused。它当前不接受答案。












想要改善这个问题吗?更新问题,使它仅关注editing this post的一个问题。

2年前关闭。



Improve this question




我正在编写一个软件合成器,需要以44.1 kHz的采样率实时生成带宽受限,无混叠波形。锯齿波形现在就可以了,因为我可以通过将两个锯齿混合在一起(一个倒相且相移)来生成脉冲波。

到目前为止,我已经尝试了以下方法:
  • 在启动时预先计算处于不同带宽限制频率的一周期完美带宽限制的波形样本,然后播放两个最接近的混合在一起的波形。我猜可以用,但是感觉不太优雅。需要大量样本,否则将听到它们之间的“间隙”。插值和混合也非常占用CPU。
  • 集成一系列直流补偿的正弦脉冲以获得锯齿波。听起来很棒,除了如果您没有完全正确地获得DC补偿(我发现这确实很棘手),该波会从零开始漂移的话。可以通过向积分器增加一点泄漏来减少直流问题,但是这样会损失低频。

  • 因此,我的问题是:完成此操作的通常方式是什么?任何建议的解决方案都必须在CPU方面高效,因为它必须实时完成,而且要同时处理许多声音。

    最佳答案

    有很多方法可以处理带宽受限的波形。您将照常以质量为代价交换计算成本。

    我建议您在这里浏览该站点:

    http://www.musicdsp.org/

    查看文件!它充满了好 Material 。我刚刚在关键字“bandlimited”上进行了搜索。如果您忙于至少一周的时间,弹出的 Material 会弹出。

    顺便说一句-不知道这是否是您要寻找的东西,但是几年前我做了别名减少的波形生成(例如,没有真正的频带限制)。我只是计算了最后一个样本位置与当前样本位置之间的积分。对于传统的合成波形,如果以奇异点分割积分间隔(例如,当锯齿被重置时),您可以相当容易地做到这一点。 CPU负载低,质量可以满足我的需求。

    我也有同样的漂移问题,但是在积分上应用高截止频率很低的高通就摆脱了这种影响。真正的模拟合成器无论如何都不会进入亚赫兹区域,因此您不会错过太多。

    关于audio - 带限波形产生,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/175312/

    10-13 04:10