pcm データから画面に波形を喜んで描画しています。波形の高さが表示領域の高さを超える場合があります。
pcm データのセット全体をリッピングして、見つかった最大値から正規化することなく、波形プロット データが特定の高さを決して超えないようにするにはどうすればよいですか?
pcm データから画面に波形を喜んで描画しています。波形の高さが表示領域の高さを超える場合があります。
pcm データのセット全体をリッピングして、見つかった最大値から正規化することなく、波形プロット データが特定の高さを決して超えないようにするにはどうすればよいですか?
正規化された表現を使用することは、まさにあなたがすることです。
実装によって提供される制約である場合は、特定の範囲の最大値をだまして事前に計算することができます。
残念ながら、サンプルごとに調べてそれを見つけることなく、信号の実際の最大値を見つける良い方法はありません。
PCMサンプルのビット数がわかっている場合は、スケーリングが[によって制限されると想定できます-2^(bits-1), 2^(bits-1)-1]
。それは信号が行くことができる絶対的な最高と最低になります。ただし、これは最も悲観的なスケーリングです。たとえば、16ビット信号が範囲外になることはない[-1024,1024]
場合、多くの表示領域(ADCダイナミックレンジも同様ですが、それは別の話です)を放棄します。 。
信号を動的にスケーリングする場合は、信号がクリップされるたびにグラフのスケールを大きくするだけです。より洗練されたアプローチは、必要に応じてアップスケールすることですが、その後、時間の経過とともに最大スケールをゆっくりと下げます。最大スケールを緩和する良い方法は、各反復で最大スケールに.98(または他の数値<1)を掛けるような、指数関数的減衰です。