我正在构建一个iOS合成器,使用音频单元,基本上围绕this构建。
我已经支持一个简单的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中实现它。
有人帮忙吗?
答案 0 :(得分:2)
除了在求和中包括偶次谐波项和奇次谐波项以及使用等于每个项的谐波次数的除数外,您可以像对三角波一样使用截断的傅立叶级数作为锯齿波。而不是这样的广场。
您使用的术语越多,系列近似看起来就越像锯齿,但它将包含的频率更高。