filter - OpenAL同步

标签 filter audio openal blending

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

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

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

我想我会问另一个问题。 OpenAL 是否足够灵活以执行此类技巧?

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

最佳答案

I have two streaming buffers that I want to have playing simultaneously completely synchronized. I want to control ratio of blending between the streams. I'm sure it's as simple as having two sources playing and just changing the their gain

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

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));
}

关于filter - OpenAL同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5252127/

相关文章:

javascript - 使用flask和render_template选项无法获取所需的html页面

java - 在 java 中使用 AudioFormat 播放波形文件

java - OpenAL中是否可以直接选择录音设备?

c++ - 使用 OpenAL 和 FFMPEG 流式传输音频

angularjs - 如何过滤标签输入按键时的自动完成结果

java - For 循环替换 : For Loops to Filters

python - 如何保存同时播放两个轨道的wav文件?不同体积的

c++ - 在带有 XCode 4.1 的 Mac OS X Lion 上找不到 OpenAL 的 AL/al.h

javascript - 使用 ng-repeat 搜索以 2 列的行显示的数据

java - 使用 Elasticsearch 搜索后应用过滤器