3

私はオーディオプログラミングに慣れていないので、適切な用語を使用していない場合はすみません...

同時に完全に同期して再生したい 2 つのストリーミング バッファがあります。ストリーム間のブレンドの比率を制御したい。2 つのソースを再生してゲインを変更するだけの簡単なことだと思いますが、2 つの単一チャネルの代わりに 2 つのチャネルをバッファリングするなどのトリックを行っている人について読んだことがあります。次に、単一のソースから再生しますが、チャンネル間のブレンドを制御します。私が読んだ記事は OpenAL に関するものではなかったので、私の質問は次のとおりです。これは OpenAL でも可能ですか?

このようにする必要はないと思いますが、今は興味があり、設定方法を学びたいと思っています。alFilter をセットアップすると思いますか? Creative のドキュメントには、「データの複数のチャネルを含むバッファは、3D 空間化なしで再生されます」と記載されています。これを読むと、バッファレベルでプリパスが必要であり、ソース出力にモノチャンネル信号をブレンドする必要があると思います。

別の質問をすると思います。OpenAL は、このようなトリックを行うのに十分柔軟ですか?

ストリームを手動でデコードするので、バッファにフィードする前にブレンドを自分で行うのがいかに簡単かを理解していますが、ストリームの 1 秒ほどがバッファリングされているため、ブレンド係数をリアルタイムで変更することはできません。 .

4

1 に答える 1

0

同時に完全に同期して再生したい 2 つのストリーミング バッファがあります。ストリーム間のブレンドの比率を制御したい。2 つのソースを再生して、そのゲインを変更するだけの簡単なことだと思います。

はい、そうすべきです。あなたはそれを試しましたか?なにが問題だったの?

ALuint source1;
ALuint source2;
...

void set_ratio(float ratio) {
    ratio=std::min(ratio,1);
    alSourcef (source1, AL_GAIN, ratio);
    alSourcef (source2, AL_GAIN, (1-ratio));
}
于 2011-03-26T19:00:50.753 に答える