我正在编写软件合成器,并需要以44.1 kHz采样率实时生成无混叠波形。目前暂时用锯齿波,因为我可以通过将两个反相且相位转换的锯齿波混合在一起来生成脉冲波。
到目前为止,我尝试了以下方法:
1.在启动时预先计算不同带宽频率下的一周期完美无混叠波形样本,然后播放混合在一起的两个最接近的样本。我猜还可以,但感觉不太优雅。需要大量的样本,否则会听到"间隙"。插值和混合也相当占用CPU。
2.集成直流补偿sinc脉冲序列以获取锯齿波。听起来很好,除非你没有精确地补偿直流(我发现这非常棘手)。可以通过向积分器添加一点泄漏来减少DC问题,但这样就失去了低频。
所以,我的问题是:通常是怎么做的?任何建议的解决方案都必须在CPU效率上高效,因为它必须实时进行处理,对于多个声音同时进行处理。
到目前为止,我尝试了以下方法:
1.在启动时预先计算不同带宽频率下的一周期完美无混叠波形样本,然后播放混合在一起的两个最接近的样本。我猜还可以,但感觉不太优雅。需要大量的样本,否则会听到"间隙"。插值和混合也相当占用CPU。
2.集成直流补偿sinc脉冲序列以获取锯齿波。听起来很好,除非你没有精确地补偿直流(我发现这非常棘手)。可以通过向积分器添加一点泄漏来减少DC问题,但这样就失去了低频。
所以,我的问题是:通常是怎么做的?任何建议的解决方案都必须在CPU效率上高效,因为它必须实时进行处理,对于多个声音同时进行处理。