关于j70c铃声的讨论
从前我一直坚持说j70c是电子合成铃声,而不是三和弦。其实对此没有真正的研究,之所以坚持,主要是sony给我的一封回信里说这手机不是什么和弦。而dondong2002坚持说它是三和弦,看来我现在是要向dondong投降了,哈哈。不过有一点,dongdong并没有拿出明确的依据来说明j70c的铃声类型。
近日,本人学习了使用sony自己开发的ringtone composer,因着sony软件的设计,对于j70c的铃声系统有了进一步的认识!下面给大家介绍一下我的研究成果。由于是循着一些线索有结合了自己的臆测,所以错误在所难免,还望有深究的同志不吝赐教!
1.j70c的铃声结构概览
我们都知道,sony的铃声文件扩展名是.sng,即sony ringtone file。我用一个文本编辑器把文件打开,发现它其实就是一个文本的源文件:(以xiebr提供的“凤阳花鼓”为例)
{
Name:[凤阳花鼓]
Speed:3
Rhythm:4/4
Shift:0
}
@1 W:0 V:2 N:[NoName] A:1 D:127 R:1 S:1
R8C 16R8R 16C 16R4R 16C 16R 16C 16
R 16 |R 16R 16C 16R8R 16C 16R8R 16G 16
A 16G 16R 16G 16R 16 |R 16R 16C 16R8R 16
C 16R8R 16A 16R 16G 16R 16E 16R 16 |R 16
R 16G 16G 16R8G 16R4R 16C 16R 16E 16
@2 W:0 V:2 N:[NoName] A:1 D:127 R:1 S:1
R8R 16R8R 16R 16R4R 16E 16R 16E 16
R 16 |R 16R 16R 16R8R 16R 16R8R 16R 16
R 16R 16R 16R 16R 16 |R 16R 16R 16R8R 16
R 16R8R 16R 16R 16R 16R 16R 16R 16 |R 16
R 16R 16R 16R8R 16R4R 16E 16R 16C 16
@3 W:0 V:0 N:[NoName] A:1 D:127 R:1 S:1
@4 W:0 V:2 N:[NoName] A:1 D:127 R:1 S:1
> G 16R 16> E 16R 16> D 16R 16> E 16R 16> G4.=> G 16
R 16> E 16R 16> G 16R 16> A 16R 16>>C 16R 16> G4.=
> G 16R 16> G 16R 16> G8. R 16>>C 16R 16> A8. R 16
> G 16R 16> E 16R 16> D 16R 16> G 16> G 16> E 16R 16
> D 16R 16> C4.=> C 16
@5 W:0 V:0 N:[NoName] A:1 D:127 R:1 S:1
@6 W:0 V:0 N:[NoName] A:1 D:127 R:1 S:1
@7 W:0 V:0 N:[NoName] A:1 D:127 R:1 S:1
@8 W:0 V:0 N:[NoName] A:1 D:127 R:1 S:1
@9 W:0 V:0 N:[NoName] A:1 D:127 R:1 S:1
大家可以看到其实声音文件就是一系列代码,指导手机里的声效芯片产生音乐。这其实和midi文件驱动声卡发出不同乐器的音乐是机理相同的。再打个比方,如果把声效芯片比作计算机的CPU,那么这个声音文件就象是java源文件生成的一段字节码,由CPU解释执行。现在大家对此有了初步了解了吧?再来!
2. j70c声音文件的结构组织
进一步研究这个声音文件和ringtone composer程序。可以发现,sony的铃声支持三个音源同时发声,或者说支持三种音色的乐器同时发声。因此,如果从手机声音芯片对“和弦”一词的定义来看,这的确是三和弦!在软件里,把每一个音源叫做一个channel。
经过实验,我发现sony定义的这一个channel和midi里的一条音轨是相对应的!即midi文件里每一个谱曲了的音轨(midi track)在转换过程中变成.sng文件的一个channel!
因此我们又有必要继续研究每个音轨内部的情况。
3. sng文件结构进一步剖析和对每个channel的进一步解析
从上面的.sng文件的结构我们可以清晰看到,乐谱部分有9个小部分,分别以@1~@9来标记。显然,对于音乐文件的每一个channel,对应三个小部分的乐谱。这是为什么?这就是音乐里真正意义的三和弦了!我们都知道,在音乐里,一个主音和若干个和弦音同奏时成为和弦。如果主音是do,另有两个和弦音是mi和so,那么这就是一个三和弦。所以,对于一个channel,用三重同奏,显然符合音乐里的三和弦的概念。我们都知道,带和弦的midi是纯粹按音乐的和弦概念来设计的,因此midi可以在不损失乐谱某一部分的情况下被转换为.sng文件。
当然你会发现,有些谱子的一个channel没有完全使用三个重奏,当然这和midi里的谱子必然是对应的。事实上,在实际编谱中,三和弦是可以分解的,并且并非一定要按照前面的定义严格执行,如果是会弹吉他的朋友,这一点一定比我要清楚一百倍!
4. 关于音效芯片和j70c声音的不足
上面介绍的都是些软的东西,我们再来看看j70c的硬的部分,即音效芯片。实验表明,在midi文件在计算机上播放出来的音乐,做成.sng放到手机上就完全是另一种效果!
事实上,在midi还没有形成标准前,就有类似的事情发生。本来在一台计算机上编辑好的midi文件,到了另一台计算机上奏出来就面目全非了!这是因为同样的代码在不同机器的声卡上对应不同的音色。而当midi的标准出台后,这一情况才解决。
j70c的情况也是这个道理。我感觉j70c的音效芯片实在是做得简单!它只支持不超过5种音色,而且这几种音色是固定的!因此当你在midi里听到的是一段单簧管的音乐,转化并传到j70c里奏出来可能就是段哨声!而且j70c不能奏钢琴音色,其音色确实象电子琴!事实上,电子琴就是电子合成发声的!!!
因此我们不的不承认这样一个现实:j70c的音效芯片不是一块上佳的片子,它的音色库实在小得可怜!如果只从声音芯片硬件角度出发,和那些16和弦的手机用的YAMAHA的芯片相比,和支持128种音色及扩展midi的NOKIA
4和弦7系列手机的音效芯片相比,j70c的声音芯片真不是对手!!!相去也甚远!幸好,这样一个尴尬被sony出色的音乐编辑所弥补,因此,骂过j70c的芯片后,我还是不得不佩服sony的实力!!
以上就是我从昨天以来的一些研究成果。由于不是声音芯片专家,又是个音乐盲,所以上面仅根据局部知识得到的研究结果,必有许多错误和纰漏,还望专家们斧正!!(当然,我还是要感叹于人类强大的类比思维和逻辑推理能力!)