《《游戏音效编程》PPT课件.pptx》由会员分享,可在线阅读,更多相关《《游戏音效编程》PPT课件.pptx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第10章 游戏音效编程浙江大学软件学院梁秀波Email:声音基础常见的声音引擎简介Cocos2d-x中的音乐与音效游戏音效实例编程小结主要内容声音:50Hz-22,000Hz之间的压力波-本质上而言是正弦波,具有波幅和频率等属性声音的低频部分不仅仅被耳朵,也可被身体所感知人感知到声音从某一地方发出-不能精确地定位出音源捕捉声音通过声卡上的ADC(模拟数字转换器)来完成 声音基础什么是声音声音基础什么是声音声音表现为波形,可以记录、保存以及精确播放声音(Sound)不等同于音乐(Music)PCM(脉冲编码调制)播放所有交互、电影、游戏中所需要的.声音可以被合成出任意效果声音基础什么是声音每次采
2、集的数据称为采样(Sample)每秒钟采样次数称为采样频率(Sample Frequency)通常的采样率:11025Hz,22050Hz和44100Hz(44.1k HZ,CD音质)采样品质:类似于图像像素的位深,通常为8bit和16bit。声音基础什么是声音声音基础什么是声音声音基础什么是声音每秒钟CD品质的声音信号占据的空间是176KB,3分钟长度的歌曲容量是31MB 音频的压缩和解压缩:利用时空连贯性、查找表等技术。-有损压缩:MPEG Layer 3(MP3):把部分并不需要的信息过滤掉,例如一些人耳听不到的高频率信号,或者一些无用的环境噪音。-无损压缩:RLE,运长编码声音基础声音
3、的编码存储采样(Sampling)-通过任意方式录制声音合成(Synthesis)-模拟合成-调频合成-波表合成声音基础对声音的操作模拟合成-不同频率波形的简单叠加-从已有波形中选择-叠加后进行滤波调频合成-通过改变频率调整输出波形波表-录制下来的每种乐器的声音,以数字化形式存放,通过选择哪件乐器演奏、音量和音速、混合和平移参数等来“奏响”记录下来的声波来合成出新的声音。声音基础对声音的操作混音:同时播放多个声音(背景音乐,语音,事件反应音等)最简单的方法就是将两个声音样本的数值依次相加起来,如图所示:声音基础对声音的操作MIDI-Musical Instrument Digital Inte
4、rface(乐器数字界面)用于控制音乐合成器-合成细节由合成器决定MIDI数据-仅仅是一个事件的列表,描述了一个声音卡或其他播放设备要产生某种声音的特定的步骤-每一个描述乐器演播的动作的字都赋给一个特定的二进制代码。要奏响一个音符,你要发出一个“音符开”(Note On)消息,然后对该音符赋以一个“速度”,用以判断该音符能奏多响。-其他控制包括选择哪件乐器演奏、混合和平移声音以及控制电子乐器等声音基础对声音的操作Bfxr游戏音效生成器支持在线使用和下载使用如图就是Bfxr主界面声音基础简单的音效制作工具如图就是Bfxr音效混合器的选项界面声音基础简单的音效制作工具BASS:Windows平台下
5、的常用声音引擎,BASS支持多种开发语言MikMod:跨平台,支持几乎所有的流行音频格式的免费软件FMOD:支持几乎所有的开发平台ModPlug:非常简单的引擎,提供普通的声音的特效处理常见的声音引擎简介Miles Sound System:快速开发工具,也是目前最好的音频开发库EAX:“环境音效果扩展”(Environmental Audio Extension)DOLBY DIGITAL ENCODING:杜比编码是专业的音频开发工具常见的声音引擎简介游戏中的声音一般分为两类背景音乐:长度较长,频率低,同一时刻只能播放一首声音特效:长度短,频率高,同一时刻可以播放多个音效CocosDens
6、hion:Cocos2d-x中音效引擎库在游戏的制作过程中,只需引入SimpleAudioEngine类即可Cocos2d-x中的音乐与音效Cocos2d-x在不同的开发平台下所支持的音乐与音效格式有所不同,表9-1和表9-2列出了在不同平台下Cocos2d-x所支持的音乐与音效格式。Cocos2d-x中的音乐与音效平台平台支持格式支持格式Androidmp3、mid、ogg和waviOSAac、caf、mp3、m4a和wavWindowsmid、mp3和wav平台平台支持格式支持格式Androidogg和waviOScaf和wavWindowsmid和wavCocos2d-x所支持的音乐格式
7、 Cocos2d-x所支持的音效格式 音乐与音效的预加载背景音乐的预加载(preloadBackgroundMusic)游戏音效的预加载(preloadEffect)音乐与音效的播放与停止播放游戏背景音乐(playBackgroundMusic)播放游戏音效(playEffect)停止播放游戏背景音乐(stopBackgroundMusic)停止播放游戏音效(stopEffect/stopAllEffects)Cocos2d-x中的音乐与音效Cocos2d-x中的音乐与音效示例/播放背景音乐SimpleAudioEngine:getInstance()-playBackgroundMusic(
8、LuckyDay.mp3);/停止播放背景音乐SimpleAudioEngine:getInstance()-stopBackgroundMusic();Cocos2d-x中的音乐与音效示例/播放游戏音效id1=SimpleAudioEngine:getInstance()-playEffect(gem-0.wav,true);id2=SimpleAudioEngine:getInstance()-playEffect(FX081.mp3,true);/停止播放所有游戏音效SimpleAudioEngine:getInstance()-stopAllEffects();/停止播放指定的游戏音效
9、SimpleAudioEngine:getInstance()-stopEffect(id1);音乐与音效的暂停与恢复播放与游戏音乐、音效的播放与停止的实现方式类似暂停播放(pauseBackgroundMusic、pauseEffect、pauseAllEffects)恢复播放(resumeBackgroundMusic、resumeEffect、resumeAllEffects)值得注意的是,在一般情况下,暂停播放游戏的背景音乐的函数和恢复播放背景音乐的函数,是在Cocos2d-x的AppDelegate类的事件处理函数中被调用。Cocos2d-x中的音乐与音效其他成员回放游戏的背景音乐(
10、rewindBackgroundMusic)判断当前是否播放游戏的背景音乐(isBackgroundMusicPlaying)判断游戏背景音乐是否可以播放(willPlayBackgroundMusic)获得游戏的背景音乐的音量(getBackgroundMusicVolume)设置游戏的背景音乐的音量(setBackgroundMusicVolume)获得所有游戏音效的音量(getEffectsVolume)设置所有游戏音效的音量(setEffectsVolume)将预加载游戏音效从缓存中删除(unloadEffect)关闭SimpleAudioEngine类对象实例(end)Cocos2d
11、-x中的音乐与音效设置游戏背景音乐的音量大小Cocos2d-x中的音乐与音效示例/获得滑动条的值float bgVolume=bgVSlider-getValue();/设置音量SimpleAudioEngine:getInstance()-setBackgroundMusicVolume(bgVolume);游戏简介-实现一个简单模拟钢琴的游戏,通过点击不同按键产生不同的声音效果。-辅助工具:CocosStudio UI 编辑器CocosStudio 动画编辑器游戏音效编程实例游戏制作步骤-使用CocosStudio UI 编辑器编辑实现游戏钢琴界面并加载,每个按键就是一个按钮-使用CocosStudio动画编辑器编辑实现小喇叭动画并加载-为钢琴按键绑定游戏音效,按下按键就会产生相应的声音效果游戏音效编程实例游戏最终效果图 说明:游戏详细设计文档在实验手册中给出游戏音效编程实例声音方面的基础理论知识,包括声音的生成过程、编码存储及合成,并介绍了几种常见的声音引擎。Cocos2d-x提供的音频引擎库CocosDenshion,及其核心类SimpleAudioEngine类,简化了游戏中的音效编程的复杂性。小结