【问题标题】:C - Fourier transform series for a sawtooth waveC - 锯齿波的傅里叶变换级数
【发布时间】:2012-04-02 17:59:15
【问题描述】:

我正在构建一个 iOS 合成器,使用 Audio Unit,基本上是围绕 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 中实现它。

有什么帮助吗?

【问题讨论】:

  • 为什么要使用傅里叶级数?无论如何,锯齿的傅里叶级数在维基百科上给出:en.wikipedia.org/wiki/…
  • @OliCharlesworth 因为标准函数的谐波太多,它开始出现混叠和失真。看过了,就是不明白怎么实现。
  • 三角波与方波具有相同的谐波,只是幅度不同。
  • @OliCharlesworth 我说的是锯齿波
  • 只是我,还是正弦和方波信号一样?

标签: c ios fft audiounit waveform


【解决方案1】:

您可以对锯齿波使用截断傅立叶级数,就像对三角波所做的那样,除了在求和中包括偶次谐波项和奇次谐波项,并使用等于每个项的谐波数的除数而不是这样的平方。

您使用的术语越多,级数近似看起来就越像锯齿,但它包含的高频内容就越多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    相关资源
    最近更新 更多