1

PCM 形式の波形をサウンドカードに送信するために XAudio2 をいじっていますが、この質問について考えさせられる問題に遭遇しました。MATLAB で 440 Hz の正弦波の .csv ファイルを作成し、最初は 1 KHz (1 秒間) でサンプリングしました。

次に、私の C++ プログラムはそのファイルをロードし、バッファをサウンドカードに送信します。問題は、出力が歪んで (クリップされて)、まったく正弦波のように聞こえなかったことです。それから、おそらくサウンド カードが 1 kHz のサンプリング レートを好まないのではないかと考えたので、サンプリング レートを 2 倍にしたところ、突然すべてがうまくいきました。

これが本当に問題であったことを確認する方法はありますか?

4

1 に答える 1

3

1kHz のサンプル レートでのナイキスト周波数はわずか 500Hz です。ひどい音だったのに、まったく驚かない。サンプルレートが 1kHz で、500Hz のサウンドを再生したとします。出力は方形波になります。- + - + - + 十分なサンプルがないため、その間に何もありません。ナイキスト周波数に近づくと、その波を複製する能力が低下します。このような低い周波数で聞こえます。

いずれにせよ、サウンド カードをこのように低いサンプル レートで動作させることはほとんどありません。ソフトウェアドライバーが再サンプリングしている可能性が高く、どのような種類のアーティファクトがスローされているかは誰にもわかりません.

少なくとも 11.025Hz など、より合理的な値を試してください。これは 44.1kHz ("CD" サンプル レート) を 4 で割ったもので、多くのサウンド カードが直接サポートしています。ほとんどすべてのカードが 22.05kHz を実行するはずです。

于 2011-07-20T14:36:42.783 に答える