用于无线手持式设备的音乐格式转换方法

文档序号:7620241阅读:338来源:国知局
专利名称:用于无线手持式设备的音乐格式转换方法
技术领域
本发明涉及一种音乐格式转换方法,尤其是涉及一种适用于PDA、手机、PDA手机等无线手持式设备的音乐格式转换方法。
背景技术
音乐是多媒体声音中极其重要的一种应用,特别在无线手持式设备中发挥重要的作用。手机铃声更是人们休闲娱乐、展示个性的一种方式。但音乐声音数字化后的数据量非常大(如WAVE和压缩过的MP3文件),对于当前有限的无线通讯带宽以及有限的无线手持式设备内部资源(处理器和内存)来说,很难直接传输、存储和播放。
EMS(Enhanced Message Service)是对现存的SMS(短信息服务)标准的一个扩展。通过SMS标准,人们可以通过移动电话传送文字信息,然而通过EMS标准,能用手机传送的信息可以得到进一步扩展,包括图形、音乐和其他二进制文件都能传播。
iMelody是EMS中标准的音乐格式,因其格式简单、数据量小而适合通过无线通讯在手机间传送。
iMelody格式的音乐仅包含以下三种数据成份音阶、音符和音长。
◆音阶(10个)*0、*1、*2、…、*8、*9。当音阶为*4时,音阶可省略。
◆音符(13个)c、#c、d、#d、e、f、#f、g、#g、a、#a、b、r。
r是休止符,#表示后面紧跟着的音要升高半个音。
◆音长(6个)0(全音符)、1(二分音符)、2(四分音符)、3(八分音符)、4(十六分音符)、5(三十二分音符)。
但iMelody格式的音乐信息过于简单,不能实现多和弦多音色的音乐效果,而MIDI在此方面有独到的优势。
MIDI的全文是Musical Instrument Digital Interface(音乐器材数字接口)。简单地说,MIDI是一种专指连接各处理单元及音乐设备的接口,或者说是一种为了在电子乐器之间或电子乐器与电脑之间建立连接而制定的一种通用协议。事实上,这个通用协议就是由YAMAHA、ROLAND、KORG等几个著名的合成器制造厂商最初协商制订的。它的出现,改变了以往各个品牌的设备不能通用的局面,开辟了数字音乐的新格局。在今天,MIDI以成为电脑手机的行业标准,大多数的手机都支持MIDI标准。MIDI不是把音乐的波形进行数字化采样和编码,而是将数字式电子乐器的弹奏过程记录下来,如按了哪一个键、力度多大、时间多长等等。当需要播放这首乐曲时,根据记录的乐谱指令,通过音乐合成器生成音乐声波,经放大后由扬声器播出。MIDI能实现多和弦多音色的音乐效果。

