通过C中的FFT向wav文件添加1000Hz噪声

时间:2013-06-12 09:39:25

标签: c audio fft

我有一个整数数组(int_16),它包含Wav文件的所有音频数据。 现在我想获得它的“频域”表示并添加1000Hz噪声。

我已经阅读了很多数学但是我没有在C中找到这个问题的真正实现。

我只想发现:

  • 这是合适的库(FFTW?)

  • 如何将FFT应用于我的阵列(我可以使用哪种功能)

  • 我获得了哪种数据及其代表的内容

  • 如何添加1000Hz噪音并重建新的Wav

谢谢!

1 个答案:

答案 0 :(得分:4)

您无需将信号转换为频域,然后再将其转换回来 - 您只需在时域中添加1 kHz正弦波,例如

#include <stdint.h>
#include <limits.h>
#include <math.h>

const float kA = 0.1f;         // amplitude = 10% of full scale (-20 dB)
const float kF = 1000.0f;      // frequency = 1 kHz
const float kFS = 44100.0f;    // sample rate = 44.1 kHz

for (int i = 0; i < N; ++i)    // for each sample
{
    samples[i] += (int16_t)(SHRT_MAX * kA * sinf(2.0f * M_PI * kF * i / kFS));
}                              // add sine wave to signal