オーディオ入力の線形スケーリングを各チャンネルで同じスケーリングで実行しようとしています。スケーリング音Java
全体の効果は、入力ストリームがサイレントになるまで振幅が徐々に減少することです。したがって、私の最初のサンプルは同じままで、最後のサンプルは振幅の点で0になります。私はあなたがこれをどのように実装するのだろうと思っていた
これまでのところ、これはスケーリングコードのものであり、16桁の2の補数範囲の間にあるようにサンプルをスケールする必要があるかどうかは不思議でした。
for (int i=0; i<data.length; ++i){ // data[i] is sample in intger form
data[i] = (int) (data[i]*(something/something));
}
特定の要素に合わせることが説明できる場合は役立つでしょうか?
ありがとうございます!
実際の質問は何ですか?スケーリングを正確に行い、振幅を減少させるだけであれば、自動的に16ビットの範囲になります。しかし、あなたのコードは間違っています - なぜ最大値でサンプルを倍数にする必要があります - それは32ビットの範囲とはるかに大きい?ループの最初の繰り返しでゼロで割った場合、どうなりますか?あなたはコードを実行しましたか? –
@erwin bolwidt私の質問はどのように線形に0にスケールするのですか?私は0で各サンプルを分けるだけですか? – Hawwa