发明内容
本发明的目的在于提供一种用于无线手持式设备的音乐格式转换方法,使得无线手持式设备能将接收到的iMelody格式的简单音乐转换成MIDI格式的多音色多和弦音乐,并能在支持MIDI的无线手持式设备上播放。
本发明的目的可通过以下的技术措施来实现,依次包括以下的步骤1、调用文件打开函数以可写方式打开一个空的二进制MIDI文件;2、写入MIDI头文件信息;3、写入一个音轨的头信息;4、写入音色改变的控制事件信息,通过音色代码的变化即可实现多音色的音效,具体音色代码可根据标准MIDI格式协议规定的普通音色代码表设定,不同音色对应不同通道;5、以iMelody格式的音乐数据为数据源,从中提取一个音符的信息,即音阶、音调和音长,将该音符的信息转换成相应的MIDI控制事件信息,即音符代码和音的持续时间,并写入MIDI文件中;6、重复步骤5直到iMelody数据结束;7、写入步骤3中所述音轨的结束控制事件信息;8、获得此音轨除头信息外的长度,该音轨除头信息外的长度为当前文件长度减去写此音轨前的文件长度再减去音轨头数据块的长度,并将获得的长度数据写入音轨的头信息中音轨长度数据的位置;至此完成写入一个音轨的数据;9、重复步骤3至步骤8多次,完成写入多个音轨的数据,实现多音色多和弦的效果;具体的重复次数(即总的音轨数)可根据一种音色、一个大三和弦及一个小三和弦各自需要写的音轨数的定义来确定;
10、得出总共的音轨数目,在重复一次步骤3至步骤8,音轨数目就增加1,并将此音轨总数写入MIDI头文件中音轨数的位置;11、调用文件关闭函数关闭此MIDI文件。
本发明中步骤5的具体实现过程为由音长及MIDI文件头中定义的时间分配得出此音的持续时间,音的持续时间为2的(拍子所对应的音符种类减去音长)次方再乘以一拍对应的记号数;若遇到休止符,作特殊处理,将修改前一字节数据作为休止符的持续时间;否则,根据MIDI音符代码表由音阶和音调得到音符代码,音符代码为音阶加1后乘以12再加音调;最后将此音的打开和关闭控制事件代码写入MIDI文件中。
本发明根据每小节的四拍依次为强音、弱音、渐强音、弱音,调节每个音的振幅,将音的振幅定为3个等级,具体振幅值可根据音乐效果在十六进制数00-7F内调整;为突出作为主旋律的第一音轨音乐,从第二个音轨开始,将第一音轨所得的振幅值再乘以一个小于1的系数后取其整数部分,所乘系数可根据音效调整。
本发明步骤9中音色及和弦各自需要写的音轨数的定义为一种音色需要写一个音轨,一个大三和弦需要写三个音轨,一个小三和弦需要写三个音轨;其中在写入大三和弦的第二个音轨时,需将在步骤5中所转换的每个音符代码减去3,在写入大三和弦的第三个音轨时,需将在步骤5中所转换的每个音符代码减去7;在写入小三和弦的第二个音轨时,需将在步骤5中所转换的每个音符代码减去4,在写入小三和弦的第三个音轨时,需将在步骤5中所转换的每个音符代码减去7。
由于iMelody作为EMS中标准的音乐格式,其格式简单、数据量小,非常适合通过无线通讯在手机间传送,目前已广泛应用;MIDI作为一种现已广泛应用在手机、PDA等无线手持设备上的标准音乐格式,数据量少、表现力丰富,可实现多和弦多音色的音乐效果;因此本发明能将无线传输到手机上的iMelody格式音乐转换为MIDI格式音乐后,即可在MIDI播放器支持下播放丰富的多和弦多音色音乐;具有广泛的应用前景。另外本发明方法简单,复杂度只与数据源长度和音乐丰富度(音色数目及和弦数目)成正比,易于在现有的无线手持设备上实现,且占用CPU和内存资源少。


