1

OpenAL を使用してノートのピッチ シフトを行っています。例えば

alSourcef(source, AL_PITCH, aPitch);

ただし、これを行うとクリック音が聞こえます。それ以外は、ピッチは完璧で、正しいピッチなどです。これを引き起こしている可能性のあるアイデアはありますか?

4

2 に答える 2

0

私は OpenAL を使用したことはありませんが、他のサウンド ライブラリでこの「アーティファクト」を見たことがあります。通常、トーン ジェネレーターなどを扱う場合、トーンが 100% のボリューム レベルに達するまでにかかる時間の変数があります。

このような:

playTone(400 Hz, 40 dB, 50 ms, 3000 ms).

ここで、400 は Hz、40 dB は音量、3000 ミリ秒は持続時間、50 ミリ秒は音量 0 (または +100dB) でトーンを開始してから 40 dB に到達するまでの時間です。ただ今は言葉が見つかりません。

とにかく、この変数を設定できる場合は、10 ミリ秒程度に設定してみてください。聞くことはできませんが、iPhone で使用したオープン ソースのサウンド ライブラリと、過去に使用した一部の Java/Processing ライブラリの両方で、クリック音が削除されました。

おそらく、基になるコードがスピーカーに接続されたハードウェアをトリガーする方法に関係しているのでしょうか?

于 2010-03-02T22:54:21.017 に答える
0

私はこれについて経験があります。ほとんどの場合、ピッチが高すぎたり低すぎたりするためです。ピッチをシフトすると、波形データの長さが伸びたり縮んだりします。データにストレッチするのに十分なサンプルがない場合、「奇妙に聞こえる」 「長さを短くする(ピッチアップ)場合、再生バッファに時間内にフィードするのに十分なサンプルがない場合、遅延またはジッターが発生します。これは、概念的には再生速度がオーディオの長さの短縮によって増加するためです。主にクリックまたはポッピングはあなたが聞いたものです。

これを防ぐには、シフト範囲を制限する必要があります。ほとんどのサウンドカードでは 0.5 から 2.0 が制限であり、サウンドカードによって異なります。ピッチのシフトは、DSP で高度なスムージングと処理を使用することで改善される可能性があるためです。このような処理を行うには、DSP または CPU の処理能力に依存します。オンボードのインテル HDA を使用して試してみましたが、制限はほとんど 0.5 から 2.0 ですが、X-Fi サウンドカードを使用すると、0.1 にシフトする方が優れています。5.0 は問題ありません。

于 2010-03-06T16:46:46.747 に答える