私はサウンドを生成するアプリを構築しています (現在はほとんど実験的なものです)。それを Android フォンで再生します。
今のところ、単純な正弦波サウンド (440 Hz) を再生しようとしています。最初は Audiotrack で試しましたが、バッファ アンダーランが発生しました。そこで、OpenSL を調べてみることにしました。
今、私はこれに関する多くのチュートリアルとブログ投稿を読み、最終的には Android Simple Buffer Queue を備えた OpenSL エンジンを使用して独自の実装を作成しました。
バッファ コールバックで、新しいバッファ データを生成してキューに追加しますが、遅延はオーディオ トラックよりもはるかに悪くなります (各バッファ間のギャップが聞こえます)。
私の質問は、OpenSL で生成されたサウンドのベスト プラクティス/アーキテクチャは何ですか? 別のスレッドでバッファーを埋める必要がありますか (その場合、バッファー コールバックとの同期プロセスが必要です)。
生成されたサウンドの OpenSL ES に関するチュートリアルはまだ見つかりません (ほとんどは、オーディオ ファイルの再生またはオーディオ入力のオーディオ出力へのリダイレクトに関するものです)。