Nokia6610/7210/6100手机多媒体铃声同时会震动,虽然这个功能很多人都不认可,因为比较费电,但是还是很想从技术上知道其如何实现的问题。
经过一个下午的摸索,终于发现了其中的奥秘。
便把经过写下来,和大家分享一下。如果有不对的地方,欢迎大家批评指正。
一、首先先“废话”几句,说说几个概念的的定义:
1、MIDI
MIDI其实是一种约定:即指定应如何构成音调,以使该音调能够在各种硬件上播放。
2、复音
顾名思义,也就是用于定义一种乐器可同时发出的最大音符数。
3、SP-MIDI——可缩放的复音 MIDI
在“诺基亚声音转换器”里,会显示一个MIDI文件的所有的复音列表。在程序里面,可以给需要转换的原 MIDI 文件添加复音表,使之成为“可缩放的复音 MIDI”。
简而言之,就是经过缩放后,手机可以知道原MIDI文件中哪些频道是最重要的。也就是说,它应该播放哪些频道以及略去哪些频道。(有点像突出主旋律或重点音的意思)
4、累积式复音
累积式复音值表示将要在手机中播放的频道数。如果您的手机支持同时发出 16 个音符(即所谓的16和弦。可类推到24、32、40和弦等等),则包括在值不大于 16 的累积式复音中的频道适合该手机。
Nokia6610/7210/6100只支持4和弦,所以只能播放累积式复音值小于4的频道。
二、实战带震动的MIDI文件
**准备工作**
首先找来6100(6610/7210同)的原版多媒体文件安装ZIP包。解压缩后,可以看到有个叫Tones的文件夹。
里面有很多.mid文件,相对应的就是手机的多媒体文件夹下的铃声文件。
**初探究竟**
查看这些音乐文件的完整文件名,发现这些文件依旧都还是.mid扩展名,和普通的Midi文件并没有任何区别。
在“诺基亚声音转换器”里将这些.mid文件展开。
以Espionage.mid为例,可以看到其有六个频道,依次为:
频道:累积式复音
2:管乐器(1)4
3:齐奏(2)4
5:吉它(3)4
10:打击乐器(5)4
12:风琴(5)4
16:声音效果(5)4
请注意最后一项—— 16. 声音效果 (5) 4!
觉得这个名为“声音效果”的频道比较可疑。然后再打开另一个MIDI文件Cicada.mid,同样也发现有“16. 声音效果”这一频道。
试验表明,所有这些MIDI带震动的文件都有个共同点,就是都存在“16. 声音效果”这一频道。这个频道里面究竟是什么东东呢?
**实战“震动频道”**
立即安装专业工具CakeWalk Pro Audio 9。在CakeWalk里再打开Espionage.mid,可以看到各个单独的频道及其详细内容。然后选择只播放最后一个频道,听到有轻微的“嗒嗒嗒”的声音。(我目前还不知道是什么乐器发出的声音)进一步猜测就是这个频道的缘故,导致手机在播放自带的MIDI文件时会有震动。也就是说6610在遇到这样一个特殊频道的时候,将震动作为这个频道的“声音”输出。
在CakeWalk中将这个特殊的频道复制出来。然后随便找个MIDI文件,打开,创建一个新的频道,再将这个特殊频道粘贴进来,保存。通过红外线传到6610上,播放。哈哈,果然,这个原本不带震动的MIDI铃声带震动了!
总结:
Nokia6100/6610/7210所标称的MIDI带震动功能,其实是利用手机的震动器来播放MIDI文件中的一个特殊频道。当遇到这个特殊的“声音效果”频道时,用震动作为这个频道的输出。其它的频道依旧还是靠手机扬声器发出。所以,依靠这“隐藏”的频道,可以做到震动随着音乐节拍而起。
另:还有几个有待弄明白的问题:
1、这个特殊频道的音色是用什么乐器发出的?因为如果需要自己制作随音乐震动的MIDI文件,添加这样一条频道时,这是必须要知道的。
2、震动的强弱是靠什么来区别的?
正在进一步研究中……:)