3

我是音频编程的新手,所以如果我没有使用正确的术语,请原谅......

我有两个流缓冲区,我希望它们同时完全同步播放。我想控制流之间的混合比例。我确信它就像播放两个源并改变它们的增益一样简单,但我读到有人在做一些技巧,比如有 2 个通道缓冲而不是两个单通道。然后他们从单一来源播放,但控制通道之间的混合。我读到的文章不是关于 OpenAL 的,所以我的问题是:OpenAL 甚至可以做到这一点吗?

我想我不必这样做,但现在我很好奇,想学习如何设置它。我想设置 alFilter 吗?Creative 的文档是“包含多个数据通道的缓冲区将在没有 3D 空间化的情况下播放。” 读到这个我想我需要一个缓冲电平的预传递,然后让源输出混合单声道信号。

我想我会问另一个问题。OpenAL 是否足够灵活,可以做这样的技巧?

我手动解码我的流,所以我意识到在输入缓冲区之前自己进行混合是多么容易,但是我将无法实时更改混合因子,因为我已经缓冲了一秒钟左右的流.

4

1 回答 1

0

我有两个流缓冲区,我希望它们同时完全同步播放。我想控制流之间的混合比例。我敢肯定这就像播放两个音源并改变它们的增益一样简单

是的,应该是。你试过吗?出了什么问题?

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 回答