同时播放两段wave音频,而不影响声音质量,不出现噪音等类似于和弦的播放;假如有 wave 数据块 A 、B、 C让他们同时进入wave设备播放:
A --
|
B -- ---play
|
C---
使用API:Waveform Audio FunctionswaveOutWrite
waveOutProc
等
A --
|
B -- ---play
|
C---
使用API:Waveform Audio FunctionswaveOutWrite
waveOutProc
等
即时你有多个CPU能同步处理多个播放过程,但你声卡终究只有一个.
在同一时刻声卡也只能播放一个声音吧.
你这个混音能达到和谐的效果么?
谢谢!
如果不用directsound 呢,
就是想知道如何叠加A\B\C三个buffer中的声音数据,而不失真!如果直接叠加会失真,因为溢出了!我的配置是:采样率是22050、16bit、1通道
混音算法比较简单。直接将每个采样值相加,人耳能够分辨出两种声音。
但是要注意的是直接相加很可能会造成一段采样值溢出,因此要按这段采样值
相加之后的最大值计算出比例因子,每个值乘这个因子之后再相加,就不会有
噪音。