这学期,笔者在制作一款音乐应用中需要用到多种乐器,纠结于程序包的大小后选择了MIDI音乐,查阅大量资料和博客后实现成功。讲制作过程中的理解分享如下,如有纰漏,望包涵并纠正。
一、Android平台音乐媒体以及MIDI音乐现状
目前Android平台使用的音乐媒体格式多为MP3、OGG、WAV等常用格式,,常用铃声格式为MP3、WMA格式音频文件。WAV为源声音文件,无损,音质高,文件大。MP3、OGG等均为压缩音频,需要特定的编解码器支持。
这是Android支持的媒体格式列表链接:
http://developer.android.com/guide/appendix/media-formats.html
虽然MP3、OGG等常用音乐格式可以满足大部分应用和游戏开发,但如果程序中涉及大量的音频文件,使用这些格式后的程序包文件肯定是非常大的,比如涉及多种乐器的音乐程序和大型游戏。其实还有另外一种更加常用、更加强大的音乐媒体格式,那就是MIDI音乐。关于MIDI音乐相关介绍,请各位看官自行搜索。个人觉得百度百科解释的非常好,链接如下: http://baike.baidu.com/view/7969.htm
MIDI仅仅是一个通信标准,它是由电子乐器制造商们建立起来的,用以确定电脑音乐程序、合成器和其他电子音响的设备互相交换信息与控制信号的方法。MIDI系统实际就是一个作曲、配器、电子模拟的演奏系统。从一个MIDI设备转送到另一个MIDI设备上去的数据就是MIDI信息。
MIDI数据不是数字的音频波形,而是音乐代码或称电子乐谱。也就是说MIDI数据中没有声音数据,有的只是电子乐器的控制信息,需要借用电脑或者手机的声卡或者其他专业声卡来发声,音质肯定与声卡的质量相关。
MIDI音乐支持其实比MP3、OGG等更好,甚至Nokia仅能打电话和发短信不能播放MP3的低端机都支持MIDI,但像iPhone高端机却不支持。
Android平台对MIDI的支持情况其实也不好。具体请参考如下链接:
http://home.midishow.com/home.php?uid=5886&do=blog&id=15&mod=space
http://blog.umito.nl/index.php/2010/05/07/midi-on-android/
关于JetPlayer,平台下的Samples有个程序范例JetBoy。同时参考如下文章:
JetBoy游戏深入解析(中)--JetPlayer类解析:http://www.moandroid.com/?p=1333