さて、この質問を投稿したときに、かなり重要な情報を見落としていたようです。
その中でも重要なのは、ほとんどの音楽フォーマットがいわゆる「非可逆」であるという事実です。これは、オーディオ波形を構成するすべてが保存されていないためです。MP3
、たとえば、基本的には波形をその成分周波数に分解しますが、最も大きなものだけを保存し、小さなものを破棄します。
これを、いくつかのスタイルの音楽では、リード シンガーが最も大きな部分であるという事実 (特に歌っている場合) と組み合わせると、より静かな周波数が必要になるため、音質に問題が生じます。リードシンガーがそれを隠すためにそこにいない今。
つまり、読み取りに最適な形式は実際にはロスレス形式であり、おそらく最も簡単な形式の 1 つは古代の WAV ファイルです。
全体として、私がやりたいことを行うために必要な手順は、おそらく次のようなものです。
- オーディオ ファイルをロードします (この回答で指定されているように、 WavFileクラスを使用)
- 一度にバッファフルのファイルにカスタム オーディオ エフェクトを適用します。
- 処理されたオーディオでいっぱいのバッファをサウンドカードに渡します (この例のようなものを使用)
ここからわかる唯一の欠点 (これはまだテストしていません) は、おそらくパフォーマンスの問題です。ストレート Java を使用すると少し遅くなる可能性があります。