專利名稱::音樂合成方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種音樂合成方法,特別涉及一種手持式電子裝置的音樂合成方法。然而,這些手持式電子裝置均具有輕薄短小的特性,因此產(chǎn)品設(shè)計(jì)時便必須犧牲運(yùn)算速度及儲存容量,其擴(kuò)充性具有一定的難度。因此,在考慮運(yùn)算速度及儲存容量的情況下,很多應(yīng)用程序的設(shè)計(jì)就不得不重新修正,以便在這些手持式電子裝置上使用。運(yùn)算速度以及儲存容量限制上述手持式電子裝置的音樂音質(zhì)。這是因?yàn)閹缀踅咏鼧菲髟舻囊羯憩F(xiàn),需要龐大的內(nèi)存來儲存,且在運(yùn)算上也需要加以提升,況且記錄各種樂器音色所需要的內(nèi)存的確會相當(dāng)?shù)凝嫶?,這就是為什么這些手持式電子裝置一直無法出現(xiàn)動聽的音樂的原因。本發(fā)明的目的是這樣實(shí)現(xiàn)的本發(fā)明公開了一種音樂合成方法,包括一音樂波形數(shù)據(jù)庫,系將音樂波形合成分成(一)起奏衰減、(二)延音、(三)消逝等三個階段,合成前必須事先建立音樂波形數(shù)據(jù)庫,包括儲存各種樂器起奏衰減階段的波形數(shù)據(jù)及其數(shù)據(jù)長度;各種樂器的一段延音或消逝階段的一個或數(shù)個基本周期的波形數(shù)據(jù)及其數(shù)據(jù)長度,令此數(shù)據(jù)為遞歸波形數(shù)據(jù)其長度為遞歸長度參數(shù)(Loopinglength);各種樂器在延音階段的振幅衰減模式參數(shù)(Loopingmode)及振幅調(diào)整參數(shù)(Loopingfactor);各種樂器在消逝階段的振幅衰減模式參數(shù)(Releasemode)及振幅調(diào)整參數(shù)(Releasefactor);合成時,在起奏衰減階段,只需將所儲存的波形數(shù)據(jù)乘上一固定振幅即可;在延音及消逝階段中,其音樂波形數(shù)據(jù)是由遞歸波形數(shù)據(jù)周期性地重復(fù)復(fù)制而得,再依據(jù)延音階段及消逝階段的振幅衰減模式及振幅調(diào)整參數(shù)調(diào)整振幅,此振幅為每輸出一個波形數(shù)據(jù)即調(diào)整一次,將此振幅乘上輸出波形,以產(chǎn)生各種不同衰減模式的波形,合成近乎原音的音樂。二、各種樂器的一段延音或消逝階段的一個或數(shù)個基本周期的波形數(shù)據(jù)及其數(shù)據(jù)長度,令此數(shù)據(jù)為遞歸波形數(shù)據(jù)其長度為遞歸長度參數(shù)(Loopinglength);緊接著起奏衰減階段的波形數(shù)據(jù)后,會出現(xiàn)周期性較高的波形數(shù)據(jù)一直到結(jié)束,此周期即為遞歸長度參數(shù),它用來在延音及消逝階段,重復(fù)產(chǎn)生周期性的波形數(shù)據(jù),它可以是樂器音高或基本周期的一倍或數(shù)倍。三、各種樂器在延音階段的振幅衰減模式參數(shù)(Loopingmode)及振幅調(diào)整參數(shù)(Loopingfactor);在延音階段其波形數(shù)據(jù)是由遞歸波形數(shù)據(jù)周期性地產(chǎn)生,因此其振幅必須做調(diào)整,振幅的調(diào)整為每輸出一個波形數(shù)據(jù)即調(diào)整一次,由振幅衰減模式參數(shù)及振幅調(diào)整參數(shù)決定。振幅衰減模式分為指數(shù)衰減、線性衰減、指數(shù)遞增及線性遞增;振幅調(diào)整參數(shù)決定每次的調(diào)整量,設(shè)定此二參數(shù),以產(chǎn)生最接近的原始音樂波形。四、各種樂器在消逝階段的振幅衰減模式參數(shù)(Releasemode)及振幅調(diào)整參數(shù)(Releasefactor)同三,在消逝階段其波形數(shù)據(jù)也是由遞歸波形數(shù)據(jù)周期性地產(chǎn)生,因此其振幅必須做調(diào)整,振幅的調(diào)整為每輸出一個波形數(shù)據(jù)即調(diào)整一次,由振幅衰減模式參數(shù)及振幅調(diào)整參數(shù)決定。振幅衰減模式分為指數(shù)衰減及線性衰減;振幅調(diào)整參數(shù)決定每次的調(diào)整量,設(shè)定此二參數(shù),以產(chǎn)生最接近的原始音樂波形?,F(xiàn)在將各階段的合成方法及數(shù)據(jù)庫的運(yùn)用分析說明如下一、起奏衰減階段其音樂波形數(shù)據(jù)是預(yù)先儲存在數(shù)據(jù)庫的,在合成時只需乘上一固定振幅即可。此階段包括主要的樂器音色,是音樂波形中周期性較低的部分,無法以復(fù)制方式產(chǎn)生,故需儲存。請參考第1A、1B2圖3,可發(fā)現(xiàn),三種不同的樂器,其起奏衰減的部分呈現(xiàn)較不規(guī)則波形,此點(diǎn)也是不同樂器音樂特色的主要部分。二、延音階段在延音階段其波形數(shù)據(jù)是由遞歸波形數(shù)據(jù)周期性地產(chǎn)生,因此其振幅必須做調(diào)整,振幅的調(diào)整為每輸出一個波形數(shù)據(jù)即調(diào)整一次,由振幅衰減模式參數(shù)及振幅調(diào)整參數(shù)決定。振幅衰減模式分為指數(shù)衰減、線性衰減、指數(shù)遞增及線性遞增;振幅調(diào)整參數(shù)(Loopingfactor)決定每次的調(diào)整量,設(shè)定此二參數(shù),以產(chǎn)生最接近的原始音樂波形。其變化模式及調(diào)整方法如下(1)指數(shù)衰減(請參考圖2)振幅參數(shù)Amp=Amp-Amp*Loopingfactor。(2)線性衰減振幅參數(shù)Amp=Amp-Loopingfactor。(3)指數(shù)遞增振幅參數(shù)Amp=Amp+Amp*Loopingfactor。(4)線性遞增振幅參數(shù)Amp=Amp+Loopingfactor。(5)固定不變?nèi)绻鸏oopingfactor=0,則振幅參數(shù)保持定值,固定不變,請參考圖1B。于是,通過指數(shù)衰減、線性衰減、指數(shù)遞增、線性遞增與固定不變等幾種不同的振幅參數(shù),再乘上遞歸長度,即可產(chǎn)生各種不同樂器所發(fā)出音樂的延音階段的振幅的變化,而合成出近乎原音的音樂。三、消逝階段在消逝階段其波形數(shù)據(jù)也是由遞歸波形數(shù)據(jù)周期性地產(chǎn)生,因此其振幅也必須做調(diào)整,同樣的振幅的調(diào)整為每輸出一個波形數(shù)據(jù)即調(diào)整一次,由振幅衰減模式參數(shù)及振幅調(diào)整參數(shù)決定。振幅衰減模式分為指數(shù)衰減及線性衰減;振幅調(diào)整參數(shù)(Releasefactor)決定每次的調(diào)整量。請參考圖1B,2,3,在起奏衰減階段或延音階段時,若將琴鍵松開,或樂器停止演奏,則進(jìn)入消逝階段。合成時,在此階段將聲音慢慢變小,至預(yù)先設(shè)定的最小值(Amp<Ampmin)為止。其振幅衰減模式及調(diào)整方法如下(1)指數(shù)衰減振幅參數(shù)Amp=Amp-Amp*Releasefactor(2)線性衰減振幅參數(shù)Amp=Amp-Releasefactor所以,在消逝階段,只要依據(jù)不同樂器是運(yùn)用指數(shù)衰減或者是線性衰減的信息,即可依據(jù)其衰減參數(shù)合成消逝階段的音樂。通過上述分析,當(dāng)可明白本發(fā)明可通過事先將各種音樂波形加以分析,并計(jì)算得出各種音樂波形的各階段參數(shù),即可快速地合成各種不同音樂。并且,由于只記錄了起奏衰減階段的波形數(shù)據(jù)、遞歸波形數(shù)據(jù)以及另外兩階段的振幅調(diào)整參數(shù),因此,所耗占內(nèi)存空間相當(dāng)?shù)匦?。依?jù)上述說明,本發(fā)明所提供的音樂合成方法,須事先分析樂器的音樂波形。依據(jù)上述的起奏衰減、延音及消逝階段來計(jì)算不同樂器音樂的波形,以及其所對應(yīng)的參數(shù)。接著,依據(jù)此一計(jì)算出來的參數(shù),即可建立音樂波形數(shù)據(jù)庫。此一數(shù)據(jù)庫所記載的數(shù)據(jù),即為上述各種參數(shù)與起奏衰減階段的波形及遞歸波形數(shù)據(jù)。接下來,只要取出這些參數(shù),即可合成各種樂器的音樂波形。具體的方法,請參考下面所述。請參考圖4,本發(fā)明的音樂合成方法,包括下列步驟擷取音樂波形(步驟410),依起奏衰減、延音及消逝階段方式分析并決定音樂波形的起奏衰減、延音、消逝階段的參數(shù)(步驟420),建立音樂波形數(shù)據(jù)庫(步驟430),依據(jù)使用者所輸入的開始彈奏信息,讀取音樂波形數(shù)據(jù)庫中的起奏衰減、延音及消逝階段的參數(shù)(步驟440),以及,依據(jù)起奏衰減、延音及消逝階段的參數(shù)合成音樂(步驟450)。以單一樂器為例,步驟410--430為音樂數(shù)據(jù)庫的建立工作。音樂數(shù)據(jù)庫的建立,即依據(jù)上述的參數(shù)獲得為出發(fā)點(diǎn)。先擷取音樂波形(步驟410),接著,在步驟420中,再依據(jù)音樂波形分析其起奏衰減階的波形數(shù)據(jù)及長度,延音階段的遞歸波形數(shù)據(jù)及長度(Loopinglength)、振幅調(diào)整模式參數(shù)(Loopingmode)及振幅調(diào)整參數(shù)(Loopingfactor),消逝階段的振幅調(diào)整模式參數(shù)(Releasemode)及振幅調(diào)整參數(shù)(Releasefactor),以決定音樂波形的起奏衰減、延音及消逝階段的參數(shù)。最后,在步驟430中,將這些參數(shù)加以記錄,即成為樂器的音樂波形數(shù)據(jù)庫,其中遞歸波形數(shù)據(jù)是緊接在起奏衰減波形數(shù)據(jù)之后。將不同樂器依相同的步驟來做分析,即可獲得多種樂器的音樂波形數(shù)據(jù)庫。步驟440--450即為音樂合成階段。在步驟440中,依據(jù)使用者所輸入的開始彈奏信息,讀取起奏衰減階段的波形數(shù)據(jù)及長度、延音階段的遞歸波形數(shù)據(jù)及長度、振幅調(diào)整模式參數(shù)與振幅調(diào)整參數(shù)及消逝階段的振幅調(diào)整模式參數(shù)與振幅調(diào)整參數(shù)。接下來,在步驟450,即將這些數(shù)據(jù)與參數(shù)加以運(yùn)算以合成為音樂。合成音樂的過程,則依上述的三個階段來依序合成(隨即撥放),此合成的音樂,與原先的音樂波形相當(dāng)接近。接下來,針對上述的音樂合成階段再做更詳細(xì)的說明。請參考圖5,本發(fā)明的音樂合成方法流程圖,其包括了下列步驟初始化(步驟510),讀入波形數(shù)據(jù)(步驟520),輸出波形數(shù)據(jù)(步驟530),控制合成模式(步驟540),調(diào)整振幅(步驟550),控制合成結(jié)束(步驟560)。首先,合成動作系當(dāng)使用者輸入開始彈奏信息時才開始。在步驟510中,初始化系設(shè)定初始化參數(shù),包括設(shè)定a.合成模式(syn_mode),令合成模式為1(1.起奏衰減、2.延音及3.消逝)。b.加載波形數(shù)據(jù)起始位置指針(Wavetable)、數(shù)據(jù)長度(Wavelength=起奏衰減波形數(shù)據(jù)長度+遞歸波形數(shù)據(jù)長度)及遞歸波形數(shù)據(jù)長度(LoopingLength)。c.設(shè)定合成長度(n)為0。d.加載初始振幅參數(shù)(Amp)及振幅調(diào)整參數(shù)(Loopingfactor,Releasefactor,loopmode,releasemode)。接著,在步驟520的讀入波形數(shù)據(jù)步驟中,依據(jù)波形數(shù)據(jù)起始位置指針(Wavetable),讀入一筆波形數(shù)據(jù)s=Wavetable[n],合成長度為n+1。若n>=Wavelength(數(shù)據(jù)長度),則令n=n-LoopingLength。步驟530為輸出波形數(shù)據(jù),此步驟系將波形數(shù)據(jù)乘上振幅參數(shù)s=s*Amp。接著,即控制合成模式(步驟540),若合成模式為“1”,則振幅參數(shù)Amp固定不變。在讀入波形數(shù)據(jù)(步驟520)時,若n>=Wavelength,則令模式為“2”。也就是,當(dāng)n>=Wavelength時,表示起奏衰減階段(合成模式“1”)已經(jīng)結(jié)束,必須進(jìn)入下一個階段,即延音階段(合成模式”2”)。若合成模式為“1”或“2”,當(dāng)接收到外部“停止彈奏”控制信號,則令模式為“3”。也就是,例如,外部使用者放開按鍵,而產(chǎn)生的停止彈奏信號。接著,調(diào)整振幅(步驟550),依據(jù)合成模式及幅調(diào)整參數(shù)(Loopingfactor,Releasefactor,loopmode,releasemode),而有所不同。如下所述a.當(dāng)合成模式為“1”,即起奏及衰減階段振幅不調(diào)整。b.當(dāng)合成模式為“2”,即延音階段依據(jù)音樂波形數(shù)據(jù)庫的參數(shù)而定,計(jì)有四種方法指數(shù)衰減(loopmode=1)振幅參數(shù)Amp=Amp-Amp*Loopingfactor線性衰減(loopmode=2)振幅參數(shù)Amp=Amp-Loopingfactor指數(shù)遞增(loopmode=3)振幅參數(shù)Amp=Amp+Amp*Loopingfactor線性遞增(loopmode=4)振幅參數(shù)Amp=Amp+Loopingfactorc.當(dāng)合成模式為“3”,即消逝階段依據(jù)音樂波形數(shù)據(jù)庫的參數(shù)而定,計(jì)有二種方法指數(shù)衰減(releasemode=1)振幅參數(shù)Amp=Amp-Amp*Releasefactor線性衰減(releasemode=2)振幅參數(shù)Amp=Amp-Releasefactor最后,控制合成結(jié)束(步驟560),當(dāng)調(diào)整的振幅參數(shù)(Amp)小于某個默認(rèn)值(Ampmin)時,則令合成結(jié)束。接下來,請參考圖6,其說明了在步驟540時,控制合成模式的流程。當(dāng)控制合成模式開始時,也就是,在步驟530輸出起奏衰減階段的波形后,必須立刻監(jiān)控起奏衰減階段(合成模式“1”)是否已經(jīng)結(jié)束。于是,須先判斷合成長度是否已到數(shù)據(jù)長度(步驟541)。如果是,則合成模式切換為延音模式(步驟543),也就是,合成模式“2”。反之,如果否,則表示仍在起奏衰減階段(合成模式“1”),則回到步驟530繼續(xù)輸出。接下來,即判斷是否接收停止彈奏信息(步驟544),如果沒有,則持續(xù)保持延音模式(合成模式“2”)。如果收到,表示須進(jìn)入消逝模式,因而,合成模式切換為消逝模式(步驟545),即合成模式“3”。綜上所述,不論任何一種樂器所產(chǎn)生的音樂,都可通過本發(fā)明所公開的方法來制作音樂波形數(shù)據(jù)庫,進(jìn)而合成為接近自然產(chǎn)生的音樂。應(yīng)用本發(fā)明的音樂波形的合成方法,只需記錄一小段音樂波形(128種樂器音符C4,平均每個樂器約占12kBytes),即可自動產(chǎn)生任意長度(節(jié)拍長短)的音樂波形,且已以C++程序語言撰寫完成,并在PC上驗(yàn)證成功,其效果可媲美真實(shí)自然產(chǎn)生的音樂。以上所述,僅為本發(fā)明其中的較佳實(shí)施例而已,并非用來限定本發(fā)明的實(shí)施范圍;即凡是依本發(fā)明所作的等效變化與修飾,皆為本發(fā)明專利范圍所涵蓋。權(quán)利要求1.一種音樂合成方法,其特征在于,包括下列步驟擷取一音樂波形,將其區(qū)分為起奏及衰減階段、延音階段、消逝階段,并記錄起奏及衰減階段的波形數(shù)據(jù);分析該延音階段、該消逝階段的波形數(shù)據(jù),以獲得一遞歸長度參數(shù)、該延音階段的振幅調(diào)整參數(shù)及振幅衰減模式參數(shù)、該消逝階段的振幅調(diào)整參數(shù)及振幅衰減模式參數(shù);依據(jù)該起奏及衰減階段的波形數(shù)據(jù)、該延音階段的該遞歸長度、該振幅調(diào)整參數(shù)、該振幅衰減模式參數(shù)及該消逝階段的該遞歸長度、該振幅調(diào)整參數(shù)及該振幅衰減參數(shù),建立一音樂波形數(shù)據(jù)庫;依據(jù)一使用者所輸入的開始彈奏信息,讀取該音樂波形數(shù)據(jù)庫中的該起奏及衰減的波形數(shù)據(jù)、該延音階段的該遞歸長度、該振幅調(diào)整參數(shù)、該振幅衰減模式參數(shù)及該消逝階段的該遞歸長度、該振幅調(diào)整參數(shù)及該振幅衰減模式參數(shù);及依據(jù)該起奏及衰減的波形數(shù)據(jù)、該延音階段的該遞歸長度、該振幅調(diào)整參數(shù)、該振幅衰減模式參數(shù)及該消逝階段的該遞歸長度、該振幅調(diào)整參數(shù)及該振幅衰減模式參數(shù)依序合成音樂。2.如權(quán)利要求1所述的音樂合成方法,其特征在于,依序合成該音樂的步驟,包括下列步驟輸出該起奏及衰減的波形;輸出該遞歸長度乘上該延音階段的該振幅調(diào)整參數(shù)及該振幅衰減模式參數(shù)的波形;及輸出該遞歸長度成上該消逝階段的該振幅調(diào)整參數(shù)及該振幅衰減模式參數(shù)的波形。3.如權(quán)利要求1所述的音樂合成方法,其特征在于,該遞歸長度為該延音階段或該消逝階段的數(shù)個基本周期波形數(shù)據(jù),以作為該延音階段及該消逝階段的波形復(fù)制。4.如權(quán)利要求1所述的音樂合成方法,其特征在于,該延音階段的振幅衰減模式參數(shù)包括有指數(shù)衰減、指數(shù)遞增、線性衰減、線性遞增以及固定不變其中之一。5.如權(quán)利要求1所述的音樂合成方法,其特征在于,該振幅參數(shù)依據(jù)分析該音樂波形所獲得的一遞歸參數(shù)并以下列公式獲得,計(jì)算點(diǎn)為每個取樣點(diǎn)計(jì)算一次在該指數(shù)衰減時,新振幅參數(shù)=原振幅參數(shù)(1-該遞歸參數(shù));在該線性衰減時,新振幅參數(shù)=原振幅參數(shù)-該遞歸參數(shù);在該指數(shù)遞增時,新振幅參數(shù)=原振幅參數(shù)(1+該遞歸參數(shù));在該線性遞增時,新振幅參數(shù)=原振幅參數(shù)+該遞歸參數(shù);及在固定不變時,新振幅參數(shù)=原振幅參數(shù)。6.如權(quán)利要求1所述的音樂合成方法,其特征在于,該消逝階段的該振幅調(diào)整參數(shù)的決定依據(jù)該音樂波形選擇一指數(shù)衰減、一線性衰減參數(shù)其中之一作該振幅調(diào)整參數(shù)運(yùn)算。7.如權(quán)利要求1所述的音樂合成方法,其特征在于,該振幅調(diào)整參數(shù)依據(jù)分析該音樂波形所獲得的一衰減參數(shù)并以下列公式獲得,計(jì)算點(diǎn)為每個取樣點(diǎn)計(jì)算一次在該指數(shù)衰減時,新振幅調(diào)整參數(shù)=原振幅調(diào)整參數(shù)(1-該衰減參數(shù));在該線性衰減時,新振幅參數(shù)=原振幅參數(shù)-該衰減參數(shù)。8.一種音樂波形合成方法,依據(jù)一音樂波形區(qū)分為起奏及衰減階段、延音階段、消逝階段并決定一遞歸長度、一延音階段的振幅調(diào)整參數(shù)及振幅衰減模式參數(shù)、一消逝階段的振幅調(diào)整參數(shù)及振幅衰減模式參數(shù),并加以紀(jì)錄以獲得一音樂波形數(shù)據(jù)庫,其特征在于,包括下列步驟輸入一開始彈奏信息;初始化設(shè)定;讀取該音樂波形數(shù)據(jù)庫的該起奏及衰減的波形與該遞歸長度、該延音階段的該振幅調(diào)整參數(shù)及該振幅衰減模式參數(shù)、該消逝階段的該振幅調(diào)整參數(shù)及振幅衰減模式參數(shù);輸出該起奏及衰減的波形;依據(jù)一使用者所輸入的一控制指令,獲得一合成模式;及依據(jù)該合成模式,控制該延音階段的該振幅調(diào)整參數(shù)及振幅衰減模式參數(shù)、該消逝階段的該振幅調(diào)整參數(shù)及振幅衰減模式參數(shù)與該遞歸長度的運(yùn)算以做輸出波形的振幅調(diào)整控制,直至該消逝階段的振幅參數(shù)小于一默認(rèn)值。9.如權(quán)利要求7所述的音樂合成方法,其特征在于,當(dāng)該使用者未輸入指令時,該合成模式為一延音合成模式;當(dāng)該使用者輸入一停止撥放指令,該合成模式為一消逝合成模式。10.如權(quán)利要求7所述的音樂合成方法,其特征在于,在依據(jù)該合成控制模式,控制該延音階段的該振幅調(diào)整參數(shù)及該振幅衰減模式參數(shù)、該消逝階段的該振幅調(diào)整參數(shù)及該振幅衰減模式參數(shù)與該遞歸長度的運(yùn)算以做輸出波形的振幅調(diào)整控制,直至該消逝階段的振幅參數(shù)小于一默認(rèn)值的步驟中,當(dāng)該合成控制模式為該延音合成模式,輸出該遞歸長度與該延音階段的該振幅參數(shù)的乘積波形;當(dāng)該合成控制模式為該消逝合成模式,輸出該遞歸長度與該消逝階段的該振幅調(diào)整參數(shù)的乘積波形。全文摘要本發(fā)明涉及一種音樂合成方法,將音樂波形分成起奏衰減階段、延音階段及消逝階段等三個階段合成,通過儲存原始音樂起奏衰減階段的波形數(shù)據(jù)及緊接其后的一段延音或消逝階段的一個或數(shù)個基本周期的波形數(shù)據(jù),以作為延音階段及消逝階段的波形復(fù)制,并儲存其長度為遞歸長度參數(shù);再通過分析延音階段與消逝階段的振幅衰減模式,而獲得延音階段的振幅調(diào)整參數(shù)及衰減模式參數(shù)與消逝階段的振幅調(diào)整參數(shù)及衰減模式參數(shù)。接著,將這些參數(shù)、起奏衰減階段的波形數(shù)據(jù)及一段延音或消逝階段的一個或數(shù)個基本周期的波形數(shù)據(jù)儲存起來,即可用計(jì)算機(jī)程序自動產(chǎn)生合成音樂。文檔編號G10H5/00GK1472724SQ0212749公開日2004年2月4日申請日期2002年8月2日優(yōu)先權(quán)日2002年8月2日發(fā)明者楊凰琳申請人:無敵科技股份有限公司