- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 Direct Sound
第9章 DirectSound 建立DirectSound 声音的播放 第一节 建立DirectSound DirectSound提供各种音效处理的支持,如低延迟音、3D立体声、协调硬件运作等音效功能。 建立DirectSound的第一步是确认在VC++中是否已经设定好引用 DirectX头文件与函数库的所在路径,并设定程序连接时必须用到的函数 库与头文件。 除了建立标准的DirectSound对象所需的“Dxguid.lib”与 “Dsound.lib”函数库之外,其中“Winmm.lib”是Windows提供的函数 库,用来处理多媒体文件的函数库,由于加载WAVE文件时会用到,所以 在这里必须将其加入项目的连接中。接下来打开项目中“stdafx.h”,加入要引用 的头文件,在此必须引用“mmsystem.h”、 “mmerg.h”(多媒体登记)、“dsound.h”三个头文件。 DirectSound对象的建立及程序协调层级 一、建立一个代表声卡的DirectSound对象,要在OnCreate函数中加入以下程序代码来建立DirectSound对象。 1. LPDIRECTSOUND pDS; //声明DirectSound对象指针 2. HRESULT result; //声明HRESULT类型变量 3. result = DirectSoundCreate(NULL, pDS, NULL); //声明建立DirectSound对象,NULL使用目前预设的声卡 4. if (result != DS_OK) MessageBox(“建立DirectSound对象失败”); 二、 DirectSound使用到的声卡也是windows控制的资源之一,其它程序随时都可以使用它。必须在建立DirectSound对象后,设定协调层来告诉Windows使用硬件的权限,与其它应用软件如何共享。可以通过以下代码设定DirectSound对象的协调层级: 1. result = pDS-SetCooperativeLevel( m_hWnd, DSSCL_PRIORITY ); 2. if(result != DS_OK) 3. MessageBox(“设定程序协调层级失败); 声音缓冲区 在DirectSound中,播放声音是使用“声音缓冲区”来实现的。 DirectSound中使用的缓冲区有2种类型。 1. 主缓冲区(Primary Buffer),可以看做一个DirectSound,是用来播放声音、产生混音效果的区域,它有一个预设的播放格式(8-bit、44kHz),声音文件在播放时便按照这种格式做输出。主缓冲区是在建立DirectSound对象时自动生成,因此不需要专门建立主缓冲区。但若需要比默认值更好的播放品质,就必须建立主缓冲区并设定其播放的格式 ,并且在前面设定层级时,标志位必须设定为DSSCL_PRIORITY”。对于设定的播放格式,若使用者声卡不支持,并不影响程序的运行, DirectSound会自动按照使用者计算机配置来调整最佳的输出音效。 2.次缓冲区(Secondary Buffer),存储播放声音的文件,可以建 立数个次缓冲区来存放多个要播放的声音文件。当建立了次缓冲区并在 其中加载声音文件之后,便可播放其中的内容,而播放的方式很简单, 只要调用次缓冲区对象的“Play”方法,声音就会自动地送入主缓冲区 中并进行播放。若同时播放多个声音文件,那么各个存储声音的次缓冲 区调用“Play”方法,声音就会送入主缓冲 区中,接着在主缓冲区中对 这些声音进行“混音”操作,最后输出。这样就能在同一时间播放多种 不同声音。次缓冲区中所存储的声音不仅仅可以进行播放,还可以直接 调用相关方法来进行改变音量、调整声道、停止或循环播放等操作。 在DirectSound程序中至少要有一个次缓冲区存储要播放的声音。 而次缓冲区的建立必须要参考加载的声音文件(.wav)的两种信息: “声音文件格式”和“波形资料大小”。 WAVE声音文件的加载 一、WAVE声音文件的格式 WAVE声音文件是符合RIFF(资源交换文件格式)规格的一种多媒体文件,RIFF规格的文件是利用“区块(chunk)”方式存储文件的,包含记录文件格式的“格式区块(fmt)”与文件实际内容的“资料区块(data)”,而这2个区块都是RIFF
文档评论(0)