入力が正弦波で生成されるオーディオプロセッサとアンドロイドを実装しようとしています。その後、いくつかの効果(エコー、歪みなど)が実装されるため、スレッドとバッファリングに関するアプリケーションをどのように設計すればよいですか。
従うべきアーキテクチャがあれば助けてください
入力が正弦波で生成されるオーディオプロセッサとアンドロイドを実装しようとしています。その後、いくつかの効果(エコー、歪みなど)が実装されるため、スレッドとバッファリングに関するアプリケーションをどのように設計すればよいですか。
従うべきアーキテクチャがあれば助けてください
提案:
ストリーム モード ( ) で AudioTrack オブジェクトを使用し、特殊な非 UI スレッドからAudioTrack.MODE_STREAM
継続的にブロッキングを呼び出すループを使用してデータを供給し続けます。AudioTrack write
そのスレッドは、他のスレッドによってデータが準備される循環バッファーから読み取ります。
内部オーディオ バッファの最小サイズはシステムによって制限されていますが ( AudioTrack オブジェクトの構築結果を必ず確認してください)、データをより小さなチャンクで書き込むことができることに注意してください。これにより、平均レイテンシを短縮できます。
浮動小数点演算、特に三角関数 (サインなど) の計算と浮動小数点/整数変換をリアルタイムで実行することは避けてください。事前にできるだけ多くの波形を準備し、それらを循環テーブルに保存します。最終ステップまで、PCM 振幅を浮動小数点形式で保持します。
Gstreamer が android に移植されました。これは、多数のフォーマットを処理し、リアルタイムで再生、トランスコード、エフェクトを作成するためのフレームワークです。
既存のものから正しいパラメータ化を見つけることができない場合、独自のフィルタを簡単に構築できます。