# Re: 废话．．．★○▲．．．(有内文，看看吧)

Posted by Honey on July 30, 1999 at 21:18:02:

In Reply to: 废话．．．★○▲．．．(有内文，看看吧) posted by 北极熊 on July 29, 1999 at 23:22:09:

: 也不算是同时播放啦！就是当1.wav在拨放到一半
: 希望能让2.wav「混音」就是啦！

: 欸！我「说」了半天，你有没有在「听」啊？？
: 1.wav是当背景音乐
: 可是我想用2.wav当音效
: 不要中断
: 也不要让2.wav播不出来
: 也算是要同时播放吧
: 但是不想让某一音效断了就是了．．．

: ((.......
: ............!@#$
: 又说了一堆废话．．．我们真是一丘之貉啊))
原先我还抱着点希望呢
这回可没那样简单搂 可能要用到组合语言去写
在音乐播放的时候 会将档案读入记忆体
你得在记忆体上合成声音

而VB的做法也不是没有 要先将两个WAV档载入阵列假设是A(m) 和B(n)
相信你也知道sndPlaySound可播放记忆体上的声音吧
假设现在播放的是背景音乐C(m) [将A(m )的资料复制到C(m)} 连续播放.
(设A,B,C阵列都是BYTE型态)

当B(n)要播放时 将A(m),B(n)合成成C(m)合成方法是
假设m>n
for i = 44 to n '/*前44bytes是档头 不能这样修改否则不能播放*/
C(i)=A(i) \ 2 + B(i) \ 2
next
然后播放C(m)
看起来很简单对吧 其实未考虑到的部分有很多
如果1.wav是8bit ,11khz
而2.wav是16bit ,22khz
就不能用上面这种方法合成了
你得将1.wav也转成16bit ,22khz这种较高品质(最少要将8bit改成16bit 然后隔一格填入)
用VB转档速度如何我就不说了
还有一个问题 1.wav是播放到第几秒时要播放2.wav呢
sndPlaySound可不会告诉你现在播放到阵列的第几个
你又得另外计算时间 统合这些效果也不会太好
给你些建议
用资源档转成阵列速度会比较快 有问题在问吧
还有下次别用这种口气 停电一整天 心情已经很糟了

Follow Ups:

- 用DirectX Howard 13:52:42 8/01/99 (0)