生成正弦扫频波

use*_*339 -1 c signal-processing sound-synthesis

如何制定生成正弦扫频波的方程。我对信号处理很陌生,在网上找不到太多有关生成正弦扫频波的主题。请向我指出一些可用于生成方程式并在代码中使用的来源。谢谢。

Pau*_*l R 7

最简单的方法是使用相位累加器- 这是一种简单的方法,并且可以确保频率变化时的相位连续性。

生成一个固定的频率的正弦波,您可以这样做(伪代码):

//
// A = sine wave amplitude
// fs = sample rate (Hz)
// f = sine wave frequency (Hz)
//
phi = 0;                      // phase accumulator
delta = 2 * pi * f / Fs;      // phase increment per sample
for each sample
    output = A * sin(phi);    // output sample value for current sample
    phi += delta;             // increment phase accumulator
Run Code Online (Sandbox Code Playgroud)

对于扫频正弦波,您可以线性增加频率,即delta线性增加。

//
// A = sine wave amplitude
// fs = sample rate (Hz)
// f0 = initial frequency (Hz)
// f1 = final frequency (Hz)
// T_sweep = duration of sweep (s)
//
phi = 0;                      // phase accumulator
f = f0;                       // initial frequency
delta = 2 * pi * f / Fs;      // phase increment per sample
f_delta = (f1 - f0) / (Fs * T_sweep);
                              // instantaneous frequency increment per sample
for each sample
    output = A * sin(phi);    // output sample value for current sample
    phi += delta;             // increment phase accumulator
    f += f_delta;             // increment instantaneous frequency
    delta = 2 * pi * f / Fs;  // re-calculate phase increment
Run Code Online (Sandbox Code Playgroud)