我有一个整数数组(int_16),其中包含Wav文件的所有音频数据。现在我想获得它的"频域"表示并添加1000Hz噪声。
我读了很多数学,但我还没有找到这个问题在c中的真正实现。
我只想发现:
-
哪个是合适的库(FFTW?)
-
如何将FFT应用到我的数组(我可以使用哪个函数)
-
获取的数据类型及其代表的含义
-
如何添加1000Hz噪声并重建新的Wav
谢谢! !
你不需要将你的信号转换到频域然后再返回来做这个-你可以在时域中添加一个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