- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试以多声道(并行)方式在 Windows XP 上播放声音。我在某处读到过用 WinMM 播放平行声音可能是不可能的,但这是我观察到的:
当我调用 WaveOutOpen() 一次,然后多次调用 WaveOutWrite() 时那么声音就不是平行的——它们是排队的。
但是当我调用 WaveOutOpen 时说九次(然后存储九个句柄)然后用九种不同的声音调用九次 WaveOutWrite()并行播放(多 channel )- 即它们是混合的。
它似乎有效,但我不确定它是否可以,因为我没有找到明确说明在任何教程或文档中。
用这种'many WaveOutOpen'的方式播放声音可以吗??
最佳答案
When I call WaveOutOpen() once, and then call many WaveOutWrite() many times then sounds are not parallel - they are queued.
这正是应该发生的事情。 WaveOutWrite 将下一个缓冲区排队。它允许您以小块的形式发送要播放的音频。
But when I call WaveOutOpen say nine times (and then store nine handles to it) and then call nine times WaveOutWrite() with nine different sounds they are played in parallel (multi-channel) - that is they are mixed.
同样,这是正确的,也是意料之中的。这是播放多个同步声音的最简单方法。但是,如果您想要样本精确混合,您应该自己将音频样本混合到一个样本流中,并通过单个 WaveOut 设备播放。
关于windows - 多声道声音与 winmm,许多 WaveOutOpen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7676083/
我是一名优秀的程序员,十分优秀!