0

ユーザーがリードボーカリストを曲から外すことができるAndroid用の音楽プレーヤーアプリを作成しようとしています。

関連する数学は次のようになります。

amount_of_removal * ((left * (balance)) - (right * (1 - balance))) + (1 - amount_of_removal)*(left + right)

AudioEffectオーディオ ストリームにカスタムを適用する方法はありますか? 自分でファイルを開いてデコードしても?

4

1 に答える 1

1

さて、この質問を投稿したときに、かなり重要な情報を見落としていたようです。

その中でも重要なのは、ほとんどの音楽フォーマットがいわゆる「非可逆」であるという事実です。これは、オーディオ波形を構成するすべてが保存されていないためです。MP3、たとえば、基本的には波形をその成分周波数に分解しますが、最も大きなものだけを保存し、小さなものを破棄します。

これを、いくつかのスタイルの音楽では、リード シンガーが最も大きな部分であるという事実 (特に歌っている場合) と組み合わせると、より静かな周波数が必要になるため、音質に問題が生じます。リードシンガーがそれを隠すためにそこにいない今。

つまり、読み取りに最適な形式は実際にはロスレス形式であり、おそらく最も簡単な形式の 1 つは古代の WAV ファイルです。

全体として、私がやりたいことを行うために必要な手順は、おそらく次のようなものです。

  1. オーディオ ファイルをロードします (この回答で指定されているように、 WavFileクラスを使用)
  2. 一度にバッファフルのファイルにカスタム オーディオ エフェクトを適用します。
  3. 処理されたオーディオでいっぱいのバッファをサウンドカードに渡します (この例のようなものを使用)

ここからわかる唯一の欠点 (これはまだテストしていません) は、おそらくパフォーマンスの問題です。ストレート Java を使用すると少し遅くなる可能性があります。

于 2014-09-19T04:19:15.067 に答える