王朝网络
分享
 
 
 

游戏中音频的处理

王朝other·作者佚名  2006-12-11
宽屏版  字体: |||超大  

游戏中音频的处理:

声音基础:

原始森林中的一棵树倒下了可是没有听到它到下的声音,那么它发出声音了吗?这个问题看起来比较奇怪,但是这有助于我们理解声音的实质:声音就是在一定介质中传播的一种波,比如说在空气中.对于人来说,只有这种波引起了耳膜的震动才能叫做声音.

大自然中的很多种声音都有一种恒定的波形--正弦波.然而人的声音却很复杂,不是能用简单的正选波能描述的.下图给出了这两种声音波形的图示:

声音的属性:振幅,频率.

声音的采集:

声音的采集与使用不是太复杂,比如说你我们我们想录制一段2秒钟的对话,我们只要以恒定的频率来对声音进行采样然后存储可以了.如果我们以1000HZ的频率来录制的话,这就意味着2秒钟的对话被分成了2000等份.每一等份被称作是样品.对于每个样品我们记录其振幅以用来描述声音的大小.我们在规定的时间点上记录每个样品的振幅就得到了所谓的声音文件.

下图给大家展示了这样一个实例:声音被分成N个样品,正如我们看到的一样,当数字化后,声音也就失去了以前的波形,因为采样点不够多.也许您已经想到了,采样频率越大,我们得到的声音也就越逼真.但是具体多少才是最好的呢?这取决于我们想要得到的质量,以下是我们经常用到的频率:8000,11025,22050,44100HZ,最后一个是CD标准.

前面我们提到了我们采集的是样品的振幅,那么我们如何来存储这些振幅呢?我们可以用8位,或者16位来存储这些振幅.如果用8位也就意味着我们256个等级,而16位的话就有65536个等级.有的时候我们要用更高的32位等.还有一个问题就是我们用几个通道,立体声要用两个通道,一般的声音是一个通道.另外我们还可以利用一些特殊的加密或者压缩的算法对这些数据进行处理.但我们更多的使用.WAV.它是未压缩的.处理起来更加快捷.

音乐使我们疯狂:

技术上的突破使得我们可以获得听觉上的新鲜感.音乐就是一串声音.用合适的停顿,振幅的变化来演奏美妙的音乐.

MIDI:

MIDI是存储音符的标准,MIDI文件里包含了如何演奏的说明(音符的高低,何时停顿等),然后专门的硬件设备就根据这些说明来演奏.MIDI一共使用128种标准设备接口,你可以只使用一部分设备,比如使用设备0(钢琴)等.一首歌曲可以分为多个音轨,每个音轨用特定的设备来播放.我们还可以把一些支持MIDI的乐器跟PC机相连,用乐器来给我们的PC机传送音符,我们的PC机里都有音乐设备接口,可以播放相应的声音.

DirectMusic:

DirectMusic格式与MIDI格式类似,只不过DirectMusic增添了不少的功能,比如说创建动态音乐序列以丰富我们的听觉经历.我们可以改变节拍,乐器等来改变音乐.DirectMusic使用.SGT扩展名.其它相关的扩展名包括:.BND,.CDM,.STY等.当我们用DirectMusic来创作歌曲时,相关的文件都会被DirectMusic自动处理.

DirectX Audio概览:

DirectX Audio有两个组成部分:DirectSound,DirectMusic,在这两个部分中,DirectMusic的变化比较大(与前面的版本相比较),DirectSound几乎跟以前的一样(8.0).

DirectSound是处理数字声音的最主要的部件.DirectMusic处理多种文件格式,MIDI,本身自带格式,WAV文件等,最后把音符信号传给DirectSound来处理,下图来帮助理解:

现在我们已经有了音频处理方面的一些"背景",下面我们就来详细介绍DirectSound跟DirectMusic的使用.

DirectSound的使用:

DirectSound初看起来比较复杂,其实是很容易学也很容易用的.我们创建一个用来跟硬件交互的对象,然后利用这个对象来创建用于存储数据的缓冲区.而对于数据缓冲区中的数据我们可以以我们自己喜欢的方式来播放,比如说我们可以改变节奏,音轨数,改变位数等.

音轨只有两种选择:单通道或者双通道.位数也只限于两种选择:8位或者16位.DirectSound的默认配置是:22025HZ,8位,立体声.我们可以改变这些参数.我们可以改变节奏,改变音量大小,循环播放音乐等.

把数据导入到缓冲区中是我们的工作,对于非常大的数据文件,我们可以创建一个管理流文件的函数:它每次可以移动一部分数据,直到所有的数据都播放完成.为了完成这项工作,我们需要在缓冲区的特定位置做一些记号,当到达这些记号时我们就通知应用程序来更新指定位置的数据.

下面是我们DirectSound中要用到的几个对象:

Interface Description

IDirectSound8 The main DirectSound interface object.

IDirectSoundBuffer8 Primary and secondary sound buffer object. Stores dataand controls playback.

IDirectSoundNotify8 Notification object. Notifies the application when specificpositions are reached within a sound buffer.

下图展示了这几个对象之间的关系:IDirectSound8是最主要的对象,我们可以从它来创建缓冲区IDirectSoundBuffer8.一个数据缓冲区又可以创建自己的通知对象IDirectSoundNotify8.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有