织梦CMS - 轻松建站从此开始!

罗索

DirectAudio

jackyhwei 发布于 2011-02-25 10:16 点击:次 
DirectAudio是以前的DirectSound和DirectMusic的组合,事实上我们现在用到的还是原来的那两个(DirectSound和DirectMusic),只是可能微软给了他们一个组合后的新名词(DirectAudio),但是实际上的内容还是那些。
TAG:

DirectAudio是以前的DirectSound和DirectMusic的组合,事实上我们现在用到的还是原来的那两个 (DirectSound和DirectMusic),只是可能微软给了他们一个组合后的新名词(DirectAudio),但是实际上的内容还是那些。 毕竟不可能那么快的对那两个DirectX中最复杂的组成部分进行大的改变。对,确实是最复杂的,而且对我这个没有任何音乐细胞的人来说更是如此。
 
DirectSound
 创建DirectSound对象步骤:
  1. 创建DirectSound对象(LPDIRECTSOUND)
  2. 设置协作级别
  3. 创建声音缓冲(LPDIRECTSOUNDBUFFER, DSBUFFERDESC, WAVEFORMATEX)
  4. 把声音数据写入声音缓冲(类似于写入DD中的后备缓冲,只是有两个按照降序排列的指针)
  5. 播放声音
  6. 停止声音
  7. 控制音量(-10000 - 0,其实也就是设置衰减程度)
  8. 调整频率(100 - 100000 Hz)
  9. 调整声道平衡(最左:-10000, 最右:10000)

以 上这些步骤都是比较固定的,其中难点在于4,声音数据那里来?当然我们可以自己乱写一些数据(我就写过一个正弦波形到缓冲区中让DirectSound播 放,其结果就是虐待耳朵),但是最常用的就是从一个已有的WAV文件导入。但是问题是WAV的读取非常的复杂,比BMP文件复杂得多。但是我们可以使用一 些已经有的函数。对于WAV文件格式的研究我想暂时搁浅一下。好,如果不算这个问题,那么DS的使用就基本没有问题了。适当调用7-9的步骤可以播放出来 一些声音上的特效。

这一章不是我学习DirectX的重点,所以我并没有投入学得太多,这里就都简要介绍一下。

DirectMusic

DirectMusic是整个DirectX中纯的COM最初出现在DirectX 6.0中,也是最复杂的,也是最强大的。以下介绍一下如何用DirectMusic来播放一个MIDI文件。

DirectMusic创建步骤:

  1. 初始化COM
  2. 创建一个演奏对象(IDirectMusicPerformance)
  3. 给演奏对象增加端口(IDirectMusicPort)
  4. 加载一个MIDI段(IDirectMusicLoader)
  5. 播放MIDI(由演奏对象IDirectMusicPerformance控制)
  6. 停止MIDI
  7. 检查MIDI段状态
  8. 释放一个MIDI段

这 些步骤确实非常复杂,很多都是需要直接调用COM中的函数,而不是DirectMusic提供的。但是它给我们播放MIDI文件带来了统一和方 便,DirectMusic为我们作了一切。另外需要注意的是DirectMusic如此只能播放一个MIDI文件,也就是当你播放另外一个MIDI的时 候,前一个会自动停止。而不象DirectSound中那样可以同时播放多个WAV。

关于DirectSound和DirectMusic就说这些吧,真的是非常非常少,甚至漏掉了很多东西,但是少并不表示他简单,而事实正是声音部分是最复杂的,但是我不想涉及太多声音的问题,我只是想先照顾画面:)

(warking_xp)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201102/10960.html]
本文出处:blog.163.com 作者:warking_xp
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容