[a cross post from clapton.blogone.net]
clapton_xpAThotmailDOTcom
读者对象:想在Nokia40手机上播放稍微长一点时间声音的人们,高手请先看最下面的
“我的疑问”。
首先~N记?
40系列手机不支持播放midi(那你还说个P啊~我闪),但是可以通过将midi转换为co
m.nokia.mid.sound.Sound类可以识别的数组来进行播放,播放出来的为单个的鸣音,
我称之为“通!”(TONE)。
转换工具:一般就用Nokia?Developer's?Suite?2.1?for? j2me(TM)里的Audio?
Convertor即可,但是实践中发现转换时有缺音的现象,至今不知何故。
转换要求:源Midi文件必须是单轨(Track)单声道(Channel)的,这样在Audio?
Convertor里才能取得一个整个的Channel并转换(因为要是两个以上Channel,你选哪
个?哪个都不是全的)。
这时又有问题了~一首midi好几分钟,转换的时候说太长,或者转的时候没说太长,
但放到手机上播了一半儿就停了。这个问题似乎是Sound类对播放的数组有长度限制,
具体是多少我也没仔细试过。
“那这么多问题怎么解决啊~”
那位同学捧哏捧的恰到好处,有火候~
1。对源midi的处理:最好是自己做啦,要把现有的N个轨的midi都弄到一个Channel里
似乎是mission?impossible哦(反正我没琢磨出来),做好后,把它按每几个小节分
成一段并分别保存。
2。对每一段midi用audio?convertor进行转换,并保存结果
3。在播放的程序里,可以在每一段播放完之后马上开始播放下面一段。具体实现请看
Nokia的JavaDoc。这里有一点需要注意的,如果以Sound的状态来判断何时开始下一段
的播放,在模拟器上没什么大问题,但是放到手机上就会有很明显的延时,解决的办
法可以是在模拟器上播放,记录每一个小段落的开始时间(ms),并写一个线程来判
断何时开始下一段播放。
4。刚才说的丢音的现象呢?
偶然发现有一个东东 http://www.ringtonecreator.info/files/rtcreator.zip,可以
转换很多厂商的铃声,包括nokia的,但是这个东东要$$$,这个试用版只能转换10秒
的midi,多余的被砍掉,而且人家说明了不让用于商业用途哦(狠……那就自己玩玩
吧)。经过试验,这个东东转出来的播放时没有丢音的现象。
我的疑问:
~~~~~~~
1?真的要切开才能播超过一分钟的文件吗?
2?丢音的现象是源midi的问题还是转换工具的问题?
3?如果真的要切的话,有没有方便的按小节或者按秒来切分midi的工具(要求按几下
键盘,点几下鼠标就行的)
4?合并多轨midi至一个channel到底是不是mission?impossible?
工具:
Cakewalk?Sonar:
http://www.cakewalk.com
Nokia?Developer's?Suite?2.1?for? j2me(TM):
http://forum.nokia.com
RingToneConvertor:
http://www.ringtonecreator.info
资源:
http://www.matrix.org.cn/article/7.html
http://www.midifan.com
http://www.forum.nokia.com
鸣谢:
在我郁闷的时候请教过的各位朋友们,我也不知道是否可以公布你们的名字,所以就
笼统的感谢一下吧,呱唧呱唧呱唧~~
有不对的或者多此一举的地方希望大家能够指出,学徒在此鞠躬~呱唧呱唧呱唧呱唧
clapton_xpAThotmailDOTcom