我正在构建一个 iOS 合成器,使用 Audio Unit,基本上是围绕这个构建的。
我已经支持简单的 ASR 包络,以及正弦波、三角波和方波。
正弦很简单,
sin(theta) * amplitude
正方形是
sgn(sin(theta)) * amplitude
现在三角形使用非循环 FFT,如下所示:
((8 / pow(M_PI,2)) * (sin(theta) - sin(3*theta)/9 + sin(5*theta)/25)) * amplitude
但我无法弄清楚锯齿波,我试过2*(theta - floor(theta) - 0.5)
但它出现了混叠和失真(不是来自剪辑)。我现在应该用傅里叶变换级数来构建它,但我不知道如何在 C 中实现它。
有什么帮助吗?