專利名稱:用于無線手持式設(shè)備的音樂格式轉(zhuǎn)換方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種音樂格式轉(zhuǎn)換方法,尤其是涉及一種適用于PDA、手機(jī)、PDA手機(jī)等無線手持式設(shè)備的音樂格式轉(zhuǎn)換方法。
背景技術(shù):
音樂是多媒體聲音中極其重要的一種應(yīng)用,特別在無線手持式設(shè)備中發(fā)揮重要的作用。手機(jī)鈴聲更是人們休閑娛樂、展示個性的一種方式。但音樂聲音數(shù)字化后的數(shù)據(jù)量非常大(如WAVE和壓縮過的MP3文件),對于當(dāng)前有限的無線通訊帶寬以及有限的無線手持式設(shè)備內(nèi)部資源(處理器和內(nèi)存)來說,很難直接傳輸、存儲和播放。
EMS(Enhanced Message Service)是對現(xiàn)存的SMS(短信息服務(wù))標(biāo)準(zhǔn)的一個擴(kuò)展。通過SMS標(biāo)準(zhǔn),人們可以通過移動電話傳送文字信息,然而通過EMS標(biāo)準(zhǔn),能用手機(jī)傳送的信息可以得到進(jìn)一步擴(kuò)展,包括圖形、音樂和其他二進(jìn)制文件都能傳播。
iMelody是EMS中標(biāo)準(zhǔn)的音樂格式,因其格式簡單、數(shù)據(jù)量小而適合通過無線通訊在手機(jī)間傳送。
iMelody格式的音樂僅包含以下三種數(shù)據(jù)成份音階、音符和音長。
◆音階(10個)*0、*1、*2、…、*8、*9。當(dāng)音階為*4時,音階可省略。
◆音符(13個)c、#c、d、#d、e、f、#f、g、#g、a、#a、b、r。
r是休止符,#表示后面緊跟著的音要升高半個音。
◆音長(6個)0(全音符)、1(二分音符)、2(四分音符)、3(八分音符)、4(十六分音符)、5(三十二分音符)。
但iMelody格式的音樂信息過于簡單,不能實(shí)現(xiàn)多和弦多音色的音樂效果,而MIDI在此方面有獨(dú)到的優(yōu)勢。
MIDI的全文是Musical Instrument Digital Interface(音樂器材數(shù)字接口)。簡單地說,MIDI是一種專指連接各處理單元及音樂設(shè)備的接口,或者說是一種為了在電子樂器之間或電子樂器與電腦之間建立連接而制定的一種通用協(xié)議。事實(shí)上,這個通用協(xié)議就是由YAMAHA、ROLAND、KORG等幾個著名的合成器制造廠商最初協(xié)商制訂的。它的出現(xiàn),改變了以往各個品牌的設(shè)備不能通用的局面,開辟了數(shù)字音樂的新格局。在今天,MIDI以成為電腦手機(jī)的行業(yè)標(biāo)準(zhǔn),大多數(shù)的手機(jī)都支持MIDI標(biāo)準(zhǔn)。MIDI不是把音樂的波形進(jìn)行數(shù)字化采樣和編碼,而是將數(shù)字式電子樂器的彈奏過程記錄下來,如按了哪一個鍵、力度多大、時間多長等等。當(dāng)需要播放這首樂曲時,根據(jù)記錄的樂譜指令,通過音樂合成器生成音樂聲波,經(jīng)放大后由揚(yáng)聲器播出。MIDI能實(shí)現(xiàn)多和弦多音色的音樂效果。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種用于無線手持式設(shè)備的音樂格式轉(zhuǎn)換方法,使得無線手持式設(shè)備能將接收到的iMelody格式的簡單音樂轉(zhuǎn)換成MIDI格式的多音色多和弦音樂,并能在支持MIDI的無線手持式設(shè)備上播放。
本發(fā)明的目的可通過以下的技術(shù)措施來實(shí)現(xiàn),依次包括以下的步驟1、調(diào)用文件打開函數(shù)以可寫方式打開一個空的二進(jìn)制MIDI文件;2、寫入MIDI頭文件信息;3、寫入一個音軌的頭信息;4、寫入音色改變的控制事件信息,通過音色代碼的變化即可實(shí)現(xiàn)多音色的音效,具體音色代碼可根據(jù)標(biāo)準(zhǔn)MIDI格式協(xié)議規(guī)定的普通音色代碼表設(shè)定,不同音色對應(yīng)不同通道;5、以iMelody格式的音樂數(shù)據(jù)為數(shù)據(jù)源,從中提取一個音符的信息,即音階、音調(diào)和音長,將該音符的信息轉(zhuǎn)換成相應(yīng)的MIDI控制事件信息,即音符代碼和音的持續(xù)時間,并寫入MIDI文件中;6、重復(fù)步驟5直到iMelody數(shù)據(jù)結(jié)束;7、寫入步驟3中所述音軌的結(jié)束控制事件信息;8、獲得此音軌除頭信息外的長度,該音軌除頭信息外的長度為當(dāng)前文件長度減去寫此音軌前的文件長度再減去音軌頭數(shù)據(jù)塊的長度,并將獲得的長度數(shù)據(jù)寫入音軌的頭信息中音軌長度數(shù)據(jù)的位置;至此完成寫入一個音軌的數(shù)據(jù);9、重復(fù)步驟3至步驟8多次,完成寫入多個音軌的數(shù)據(jù),實(shí)現(xiàn)多音色多和弦的效果;具體的重復(fù)次數(shù)(即總的音軌數(shù))可根據(jù)一種音色、一個大三和弦及一個小三和弦各自需要寫的音軌數(shù)的定義來確定;
10、得出總共的音軌數(shù)目,在重復(fù)一次步驟3至步驟8,音軌數(shù)目就增加1,并將此音軌總數(shù)寫入MIDI頭文件中音軌數(shù)的位置;11、調(diào)用文件關(guān)閉函數(shù)關(guān)閉此MIDI文件。
本發(fā)明中步驟5的具體實(shí)現(xiàn)過程為由音長及MIDI文件頭中定義的時間分配得出此音的持續(xù)時間,音的持續(xù)時間為2的(拍子所對應(yīng)的音符種類減去音長)次方再乘以一拍對應(yīng)的記號數(shù);若遇到休止符,作特殊處理,將修改前一字節(jié)數(shù)據(jù)作為休止符的持續(xù)時間;否則,根據(jù)MIDI音符代碼表由音階和音調(diào)得到音符代碼,音符代碼為音階加1后乘以12再加音調(diào);最后將此音的打開和關(guān)閉控制事件代碼寫入MIDI文件中。
本發(fā)明根據(jù)每小節(jié)的四拍依次為強(qiáng)音、弱音、漸強(qiáng)音、弱音,調(diào)節(jié)每個音的振幅,將音的振幅定為3個等級,具體振幅值可根據(jù)音樂效果在十六進(jìn)制數(shù)00-7F內(nèi)調(diào)整;為突出作為主旋律的第一音軌音樂,從第二個音軌開始,將第一音軌所得的振幅值再乘以一個小于1的系數(shù)后取其整數(shù)部分,所乘系數(shù)可根據(jù)音效調(diào)整。
本發(fā)明步驟9中音色及和弦各自需要寫的音軌數(shù)的定義為一種音色需要寫一個音軌,一個大三和弦需要寫三個音軌,一個小三和弦需要寫三個音軌;其中在寫入大三和弦的第二個音軌時,需將在步驟5中所轉(zhuǎn)換的每個音符代碼減去3,在寫入大三和弦的第三個音軌時,需將在步驟5中所轉(zhuǎn)換的每個音符代碼減去7;在寫入小三和弦的第二個音軌時,需將在步驟5中所轉(zhuǎn)換的每個音符代碼減去4,在寫入小三和弦的第三個音軌時,需將在步驟5中所轉(zhuǎn)換的每個音符代碼減去7。
由于iMelody作為EMS中標(biāo)準(zhǔn)的音樂格式,其格式簡單、數(shù)據(jù)量小,非常適合通過無線通訊在手機(jī)間傳送,目前已廣泛應(yīng)用;MIDI作為一種現(xiàn)已廣泛應(yīng)用在手機(jī)、PDA等無線手持設(shè)備上的標(biāo)準(zhǔn)音樂格式,數(shù)據(jù)量少、表現(xiàn)力豐富,可實(shí)現(xiàn)多和弦多音色的音樂效果;因此本發(fā)明能將無線傳輸?shù)绞謾C(jī)上的iMelody格式音樂轉(zhuǎn)換為MIDI格式音樂后,即可在MIDI播放器支持下播放豐富的多和弦多音色音樂;具有廣泛的應(yīng)用前景。另外本發(fā)明方法簡單,復(fù)雜度只與數(shù)據(jù)源長度和音樂豐富度(音色數(shù)目及和弦數(shù)目)成正比,易于在現(xiàn)有的無線手持設(shè)備上實(shí)現(xiàn),且占用CPU和內(nèi)存資源少。
圖1為本發(fā)明流程框圖。
具體實(shí)施例方式
從圖1的流程框圖可以看出,本發(fā)明以實(shí)現(xiàn)與iMelody對應(yīng)的MIDI文件為目的。下面對本發(fā)明作進(jìn)一步的詳細(xì)說明,本實(shí)施例依次包括以下的步驟1、調(diào)用文件打開函數(shù)以可寫方式打開一個空的二進(jìn)制MIDI文件;2、寫入MIDI頭文件信息,頭文件信息包括標(biāo)識符“MThd”,頭數(shù)據(jù)塊大小為6,MIDI文件格式為1,音軌數(shù)暫定為0(后面會更改),一拍對應(yīng)的音軌數(shù)可自定義為96,頭文件數(shù)據(jù)塊共占用14字節(jié);3、寫入一個音軌的頭信息,音軌的頭信息音軌的頭信息包括標(biāo)識符“MTrk”,音軌長度暫定為0,音軌頭數(shù)據(jù)塊共占用8字節(jié);4、寫入音色改變的控制事件信息,通過音色代碼的變化即可實(shí)現(xiàn)多音色的音效,具體音色代碼可根據(jù)標(biāo)準(zhǔn)MIDI格式協(xié)議規(guī)定的普通音色代碼表設(shè)定,不同音色對應(yīng)不同通道;5、以iMelody格式的音樂數(shù)據(jù)為數(shù)據(jù)源,從中提取一個音符的信息,即音階、音調(diào)和音長,將該音符的信息轉(zhuǎn)換成相應(yīng)的MIDI控制事件信息,即音符代碼和音的持續(xù)時間,并寫入MIDI文件中;6、重復(fù)步驟5直到iMelody數(shù)據(jù)結(jié)束;7、寫入一個音軌的結(jié)束控制事件信息“十六進(jìn)制數(shù)FF 2F 00”;8、將當(dāng)前文件長度減去寫此音軌前的文件長度再減去音軌頭數(shù)據(jù)塊的長度8,計(jì)算出此音軌除頭信息外的長度,并將此數(shù)據(jù)寫入音軌的頭信息中音軌長度數(shù)據(jù)的位置;至此完成寫入一個音軌的數(shù)據(jù);9、重復(fù)步驟3至步驟8多次,完成寫入多個音軌的數(shù)據(jù),實(shí)現(xiàn)多種音色多個和弦的效果;具體的重復(fù)次數(shù)(即總的音軌數(shù))可根據(jù)一種音色需要寫一個音軌,一個大三和弦需要寫三個音軌,一個小三和弦需要寫三個音軌的定義確定。這樣,根據(jù)步驟4中改變音色代碼,使每種不同的音色相應(yīng)的寫入一個音軌,如要使其實(shí)現(xiàn)十種音色效果,就需變化十種不同的音色代碼,相應(yīng)的寫入十個音軌數(shù)據(jù),也即重復(fù)步驟3至步驟8十次。如要使其實(shí)現(xiàn)十個大、小三和弦的效果,就需相應(yīng)的寫入三十個音軌數(shù)據(jù),也即重復(fù)步驟3至步驟8三十次。根據(jù)大、小三和弦的定義,其中在寫入大三和弦的第二個音軌時,需將在步驟5中所轉(zhuǎn)換的每個音符代碼都減去3,在寫入大三和弦的第三個音軌時,需將在步驟5中所轉(zhuǎn)換的每個音符代碼減去7;在寫入小三和弦的第二個音軌時,需將在步驟5中所轉(zhuǎn)換的每個音符代碼減去4,在寫入小三和弦的第三個音軌時,需將在步驟5中所轉(zhuǎn)換的每個音符代碼減去7;10、得出總共的音軌數(shù)目,在重復(fù)一次步驟3至步驟8,音軌數(shù)目就增加1,并將此音軌總數(shù)寫入MIDI頭文件數(shù)據(jù)塊中音軌數(shù)的位置;11、調(diào)用文件關(guān)閉函數(shù)關(guān)閉此MIDI文件。
上述步驟5中把iMelody數(shù)據(jù)源中的一個音符的數(shù)據(jù)轉(zhuǎn)換為MIDI中相應(yīng)的數(shù)據(jù),具體過程如下1.)從iMelody數(shù)據(jù)源中讀出一個音符的數(shù)據(jù),將字符型數(shù)據(jù)轉(zhuǎn)換為整型數(shù)據(jù),包括音階(0-9)、音調(diào)(0-12)、音長(0-5);2.)由音長、拍子記號即拍子所對應(yīng)的音符種類及MIDI文件頭中定義的時間分配來得出此音符對應(yīng)MIDI格式中此音的持續(xù)時間,具體轉(zhuǎn)換是2的(拍子所對應(yīng)的音符種類減去音長)次方再乘以一拍對應(yīng)的記號數(shù)。如以四分音符為一拍時,拍子所對應(yīng)的音符種類為2;MIDI文件頭中定義的時間分配是一拍對應(yīng)的記號數(shù)為96,這樣,此音的持續(xù)時間為2的(2-音長)次方再乘以96;3.)若遇到休止符,作特殊處理修改前一字節(jié)數(shù)據(jù)為休止符的持續(xù)時間,并省略以下步驟;4.)若遇到的不是休止符,則根據(jù)MIDI音符代碼表由音階和音調(diào)可得到音符代碼,具體轉(zhuǎn)換是音階加1后乘以12再加音調(diào);5.)根據(jù)每小節(jié)的四拍依次為強(qiáng)音、弱音、漸強(qiáng)音、弱音,調(diào)節(jié)每個音的振幅,在MIDI中振幅即為打開音時的力度。將音的振幅定為3個等級,具體振幅值可根據(jù)音樂效果在十六進(jìn)制數(shù)00-7F內(nèi)調(diào)整;為突出作為主旋律的第一音軌音樂,從第二個音軌開始,將第一音軌所得的振幅值再乘以0.6后取其整數(shù)部分,所乘系數(shù)可根據(jù)音效調(diào)整;6.)將此音符的打開和關(guān)閉控制事件代碼寫入MIDI文件中。
另外可給MIDI音樂配上比如各種鼓聲的打擊樂,其過程是重復(fù)步驟3至步驟8寫入一個音軌數(shù)據(jù);由于打擊樂類別不由音色改變的控制事件決定,因此步驟4可省去。具體打擊樂類別代碼可根據(jù)標(biāo)準(zhǔn)MIDI格式協(xié)議規(guī)定的打擊樂音色代碼表設(shè)定,把在步驟5中所轉(zhuǎn)換的各個音符代碼設(shè)定為此打擊樂的類別代碼,并將控制信息寫入此音軌的第10通道。
下面是一個示例歌曲《康定情歌》第一小節(jié)對應(yīng)的iMelody格式數(shù)據(jù)如下*5e3*5g3*5a3*5a4*5g4*5a2*5d2*5e3*5g3*5a3*5a4*5g4*5a3*5e1比如由第一個音符(*5e3)轉(zhuǎn)換為MIDI中相應(yīng)的數(shù)據(jù),具體過程為從iMelody格式數(shù)據(jù)中讀出*5e3,將字符型數(shù)據(jù)轉(zhuǎn)換為整型數(shù)據(jù)后得到音階為5、音調(diào)為4、音長為3;根據(jù)MIDI中音的持續(xù)時間的轉(zhuǎn)換式2的(2-3)次方再乘以96),算得持續(xù)時間為48(對應(yīng)十六進(jìn)制30);根據(jù)音符代碼的轉(zhuǎn)換式音階加1后乘以12再加音調(diào)((5+1)*12+4)算得音符代碼為76(對應(yīng)十六進(jìn)制4C);若此音是第一拍(強(qiáng)音),打開音時的力度設(shè)為7F,若寫入第一通道則打開音符控制代碼對應(yīng)的十六進(jìn)制數(shù)為90;此音符對應(yīng)在MIDI中的打開和關(guān)閉控制事件代碼的十六進(jìn)制數(shù)據(jù)為00 90 4C 7F 30 4C 00,把此數(shù)據(jù)寫入MIDI文件中。
其它音符數(shù)據(jù)的轉(zhuǎn)換可依照此方法實(shí)現(xiàn)。
上述示例經(jīng)本發(fā)明方法轉(zhuǎn)換生成的MIDI文件對應(yīng)的五線譜圖如圖2所示。
權(quán)利要求
1.一種用于無線手持式設(shè)備的音樂格式轉(zhuǎn)換方法,其特征在于依次包括以下的步驟(1)調(diào)用文件打開函數(shù)以可寫方式打開一個空的二進(jìn)制MIDI文件;(2)寫入MIDI頭文件信息;(3)寫入一個音軌的頭信息;(4)寫入音色改變的控制事件信息,通過音色代碼的變化即可實(shí)現(xiàn)多音色的音效,具體音色代碼可根據(jù)標(biāo)準(zhǔn)MIDI格式協(xié)議規(guī)定的普通音色代碼表設(shè)定,不同音色對應(yīng)不同通道;(5)以iMelody格式的音樂數(shù)據(jù)為數(shù)據(jù)源,從中提取一個音符的信息,即音階、音調(diào)和音長,將該音符的信息轉(zhuǎn)換成相應(yīng)的MIDI控制事件信息,即音符代碼和音的持續(xù)時間,并寫入MIDI文件中;(6)重復(fù)步驟5直到iMelody數(shù)據(jù)結(jié)束;(7)寫入步驟3中所述音軌的結(jié)束控制事件信息;(8)獲得此音軌除頭信息外的長度,該音軌除頭信息外的長度為當(dāng)前文件長度減去寫此音軌前的文件長度再減去音軌頭數(shù)據(jù)塊的長度,并將獲得的長度數(shù)據(jù)寫入音軌的頭信息中音軌長度數(shù)據(jù)的位置;至此完成寫入一個音軌的數(shù)據(jù);(9)重復(fù)步驟3至步驟8多次,完成寫入多個音軌的數(shù)據(jù),實(shí)現(xiàn)多音色多和弦的效果;具體的重復(fù)次數(shù)(即總的音軌數(shù))可根據(jù)一種音色、一個大三和弦及一個小三和弦各自需要寫的音軌數(shù)的定義來確定;(10)得出總共的音軌數(shù)目,在重復(fù)一次步驟3至步驟8,音軌數(shù)目就增加1,并將此音軌總數(shù)寫入MIDI頭文件中音軌數(shù)的位置;(11)調(diào)用文件關(guān)閉函數(shù)關(guān)閉此MIDI文件。
2.根據(jù)權(quán)利要求1所述的用于無線手持式設(shè)備的音樂格式轉(zhuǎn)換方法,其特征在于步驟5的具體實(shí)現(xiàn)過程為由音長及MIDI文件頭中定義的時間分配得出此音的持續(xù)時間,音的持續(xù)時間為2的拍子所對應(yīng)的音符種類減去音長次方再乘以一拍對應(yīng)的記號數(shù);若遇到休止符,作特殊處理,將修改前一字節(jié)數(shù)據(jù)作為休止符的持續(xù)時間;否則,根據(jù)MIDI音符代碼表由音階和音調(diào)得到音符代碼,音符代碼為音階加1后乘以12再加音調(diào);最后將此音的打開和關(guān)閉控制事件代碼寫入MIDI文件中。
3.根據(jù)權(quán)利要求1或2所述的用于無線手持式設(shè)備的音樂格式轉(zhuǎn)換方法,其特征在于步驟9中音色及和弦各自需要寫的音軌數(shù)的定義為一種音色需要寫一個音軌,一個大三和弦需要寫三個音軌,一個小三和弦需要寫三個音軌;其中在寫入大三和弦的第二個音軌時,需將在步驟5中所轉(zhuǎn)換的每個音符代碼減去3,在寫入大三和弦的第三個音軌時,需將在步驟5中所轉(zhuǎn)換的每個音符代碼減去7;在寫入小三和弦的第二個音軌時,需將在步驟5中所轉(zhuǎn)換的每個音符代碼減去4,在寫入小三和弦的第三個音軌時,需將在步驟5中所轉(zhuǎn)換的每個音符代碼減去7。
4.根據(jù)權(quán)利要求1所述的用于無線手持式設(shè)備的音樂格式轉(zhuǎn)換方法,其特征在于在步驟5中可根據(jù)每小節(jié)的四拍依次為強(qiáng)音、弱音、漸強(qiáng)音、弱音,調(diào)節(jié)每個音的振幅,將音的振幅定為3個等級,具體振幅值可根據(jù)音樂效果在十六進(jìn)制數(shù)00-7F內(nèi)調(diào)整;為突出作為主旋律的第一音軌音樂,從第二個音軌開始,將第一音軌所得的振幅值再乘以一個小于1的系數(shù)后取其整數(shù)部分,所乘系數(shù)可根據(jù)音效調(diào)整,所得的振幅值寫到MIDI文件中音符打開控制事件的力度代碼位置。
5.根據(jù)權(quán)利要求1所述的用于無線手持式設(shè)備的音樂格式轉(zhuǎn)換方法,其特征在于給MIDI音樂配上打擊樂的過程是重復(fù)步驟(3)至步驟(8)寫入一個音軌數(shù)據(jù),由于打擊樂類別不由音色改變的控制事件決定,因此步驟(4)可省去;具體打擊樂類別代碼可根據(jù)標(biāo)準(zhǔn)MIDI格式協(xié)議規(guī)定的打擊樂音色代碼表設(shè)定,把在步驟(5)中所轉(zhuǎn)換的各個音的音符代碼設(shè)定為此打擊樂的類別代碼,并將控制信息寫入此音軌的第10通道。
全文摘要
本發(fā)明公開了一種適用于PDA、手機(jī)、PDA手機(jī)等無線手持式設(shè)備的音樂格式轉(zhuǎn)換方法,將簡單的iMelody格式的音樂轉(zhuǎn)換成音色豐富的MIDI格式的音樂,主要通過把iMelody數(shù)據(jù)源中的音符的數(shù)據(jù)轉(zhuǎn)換為MIDI中相應(yīng)的數(shù)據(jù),具體實(shí)現(xiàn)由音長及MIDI文件頭中定義的時間分配得出此音的持續(xù)時間;若遇到休止符,作特殊處理;否則,根據(jù)MIDI音符代碼表由音階和音調(diào)得到音符代碼。本發(fā)明主要應(yīng)用在無線手持設(shè)備上,將無線傳輸?shù)绞謾C(jī)上的iMelody格式音樂轉(zhuǎn)換為MIDI格式音樂后,即可在MIDI播放器支持下播放豐富的多和弦多音色音樂。
文檔編號H04M1/725GK1489411SQ0314012
公開日2004年4月14日 申請日期2003年8月11日 優(yōu)先權(quán)日2003年8月11日
發(fā)明者高成偉, 鄒邁, 王斌鋒, 黃立新, 胡勝發(fā) 申請人:安凱(廣州)軟件技術(shù)有限公司