在对低频声音(如 55Hz 正弦波)进行采样时,我会在某些采样率下听到额外的高频声音,但在其他采样率下则听不到。这发生在 Audacity 和我自己的程序中。例如,我在以 44,100 Hz 采样时同时听到低音和高音,但在以 48,000 Hz 采样时只能听到低音。这可能是什么?
更多信息:
其他输入频率存在高频,它不依赖于幅度。
我正在使用 C++ 中的标准 sin() 函数对正弦波进行采样:
for( int i = 0; i < N; i++ )
{
float time = float(i) / float(samples_per_second);
output[i] = sin( 2*pi * 55 * time ) * 0.5;
}
不知道 Audacity 是如何做到的。使用 Audacity 我生成一个正弦音,然后仅更改项目的采样率将使高音出现/消失。
播放低音鼓声音(在 Audacity 和我的程序中)也会发生同样的事情。我只是通过索引到从 .wav 文件加载的表来对其进行采样。
更多信息:
我注意到高频伪影听起来与以不同速率采样但没有插值相同,如下所示:
float in_idx = 0.0f;
for( int out_idx = 0; out_idx < N; out_idx++ )
{
output[out_idx] = input[ int(in_idx) ];
in_idx += 44100.0f / 48000.0f;
}
因此,Windows 或驱动程序或硬件可能出于某种原因决定不使用插值。