随笔分类 -  sound

摘要:加入到MP3的革命中MP3是一种音频压缩格式,它通过删除或修改音乐中不易被人耳察觉的部分来使音乐更小,占用的存储空间更少。在项目中使用MP3(.MP3文件)需要使用DirectX中的 DirectShow组件,在这个组件的帮助下,只需几行短短的代码,就能使用任意的MP3文件了(DirectShow也支持其他的媒体文件,比如 WMA,AVI,MPG等)。当然要想使用更多的媒体文件,必须已经在操作系统中安装了解码器。解码器(codec)是一个程序,用于解码或编码一些指定的格式(比如MP3解码器专门解码.MP3文件)。通常可以从发明或者创建这种格式的公司中获取这种格式的解码器。比如,MP3解码器来自 阅读全文
posted @ 2011-02-05 21:27 oayx 阅读(574) 评论(1) 推荐(0) 编辑
摘要:加载音色库(乐器)DirectMusic加载器在使用固有文件或者MIDI文件的时候会自动加载默认的音色库。乐器总是被一组一组地使用,很多组乐器音色的集合被称之为DLS音色库(可下载的音乐)。每组乐器使用三个值编号,它们是:最高有效位(most-significant byte,MSB),最低有效位(least-significant byte,LSB)和组编号。通常播放MIDI文件的乐器组是标准化的,也就是说编号为1的乐器总是钢琴,如果想使用新的钢琴作为乐器,可以从DLS集合中加载。DirectMusic包含了标准的乐器集合,通常称之为GM/GS集合(GM = General MIDI,GS 阅读全文
posted @ 2011-02-05 21:26 oayx 阅读(541) 评论(0) 推荐(0) 编辑
摘要:使用通告“通告”是一种触发机制,当缓存中播放位置达到某个固定的位置时,就会向程序发出通知。有了通告,就可以知道播放什么时候结束,这种机制在比较长的声音中特别有效。通告使用一个叫做 IDirectSoundNotify8的对象,这个程序的作用就是在音频缓存中标记一个位置,然后触发事件通知应用程序,而应用程序可以通过消息循环或者单独的线程进行处理。标记的位置可以是一个缓存中的偏移值,也可以是由宏指定的停止标记,这个表示停止的宏是 DSBPN_OFFSETSTOP。并不是任何偏移值都可以用来作为通告发生的位置,这个值必须和音频的数据块对齐,并且通告的偏移必须按照从小到大的顺序排列。偏移值是不能够共享 阅读全文
posted @ 2011-02-05 21:25 oayx 阅读(409) 评论(0) 推荐(0) 编辑
摘要:使用DirectMusic在DirectAudio 中,DirectSound负责数字音频方面的处理,而DirectMusic则负责Midi文件(Musical Instrument Data Interface,数字音乐格式,.mid作为文件扩展名),DirectMusic固有音乐文件(.sgt文件)和数字录音设备录制的波形格式文件(.wav文件)等文件的播放操作。能体现DirectMusic的强大之处是DirectMusic固有文件格式,一首用DirectMusic固有文件格式制作的音乐包括数个小音乐格式,这些样式还能用不同的乐器组合一个接一个地播放。随机的样式和乐器的选取创造出了随时都在 阅读全文
posted @ 2011-02-05 21:25 oayx 阅读(575) 评论(0) 推荐(0) 编辑
摘要:调整声道平衡所谓声道平衡就是调节左右声道的大小, DirectSound定义了两个宏帮助把声道平衡调节到最左边和最右边,使用DSBPAN_LEFT将声道调整到最左边,使用DSBPAN_RIGHT 将声道调整到最右边。通过调用IDirectSoundBuffer8::SetPan函数可以调节声道平衡。 The SetPan method sets the relative volume of the left and right channels.ParametersdwFrequency Frequency, in hertz (Hz), at which to play the audio 阅读全文
posted @ 2011-02-05 21:24 oayx 阅读(484) 评论(0) 推荐(0) 编辑
摘要:开始使用主音频缓存让缓存在程序启动的时候开始播放可以节省不少处理器时间。因为内存资源是有限的,特别是在硬件设备中,而你使用的数据缓存可能需要任意大小,因此主音频缓冲区和辅助缓冲区使用环形缓存。因为数据缓冲是一个一维数组,所以可以让这个缓冲区头尾相接。这是一个十分强大的技术,利用这个技术我们可以节省大量的内存。声音在进行混音处理后,被送入环形主音频缓存。一旦播放位置到达主音频缓存的终点,声音又从头开始播放,这样声音就被无间隙地连续播放。如果想要使用缓存的这种循环特性,需要指定启用循环播放的特性,若不然当播放到缓冲区终点时,播放就停止了。为了播放缓存中的音频数据(在开启循环选项的情况下播放),需要 阅读全文
posted @ 2011-02-05 21:23 oayx 阅读(413) 评论(0) 推荐(0) 编辑
摘要:音乐就是一系列的音符,这些音符在不同的时间用不同的幅度被播放或者停止。有非常多的指令被用来播放音乐,但是这些指令的操作基本相同,都在使用各种各样不同的音符。在计算机上进行作曲,实际上是存储了很多组音乐,回放时由音频硬件将这些音符播放出来。Midi格式(文件扩展名是.MID)是存储数字音乐的标准格式。DirectMusic 音乐片段(music segments)使用.SGT文件扩展名,其他的相关文件包括乐队文件(band file .BND),这种文件里面包含乐器信息;弦映射表文件(chordmaps file .CDM)包含在回放时修改音乐的和弦指令;样式文件(styles file .ST 阅读全文
posted @ 2011-02-05 21:23 oayx 阅读(845) 评论(0) 推荐(0) 编辑
摘要:接口程序和API(Interfaces 和 API) 图14:各种流行的API技术 现在让我们讨论音频引擎中API编程的应用。可供选择的选项并不多:Windows Multimedia, Direct Sound, OpenAL, Aureal A3D。 不幸的是,Aureal A3D 的驱动仍旧臭虫(bug)连篇,在目前最流行的Windows 2000和XP操作系统,它工作效率的稳定性仍然非常差。 视窗媒体系统(Windows Multimedia system)是从早期的Windows 3.1继承而来的最基本的声音再现系统。它较大的缓冲会造成比较大的延迟,所以在游戏中很少有应用;但是,某 阅读全文
posted @ 2011-02-05 21:08 oayx 阅读(559) 评论(0) 推荐(0) 编辑
摘要:3D 音响技术:声波追踪 VS 缠绕(wavetracing vs reverb) 图9:多种音效技术 在1997-1998年,每个芯片制造商都加大力度开发它们认为有前途的音频技术。Aureal,当时业界的领先者,将赌注放在极限真实的游戏上,它采用的技术为"声波追踪"(Wavetracing)。Creative 则认为使用缠绕的预前运算会更有更好的效果,于是它便开发了EAX。Creative 在1997年收购了Ensoniq / EMU:专门研究开发和制造音效芯片的公司 - 这也是为什么它在当时拥有缠绕技术的原因。Sensaura 出现在市场的时候,它使用了EAX作为基础,命名为Environ 阅读全文
posted @ 2011-02-05 21:07 oayx 阅读(433) 评论(0) 推荐(0) 编辑
摘要:在最佳听音位置(sweet spots)听众能够理想地听到所有的3D音频效果,而在其它的区域声音会发生失真。这样我们在倾听声音的时候就就需要选择正确的位置。对于一对音箱来说,有一个平衡、声带、细节、立体感最好的听音位置,称作Sweet Spot。录音和制作的时候始终在这一点对监听具有重要的意义。Sweet Spot通常位于一对立体声音箱中间,前方数英尺的地方。许多专家认为从高音头的上方到听音者的鼻尖构成一个虚幻的等边三角形,就是Sweet Spot的所在。因为受到许多客观条件的影响,这个位置可能有一些偏移,例如调音台面板的反射就会有影响,音箱的差异也会影响到Sweet Spot,一些音箱具有较 阅读全文
posted @ 2011-02-05 21:06 oayx 阅读(312) 评论(0) 推荐(0) 编辑
摘要:3D Sound vs Surround Sound 在游戏开发中,声音(Sound)的地位并不如图象那么重要。游戏开发者们会发费大部分的时间来增加3D图形的新功能和特效;但是,想要说服他们花更多的时间和金钱,来开发具有高质量音频效果的游戏可以说是非常的困难。同时,在硬件方面,玩家们也更乐意购买最新款式的3D图象加速卡,而对新的声卡似乎也并不是那么感冒。 然而,随着显示卡的发展正在呈现出顶峰的状态,玩家对游戏也表现出越来越挑剔的姿态,认为优秀的游戏除了具有赏心阅目的图象和绚丽的特效外,音效也是不可缺少的,所以现在的形势似乎有急转的趋势 - 用户和开发者比以往任何时候都专著于音频系统的效果。在 阅读全文
posted @ 2011-02-05 21:05 oayx 阅读(271) 评论(0) 推荐(0) 编辑
摘要:现代游戏已经不能没有声音,所以音频引擎成为游戏引擎中不可缺少的一部分.这是一篇介绍现代音频引擎的文章(http://hard.zol.com.cn/labs/2003/0520/60986.shtml).FMOD音频引擎(http://www.fmod.org/)是一个非常不错的音频引擎,其使用也比较简单,下面做一些简单介绍:一.基本准备它是免费的,你可以从它们的主站上下载API等文件.之后,你需要添加头文件和库文件,如下(C/C++):fmodvc.lib 用于 Microsoft Visual C++ 和 Codewarriorfmodbc.lib 用于 Borlandfmodwc.lib 阅读全文
posted @ 2011-02-05 20:59 oayx 阅读(1138) 评论(0) 推荐(0) 编辑