WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章SMS MMSMMS技术手机铃声格式规范,midi格式规范

手机铃声格式规范,midi格式规范
作者:佚名  来源:天堂鸟  发布时间:2005-7-8 15:18:00
前一段時間在csdn上问了许多问题,无人解答,高手都不愿意教我,真是郁闷。现在终于有所收获,现将我个人收藏发布如下,希望各位高手能象我一样 :)
最近在做一个erricsson,nokia铃声的编辑程序,程序中主要麻烦的是发送和试听,试听我是先把文本格式转化成midi,再实现播放。现将其中我收集的铃声格式和midi格式发布如下:
ericsson:
有2种,早期的都是emelody,据我所知,现在只有i68i支持imelody,不过我不知道其余型号
的手机可不可以通过升级软件来支持imelody.
-------------------------------------------------------------------------------------------
eMelody Object
.
eMelody Format
Description: This is a definition of the eMelody object. This object is used when a user-defined
melody is exchanged
Syntax: <emelody-object>
ieBEGIN:EMELODYle<CR><LF>
ieNAME:lE<name><CR><LF>
ilCOMPOSER:l> <composer><CR><LF>
ieVERSION:l> <version><CR><LF>
ivMELODY:lC<melody><CR><LF>
ivEND:EMELODYll
File extension: emy
Example filename mymelody.emy
Parameters:
<version>: "1.0"
<name>: Alphanumeric string
<composer>: Alphanumeric string
<melody>: {<pause>|<tone>}
<pause>: "p"
<tone>: {[<octave_prefix>]<basic_tone>}
<basic_short_tone>: "c"|"d"|"e"|"f"|"g"|"a"|"b"
<ess_short_tone>: "(b)d"|"(b)e"|"(b)g"|"(b)a"|"(b)b"
<iss_short_tone>: "#d"|"#e"|'"#g"|"#a"|"#b"
<basic_long_tone>: "C"|"D"|"E"|"F"|"G"|"A"|"B"
<ess_long_tone>: "(b)D"|"(b)E"|"(b)G"|"(b)A"|"(b)B"
<iss_long_tone>: "#D"|"#E"|"#G"|"#A"|"#B"
<basic_tone>: <basic_short_tone>|<ess_short_tone>|<iss_short_tone>|<basic_long_tone>
|<ess_long_tone>|<iss_long_tone>
<octave_high_prefix>: "+"
Maximum number of
tones:
40
Maximum numbers of
characters in melody:
120
Example: BEGIN:EMELODY
VERSION:1.0
NAME:Test melody 1
COMPOSER:John Smith
MELODY:
+f+a+fa(b)bdcC+GA+d+#c+dfg+daea+d+#c+e+f+e+fa(b)bdC+EA+
d+#c+dfgba+d+#C
END:EMELODY
-------------------------------------------------------------------------------------------
iMelody V1.2 Approved
1. Overview
The iMelody format is a minimal set of tones that can be used to transfer melodies between devices. The definition can
be extended by defining new formats for MIDI/WAV, DTMF, polyphonic etc. The FORMAT field is mandatory, as it is
used to specify the format of the following data.
In all cases, a letter designating a note, style, volume, etc will precede a number.
Example applications include ring tones, alarm tones and power-on melodies.
2. BNF Definition
<imelody -object>::=
"BEGIN:IMELODY"<cr><line- feed>
"VERSION:"<version><cr><line- feed>
"FORMAT:"<format><cr><line- feed>
["NAME:"<characters-not - lf><cr><line- feed>]
["COMPOSER:"<characters-not - lf><cr><line-feed>]
["BEAT:"<beat><cr><line-feed>]
["STYLE:"<style><cr><line- feed>]
["VOLUME:"<volume><cr><line-feed>]
"MELODY:"<melody><cr><line- feed>
"END:IMELODY"<cr><line-feed>
<version>::="1.2"
<format>::"CLASS1.0" | “ CLASS2.0”
<beat>::="25" | "26" | "27" | ... | "899" | "900"
<style>::= "S0" | "S1" | "S2"
<volume- modifier>::=”V+”|”V-“ (changes volume + or – from current volume)
<volume>::="V0" | "V1" | ... | "V15" |<volume- modifier>
<basic- note>::="c" | "d" | "e" | "f" | "g" | "a" | "b"
<ess-note >::="&d" | "&e" | "&g" | "&a" | "&b" (flat notes)
<iss-note >::="#c" | "#d" | "#f" | "#g" | "#a" (sharp notes)
<basic- ess-iss- note >::=<basic-note> | <ess- note> | <iss- note>
<octave-prefix>::=”*0” | "*1" | … | "*8" (A=55Hz) | (A=110Hz) | … | (A=14080 Hz)
<duration>::="0" | "1" | "2" | "3" | "4" | "5"
<duration- specifier>::="." | ":" | “;”
<rest>::="r"
单轨,很显然就只有一个轨道。同步多轨意味着所有轨道都是垂直同步的,或者其他的措辞为他们都在同一时间开始,并且可以表现一首歌的不同部分。异步多轨没有必要同时开始,而且可以完全的不同步。

nn nn 是MIDI文件中的轨道数。
dd dd 是每个4分音符delta-time节奏数(这之后将做详细介绍)。

3.轨道块:

头块之后剩下的文件部分是轨道块。每一个轨道包含一个头,并且可以包含你所希望的许多MIDI命令。轨道头与文件头及其相似:

4D 54 72 6B xx xx xx xx

与头一致,前4个字节是ASCII吗,这个是MTrk,紧跟MTrk的4个字节给出了以字节为单位的轨道的长度(不包括轨道头)。

在头之下是MIDI事件,这些事件同现行的可以被带有累加的MIDI合成器端口接受和发送的数据是相同的。一个MIDI 事件先于一个delta-time。一个delta-time是一个MIDI事件被执行后的节奏数,每个四分之一音符的节奏数先前已经定义在了文件的头块中。这个delta-time是一个可变长度的编码值。这种格式虽然混乱,可是允许根据需要利用多位表示较大的数值,这不会因为需求小的数值情况下以添零的方式浪费掉一些字节!数值被转换为7位的字节,并且除了最后一个字节以最高有效位是0外,各个字节最有意义的一位是1,。这就允许一个数值被一次一个字节地读取,你如果发现最高有效位是0,则这就是这个数值的最后一位(意义比较小)。依照MIDI说明,全部delta-time的长度最多超过4字节。

delta-time 之后就是MIDI事件,每个MIDI事件(除了正在运行的事件外)带有一个最高有效位总是1的命令字节(值将>128)。大部分命令的列表在附录A中。每个命令都有不同的参数和长度,但是接下来的数据将是最高有效位为零(值将<128)。这里有个例外就是meta-event,最高有效位可以是1。然而,meta-events需要一个长的参数以区分。

微小失误就可以导致混乱的是运行模式,这是现行MIDI命令所忽略的地方,并且最终发行的MIDI命令是假定的。这就意味这如果包含了命令,那么MIDI事件就是由delta-time与参数组成而转换的。

<led>::="ledoff" | "ledon"
<vibe>::="vibeon" | "vibeoff"
<backlight>::=”backon” | “backoff”
<note>::=[<octave-prefix>]<basic-ess- iss-note><duration>[<duration-specifier ]
<silence>::=

[1] [2] [3] [4] [5] [6]  下一页

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码