2012-05-01 5 views
2

現在、サンプルレート44100Hzの16ビットウェーブファイルをロードする小さなプロジェクトで作業しています。通常の再生では、オーディオはうまく見えますが、音量を変えるために振幅サイズのようなものを再生し始めると、少し静的なノイズが出ます。サンプルの音量を16bit PCMから変更することで発生するノイズをどのように減らすことができますか

私がしていることは、この16ビットタイプの場合にバッファからサンプルを取得し、これを-1から1の範囲のfloatに変換して、ミキシングやその他のエフェクトを開始することです。これで私は音量も変えますが、1倍しても同じ出力が得られますが、音量を変えるとすぐに静音が聞こえます。それは1.0を超えて行くと1.0より下に行くときに起こります。そして、スケールが大きくなったり小さくなったりすると悪化します。

誰でもノイズを低減または除去する方法はありますか?

+0

ゼロクロスポイントでゲインを変更するだけですので、低周波成分の急激な変化による高調波の発生が最悪の場合は避けてください。 –

+0

もっと簡単に説明できますか?私はまだこの問題に関して最も高いレベルの理解ではない。ゲインを変更するときに低い周波数を無視することについて話していますか?ボリュームを適用する前に時間 - >周波数ドメインから行ってください。 – Yonathan

+0

私は、音量を上げたり、複数のチャンネルをミキシングしようとすると、その部分が推測できます。数学のオーバーフローです。あなたのコードを私たちに教えてください。 –

答えて

1

私は文字を使用してデータに行くことによって異なるビットのデータ型を抽象化して、欠陥を発見しました*、私は正しいデータ型ポインタにその使用法をキャストしませんでした。これは、データを与えるときにバイトが切り捨てられたことを意味します。これにより、雑音や音量のバグが変わってきました。

私の実装には欠陥があり、オーディオデータを扱う際にはこれについては考えません。同じ種類のことをやっている人のためのヒント、データを変更するときは目を覚まし、抽象化を使用するときはデータの種類を確認してください。

多くのおかげで私を助けてくれて、リンクは本当に面白かったし、オーディオプログラミングに関する多くのことを私に教えてくれました。

4

「静的」(「クリックとポップ」とも呼ばれます)は、出力信号の不連続の結果です。ここでは不連続の完璧な例です:

http://en.wikipedia.org/wiki/File:Discontinuity_jump.eps.png

あなたが再生するシステムにオーディオのバッファを送信した後、あなたは1.1で、すべてのサンプルを掛け、次のバッファのために、あなたが不連続を作成することができる場合。たとえば、[-0.5、0.5]の値を持つ正弦波を含むバッファを考えてみましょう。この波の一部を出力デバイスに送り、最後のサンプルは0.5になります。

今度は、次のバッファに1.1を掛けて音量を調整してみましょう。新しいバッファの最初のサンプルは0.5に近づきます(前のサンプルは0.5だったため)。 1.1を掛けて0.55を得る。

0.05から1つのサンプルへの変更は、おそらくクリックまたはポップのように聞こえるでしょう。これらを十分に作成すると、静的に聞こえるようになります。

解決策は、ボリュームの変化をバッファに「ランプ」させることです。たとえば、100サンプルのバッファに1.1のゲインを適用し、以前のゲインが1.0だった場合、ゲイン1から100サンプルすべてをループし、最後のサンプルに到達するまでゲインをスムーズに増加させ、あなたの利益は1.1になるはずです。

あなたはjuceでこのコードを見ての例をしたい場合:: AudioSampleBufferは:: applyGainRamp:

http://www.rawmaterialsoftware.com/api/classAudioSampleBuffer.html

+0

私は-1から1の範囲に私の 'クリッピング'のためにこれをやっていますが、私は本当に利得の変更のためにこれを行うと思ったことはありません。私はコードの例を見ていきます、ありがとう! – Yonathan

+0

説明を簡単にすると、現在のプロジェクトは次のとおりです。http://www.x3a.com/ja/AADIO.rar 実行中に再生を押すと、音量スライダが変わるとノイズが発生します。私はまだ何が起こっているのか分からない。 – Yonathan

+0

https://github.com/vinniefalco/AppletJUCEの「SimpleDJ」のボリュームスライダをご覧ください。 –

関連する問題