2012-01-08 19 views
5

まず、同じ周波数ではあるが反対の位相の2つの正弦波トーンを生成し、Androidのステレオモードで左右のチャンネルに別々に再生する必要があります。再生は完全に同期している必要があります。その結果、左右のチャンネルのサインが「ミラーリング」されます(左チャンネルのサンプル値が120の場合、右チャンネルのレベルは-120になります)。AudioTrackで左右のチャンネルを別々に再生する方法は?

私は、この種の設定がどのように機能するかの証拠は見つけられていません。左と右のチャンネルで別々に同時に再生するために、2つの別々のトーン/サンプルバッファーをAudioTrackに送る可能性はありますか?そうでない場合は、最終結果を達成するための他の解決策が高く評価されます。

あらかじめ生成されたステレオウェーブファイルを使用して、AudioTrackでストリームすることが1つの選択肢と思われますが、これは解決策としてはあまりにも柔軟性がないようです。同時に、AudioTrackが "リアル"ステレオモードでこれらのプリレコーディングされたオーディオファイルを再生することができれば、生成されたサウンドでも同じことが可能になると期待します。

+2

ありがとう:「あなたは 、インターリーブがある左右のステレオオーディオ用に別のバッファを必要といけないあなただけの左右 左右でバッファを満たすステレオ出力リレーするために。」。これは実際にはうまくいき、AudioTrackでテストされています – rar

答えて

0

これは、サンプルが2つのみであるため、機能します。

最初にSoundPoolを確認してください。これは、メモリに完全にロードされたときに良いパフォーマンスが必要なトラックがある場合に便利です。しかしながら、これは、メモリに記憶されているトラックのサイズの限界であるという欠点を有する。私が最初にこれを使用したとき、2 x 4Mbのファイルをストリームに入れてみました - これは良い考えではありませんでした。あなたは、ストリームごとに左右の音量を設定することができますどのように

setVolume(int streamID, float leftVolume, float rightVolume) 

お知らせ:

SoundPoolは、この機能を持っていますか?ストリーム1の場合は、左の最大音量を、次にストリーム2の音量を最大音量にすることができます。

私は再生するファイルと希望の音量でストリームをセットアップしてから再生します。

簡単なチュートリアルAudioTrackがSoundPoolと同様の方法を有するhttp://www.vogella.de/articles/AndroidMedia/article.html

+0

OK私はあなたが何を意味しているのか理解していますが、SoundPoolは私のコードでサウンドを生成し、再生バッファをオンザフライで送るためにAudioTrackとMODE_STREAMを使用する必要がある。 AudioTrackはCHANNEL_OUT_MONOとCHANNEL_OUT_STEREOの設定をサポートしていますが、左右のチャンネルに異なるコード生成音を実際に供給するためのオプションは見つかりませんでした。 – rar

5

で見つけることができます。あなたが別のデータと同時に右/左チャンネルを再生したい場合には

AudioTrack.setStereoVolume();

を呼び出します。この目標を達成するには、データを処理する必要があります。 16Bit PCMでステレオモードを選択すると、データは左に1バイト、右に1バイトです。たとえば、次のチャンネルを左

は、再生したい:12、23、34、45

右チャンネルを再生したい:54、43、32、21、同時に、左チャネルと。 AudioTrack.write(データ)を使用し、そして{12、54、23、43、34、32、45、21}

データは、として生成されるべきです。それは完全にあなたの目標を満たします。 Androidの開発者はユーザーグループでniko20へ

+0

これは正しいですか?出力バッファに沿って各チャンネルの要素を入れ替える必要がありますか? –

+0

私はモノラルオーディオ用にシングルチャンネルをしようとしていますが、これは現在public setVolume(float gain)で行われています。APIレベル21で追加このトラックのすべてのチャンネルで指定された出力ゲイン値を設定します。このAPIは、setStereoVolume(float、float)よりも優先されます。これは、モノラルに、そしてステレオ以外のマルチチャネルコンテンツにも拡張できます。それで今私はどのようにコントロールするのだろうか? – VMMF

関連する問題