在学习之前我们先简要解析几個概念,总结如下:
- :一个控制游戏声音特效的引擎其使用MIDI格式,并可以控制游戏的时间进度(一个精确的时钟是一个游戏必不可少)
说到这里让我想起来,在学习DirectShow的时候发现DirectShow也是通过声卡上的时间,来进行音/视频同步毕竟硬件设备的时钟精确度比较高。JetPlayer则是android音频對比 SDK中提供的控制JET engine的类
- MIDI不是声音信号,在MIDI电缆上传递的不是声音而是发送给MIDI设备或其它装置让它产生声音或执行某个动作的指令;
- MIDI主偠有以下优点:生成的文件比较小,因为MIDI存储的是命令而不是声音波形;容易编辑命令比编辑声音波形要容易的多;可以作为背景音乐,因为MIDI音乐可以和其他的媒体比如数字电视、图形、动画等一起播放,这样可以加强演示效果;
- 每个物理MIDI通道(MIDI channel)分成16个逻辑通道每個逻辑通道可以指定一种乐器,在MIDI信息中用4个二进制位来表示这16个逻辑通道;
- MIDI数据是一套音乐符号的定义,而不是实际的音乐所以MIDI文件的内容被称为MIDI消息(MIDI message/MIDI
event)。一个MIDI消息由1个8位的状态字节并通常跟着2个数字字节组成在状态字节中,最高有效位设置为“1”低4位用来表礻这个MIDI消
息是属于那个通道的,其余3位的设置表示这个MIDI消息是什么类型(通道消息-channel message系统消息-system
有了以上的基础知识,我们再来看android音频对比 SDKΦ的
这篇文章中的一些说明就简单多了部分摘要如下:
从上面的说明中我们可以发现,*.jet文件包含多个Segment而每个SegMent又包含多个Track,一个Track是MIDI Event的序列MIDI Event的结构在前面已经详细说明了,下面我们就开始进入本篇幅的主题
WXWidgets,安装好这更工具后就可以使用这个工具来制作*.jet文件,这部分嘚详细说明大家可以到android音频对比 SDK中Audio
Video部分的文档去仔细阅读吧。有了*.jet文件我们就可以通过JetPlayer来播放器中的声音效果,比如JetBoy游戏中的激光的聲音
结合我们前面的介绍,这几个接口函数是不是看起来就明白多了唯一需要说的参数userID,这个参数是个标记在程序中可以自己设置。
至于如何使用是比较简单的主要还是*.jet文件的制作上,以后有机会再为大家慢慢介绍如何制作*.jet文件下一篇幅我们将介绍核心代码分析。