图1为本发明流程框图。
具体实施例方式
从图1的流程框图可以看出,本发明以实现与iMelody对应的MIDI文件为目的。下面对本发明作进一步的详细说明,本实施例依次包括以下的步骤1、调用文件打开函数以可写方式打开一个空的二进制MIDI文件;2、写入MIDI头文件信息,头文件信息包括标识符“MThd”,头数据块大小为6,MIDI文件格式为1,音轨数暂定为0(后面会更改),一拍对应的音轨数可自定义为96,头文件数据块共占用14字节;3、写入一个音轨的头信息,音轨的头信息音轨的头信息包括标识符“MTrk”,音轨长度暂定为0,音轨头数据块共占用8字节;4、写入音色改变的控制事件信息,通过音色代码的变化即可实现多音色的音效,具体音色代码可根据标准MIDI格式协议规定的普通音色代码表设定,不同音色对应不同通道;5、以iMelody格式的音乐数据为数据源,从中提取一个音符的信息,即音阶、音调和音长,将该音符的信息转换成相应的MIDI控制事件信息,即音符代码和音的持续时间,并写入MIDI文件中;6、重复步骤5直到iMelody数据结束;7、写入一个音轨的结束控制事件信息“十六进制数FF 2F 00”;8、将当前文件长度减去写此音轨前的文件长度再减去音轨头数据块的长度8,计算出此音轨除头信息外的长度,并将此数据写入音轨的头信息中音轨长度数据的位置;至此完成写入一个音轨的数据;9、重复步骤3至步骤8多次,完成写入多个音轨的数据,实现多种音色多个和弦的效果;具体的重复次数(即总的音轨数)可根据一种音色需要写一个音轨,一个大三和弦需要写三个音轨,一个小三和弦需要写三个音轨的定义确定。这样,根据步骤4中改变音色代码,使每种不同的音色相应的写入一个音轨,如要使其实现十种音色效果,就需变化十种不同的音色代码,相应的写入十个音轨数据,也即重复步骤3至步骤8十次。如要使其实现十个大、小三和弦的效果,就需相应的写入三十个音轨数据,也即重复步骤3至步骤8三十次。根据大、小三和弦的定义,其中在写入大三和弦的第二个音轨时,需将在步骤5中所转换的每个音符代码都减去3,在写入大三和弦的第三个音轨时,需将在步骤5中所转换的每个音符代码减去7;在写入小三和弦的第二个音轨时,需将在步骤5中所转换的每个音符代码减去4,在写入小三和弦的第三个音轨时,需将在步骤5中所转换的每个音符代码减去7;10、得出总共的音轨数目,在重复一次步骤3至步骤8,音轨数目就增加1,并将此音轨总数写入MIDI头文件数据块中音轨数的位置;11、调用文件关闭函数关闭此MIDI文件。
上述步骤5中把iMelody数据源中的一个音符的数据转换为MIDI中相应的数据,具体过程如下1.)从iMelody数据源中读出一个音符的数据,将字符型数据转换为整型数据,包括音阶(0-9)、音调(0-12)、音长(0-5);2.)由音长、拍子记号即拍子所对应的音符种类及MIDI文件头中定义的时间分配来得出此音符对应MIDI格式中此音的持续时间,具体转换是2的(拍子所对应的音符种类减去音长)次方再乘以一拍对应的记号数。如以四分音符为一拍时,拍子所对应的音符种类为2;MIDI文件头中定义的时间分配是一拍对应的记号数为96,这样,此音的持续时间为2的(2-音长)次方再乘以96;3.)若遇到休止符,作特殊处理修改前一字节数据为休止符的持续时间,并省略以下步骤;4.)若遇到的不是休止符,则根据MIDI音符代码表由音阶和音调可得到音符代码,具体转换是音阶加1后乘以12再加音调;5.)根据每小节的四拍依次为强音、弱音、渐强音、弱音,调节每个音的振幅,在MIDI中振幅即为打开音时的力度。将音的振幅定为3个等级,具体振幅值可根据音乐效果在十六进制数00-7F内调整;为突出作为主旋律的第一音轨音乐,从第二个音轨开始,将第一音轨所得的振幅值再乘以0.6后取其整数部分,所乘系数可根据音效调整;6.)将此音符的打开和关闭控制事件代码写入MIDI文件中。
另外可给MIDI音乐配上比如各种鼓声的打击乐,其过程是重复步骤3至步骤8写入一个音轨数据;由于打击乐类别不由音色改变的控制事件决定,因此步骤4可省去。具体打击乐类别代码可根据标准MIDI格式协议规定的打击乐音色代码表设定,把在步骤5中所转换的各个音符代码设定为此打击乐的类别代码,并将控制信息写入此音轨的第10通道。
下面是一个示例歌曲《康定情歌》第一小节对应的iMelody格式数据如下*5e3*5g3*5a3*5a4*5g4*5a2*5d2*5e3*5g3*5a3*5a4*5g4*5a3*5e1比如由第一个音符(*5e3)转换为MIDI中相应的数据,具体过程为从iMelody格式数据中读出*5e3,将字符型数据转换为整型数据后得到音阶为5、音调为4、音长为3;根据MIDI中音的持续时间的转换式2的(2-3)次方再乘以96),算得持续时间为48(对应十六进制30);根据音符代码的转换式音阶加1后乘以12再加音调((5+1)*12+4)算得音符代码为76(对应十六进制4C);若此音是第一拍(强音),打开音时的力度设为7F,若写入第一通道则打开音符控制代码对应的十六进制数为90;此音符对应在MIDI中的打开和关闭控制事件代码的十六进制数据为00 90 4C 7F 30 4C 00,把此数据写入MIDI文件中。
其它音符数据的转换可依照此方法实现。
上述示例经本发明方法转换生成的MIDI文件对应的五线谱图如图2所示。
权利要求
1.一种用于无线手持式设备的音乐格式转换方法,其特征在于依次包括以下的步骤(1)调用文件打开函数以可写方式打开一个空的二进制MIDI文件;(2)写入MIDI头文件信息;(3)写入一个音轨的头信息;(4)写入音色改变的控制事件信息,通过音色代码的变化即可实现多音色的音效,具体音色代码可根据标准MIDI格式协议规定的普通音色代码表设定,不同音色对应不同通道;(5)以iMelody格式的音乐数据为数据源,从中提取一个音符的信息,即音阶、音调和音长,将该音符的信息转换成相应的MIDI控制事件信息,即音符代码和音的持续时间,并写入MIDI文件中;(6)重复步骤5直到iMelody数据结束;(7)写入步骤3中所述音轨的结束控制事件信息;(8)获得此音轨除头信息外的长度,该音轨除头信息外的长度为当前文件长度减去写此音轨前的文件长度再减去音轨头数据块的长度,并将获得的长度数据写入音轨的头信息中音轨长度数据的位置;至此完成写入一个音轨的数据;(9)重复步骤3至步骤8多次,完成写入多个音轨的数据,实现多音色多和弦的效果;具体的重复次数(即总的音轨数)可根据一种音色、一个大三和弦及一个小三和弦各自需要写的音轨数的定义来确定;(10)得出总共的音轨数目,在重复一次步骤3至步骤8,音轨数目就增加1,并将此音轨总数写入MIDI头文件中音轨数的位置;(11)调用文件关闭函数关闭此MIDI文件。
2.根据权利要求1所述的用于无线手持式设备的音乐格式转换方法,其特征在于步骤5的具体实现过程为由音长及MIDI文件头中定义的时间分配得出此音的持续时间,音的持续时间为2的拍子所对应的音符种类减去音长次方再乘以一拍对应的记号数;若遇到休止符,作特殊处理,将修改前一字节数据作为休止符的持续时间;否则,根据MIDI音符代码表由音阶和音调得到音符代码,音符代码为音阶加1后乘以12再加音调;最后将此音的打开和关闭控制事件代码写入MIDI文件中。
3.根据权利要求1或2所述的用于无线手持式设备的音乐格式转换方法,其特征在于步骤9中音色及和弦各自需要写的音轨数的定义为一种音色需要写一个音轨,一个大三和弦需要写三个音轨,一个小三和弦需要写三个音轨;其中在写入大三和弦的第二个音轨时,需将在步骤5中所转换的每个音符代码减去3,在写入大三和弦的第三个音轨时,需将在步骤5中所转换的每个音符代码减去7;在写入小三和弦的第二个音轨时,需将在步骤5中所转换的每个音符代码减去4,在写入小三和弦的第三个音轨时,需将在步骤5中所转换的每个音符代码减去7。
4.根据权利要求1所述的用于无线手持式设备的音乐格式转换方法,其特征在于在步骤5中可根据每小节的四拍依次为强音、弱音、渐强音、弱音,调节每个音的振幅,将音的振幅定为3个等级,具体振幅值可根据音乐效果在十六进制数00-7F内调整;为突出作为主旋律的第一音轨音乐,从第二个音轨开始,将第一音轨所得的振幅值再乘以一个小于1的系数后取其整数部分,所乘系数可根据音效调整,所得的振幅值写到MIDI文件中音符打开控制事件的力度代码位置。
5.根据权利要求1所述的用于无线手持式设备的音乐格式转换方法,其特征在于给MIDI音乐配上打击乐的过程是重复步骤(3)至步骤(8)写入一个音轨数据,由于打击乐类别不由音色改变的控制事件决定,因此步骤(4)可省去;具体打击乐类别代码可根据标准MIDI格式协议规定的打击乐音色代码表设定,把在步骤(5)中所转换的各个音的音符代码设定为此打击乐的类别代码,并将控制信息写入此音轨的第10通道。
全文摘要
本发明公开了一种适用于PDA、手机、PDA手机等无线手持式设备的音乐格式转换方法,将简单的iMelody格式的音乐转换成音色丰富的MIDI格式的音乐,主要通过把iMelody数据源中的音符的数据转换为MIDI中相应的数据,具体实现由音长及MIDI文件头中定义的时间分配得出此音的持续时间;若遇到休止符,作特殊处理;否则,根据MIDI音符代码表由音阶和音调得到音符代码。本发明主要应用在无线手持设备上,将无线传输到手机上的iMelody格式音乐转换为MIDI格式音乐后,即可在MIDI播放器支持下播放丰富的多和弦多音色音乐。
文档编号H04M1/725GK1489411SQ0314012
公开日2004年4月14日 申请日期2003年8月11日 优先权日2003年8月11日
发明者高成伟, 邹迈, 王斌锋, 黄立新, 胡胜发 申请人:安凯(广州)软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1