專利名稱::聲音合成器的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種聲音合成器,尤其是涉及一種在例如便攜式設(shè)備的計算資源比較有限的設(shè)備中使用的聲音合成器。本發(fā)明的
背景技術(shù):
現(xiàn)代的聲音合成器都需要具有大量的音(voice)。合成器所具有的音的數(shù)量被定義為能夠同時生成的聲音(sound)的數(shù)量。有一些不同的定義電子聲音合成器如何重現(xiàn)所需要的聲音集的協(xié)議和標(biāo)準(zhǔn)。在電子設(shè)備中生成聲音的一個普遍的方式就是通過利用MIDI(樂器數(shù)字接口)協(xié)議。與數(shù)字音頻文件(例如存在于壓縮盤上的那些文件)不同,MIDI文件并不包含特定聲音的詳細(xì)內(nèi)容。替代地,MIDI文件包含設(shè)備為了重建正確的聲音而必須執(zhí)行的事件列表。采樣的聲音被存儲在合成器中并且根據(jù)MIDI文件中所包含的指令對其進(jìn)行訪問。因此,MIDI文件可以比數(shù)字音頻文件小很多,并且適合于貯存儲器比較有限的環(huán)境。在通用MIDI系統(tǒng)級1(GM-1)中,需要合成器至少具有24個音。合成器(例如MIDI合成器)從預(yù)先錄制的聲音中生成聲音,其被稱為基于波形表(wave-table)的合成器。在這種合成器中,將樂器的一個或者多個預(yù)先錄制的序列存儲在波形表中。每個序列包含一系列的樣本,這些樣本將為了重建聲音而被播放。通常,樂器能夠生成大量的音符(note),并且由于采樣和錄制每個可能的音符需要許多的存儲器,因此僅僅存儲了很少的音符。因此,當(dāng)合成器需要產(chǎn)生一個音符或者聲音,而這個音符或者聲音具有與存儲器中所存儲的音符或者聲音并不相同的頻率的時候,合成器使用所存儲的序列中的一個序列和被稱為“采樣率轉(zhuǎn)換”的技術(shù)來對其進(jìn)行重新采樣,并且改變頻率進(jìn)而獲取所需要的基本音色(tone)。通過以不同的速率訪問所存儲的樣本來實現(xiàn)對所存儲序列的頻率的改變。也就是說,例如,如果所存儲的樣本代表300Hz頻率的音符,那么依次訪問每一個樣本將重現(xiàn)300Hz的音符。如果所存儲的每個樣本在讀出所存儲的下一個樣本之前被輸出兩次,那么合成器重現(xiàn)的音符將具有150Hz的頻率。同樣地,如果需要600Hz的音符,那么每隔一個讀出所存儲的樣本。很重要的是要注意到合成器輸出樣本的速率保持恒定并且等于一個樣本周期(所存儲的每個樣本之間的時間)。在上述的示例中,通過對每個樣本訪問兩次,將人工產(chǎn)物(失真)引入到輸出的聲音中。為了克服這些失真,合成器基于所存儲的樣本來計算另外的樣本。因此,在上述的150Hz示例中,不是對所存儲的每個樣本重復(fù)兩次,而是合成器輸出所存儲的一個樣本并且在附近所存儲的樣本的基礎(chǔ)上計算出下一個樣本。為了做到這一點,合成器需要插值技術(shù)。最簡單的插值技術(shù)使用兩個附近樣本的加權(quán)平均值。然而,這個技術(shù)經(jīng)常不準(zhǔn)確并且仍會導(dǎo)致聽得見的失真。最優(yōu)的插值算法使用了sin(x)/x函數(shù)并且需要無限數(shù)量的計算。當(dāng)然,這是不切實際的,因此已經(jīng)開發(fā)出了次優(yōu)算法。在DanaC.Massie所著的“ApplicationsofDSPtoAudioandAcoustics(DSP在音頻和聲學(xué)上的應(yīng)用)”的第8章中描述了一個次優(yōu)插值技術(shù),其中在計算中使用了幾個被存儲的樣本(在插值中所使用的樣本的數(shù)量被稱為插值度(interpolationdegree))。在插值中所使用的樣本的數(shù)量越大,合成器的性能就越好。在合成器中,利用一個或者幾個數(shù)字信號處理器(DSP)來實現(xiàn)每個音,并且DSP系統(tǒng)的計算能力對合成器能夠產(chǎn)生的音的數(shù)量強(qiáng)加了一個限制,因此也限制了為每個音使用的插值度。當(dāng)使用諸如截短的(truncated)sin(x)/x算法的次優(yōu)插值算法的時候,計算的復(fù)雜度隨插值度而線性地增長。在很多商用合成器中,經(jīng)常使用的插值度為10,因為這在計算復(fù)雜度和聲音質(zhì)量之間產(chǎn)生很好的折衷。發(fā)明概述人們期望在諸如移動電話的便攜式設(shè)備中能夠?qū)崿F(xiàn)MIDI音樂合成器,以允許該設(shè)備產(chǎn)生多音(polyphony)的振鈴音以及較高質(zhì)量的聲音。然而,置于便攜式設(shè)備計算能力上的限制(例如由成本和設(shè)備中的可用空間引起的)不足以允許實現(xiàn)符合通用MIDI系統(tǒng)級1(GM-1)(即具有24個音)且具有大約為10的插值度的聲音合成器。因此本發(fā)明試圖提供一種聲音合成器,其減少了有高度多音的合成器的計算需求,同時將聽得見的人工產(chǎn)物保持在最小。因此,根據(jù)本發(fā)明的第一個方面,提供了一種合成器,包括存儲器,其包含多個被存儲的樣本;使用從為多個有效音(activevoice)的每一個所存儲的樣本中選擇的多個樣本來為每個有效音計算輸出信號的裝置;其中由該計算裝置使用的每個有效音的樣本的數(shù)量取決于有效音的數(shù)量。優(yōu)選地,每個音一次僅僅能夠計算一個輸出。優(yōu)選地,該計算裝置為每個有效音所使用的樣本數(shù)量隨著有效音數(shù)量的增加而減小。優(yōu)選地,該計算裝置為每個有效音所使用的樣本數(shù)量隨著有效音數(shù)量的增加而減小,以使得不會超出最大的計算復(fù)雜度。可選擇地,該計算裝置為每個有效音所使用的樣本數(shù)量隨著有效音數(shù)量的增加而非線性地減小。優(yōu)選地,存儲在存儲器中的多個樣本包括音符的樣本。優(yōu)選地,存儲在存儲器中的多個樣本包括不同樂器產(chǎn)生的音符的樣本。根據(jù)本發(fā)明的第二方面,提供了一種包括如上所述的音樂合成器的便攜式設(shè)備。優(yōu)選地,該便攜式設(shè)備為移動電話??蛇x擇地,該便攜式設(shè)備為尋呼機(jī)。應(yīng)注意的是,當(dāng)在本說明書中使用術(shù)語“包括”時,是用來指明存在著所陳述的特征、整體(integers)、步驟或者元件,但是并不排除存在著或者附加有一個或者多個其他特征、整體、步驟、元件或者他們的組合。附圖的簡要說明為了更好地理解本發(fā)明,并顯示如何可以使其生效,下面將通過示例的方式參考附圖,其中圖1顯示了根據(jù)本發(fā)明的聲音合成器。圖2顯示了根據(jù)本發(fā)明的、由圖1的控制器執(zhí)行的一種方法。圖3顯示了根據(jù)本發(fā)明的、基于有效音數(shù)量確定插值度的方案。圖4顯示了根據(jù)本發(fā)明的、基于有效音數(shù)量確定插值度的可選擇性方案。圖5更詳細(xì)地顯示了圖1的合成器的音。圖6顯示了帶有根據(jù)本發(fā)明的音樂合成器的移動電話。最優(yōu)實施例的詳細(xì)描述圖1顯示了根據(jù)本發(fā)明的音樂合成器。如常規(guī)的那樣,該合成器包括控制器2、多個音4、波形表存儲器6、濾波器表8、混合器10以及數(shù)一模轉(zhuǎn)換模塊12。雖然該合成器在下文中被描述為使用MIDI協(xié)議的基于波形表的合成器,但應(yīng)當(dāng)理解本發(fā)明適用于任何需要計算位于被存儲的兩個樣本之間的樣本的基于波形表的合成器。應(yīng)注意的是,這里使用的術(shù)語“樣本”指的是單個音頻樣本點。該合成器中的音4的總量N定義了該系統(tǒng)的最大多音。當(dāng)N增加的時候,多音也增加以允許同時產(chǎn)生更大數(shù)量的聲音。對于符合通用MIDI系統(tǒng)級1(GM-1)的MIDI合成器來說,N的值至少為24。為了清楚起見,在圖1中僅僅顯示了三個音。控制器2通過輸入端14接收數(shù)據(jù)。該數(shù)據(jù)將包括有關(guān)于音樂片段或者特定聲音集的MIDI信息流。每個MIDI文件將包含描述合成器為了生成所需要的聲音而必須執(zhí)行的特定步驟的事件列表。當(dāng)MIDI文件存儲在便攜式通信設(shè)備中的情況下,文件例如可以涉及能夠用作振鈴音的短音樂片斷??刂破?處理MIDI數(shù)據(jù)流并且將該數(shù)據(jù)的適當(dāng)部分引導(dǎo)到相應(yīng)的音4,以便可以合成所需要的聲音。例如,所需要的聲音可以由同時演奏的幾個不同的樂器組成,因此每個音4一次操控一個單音樂器或者多音樂器的一部分。通常,MIDI文件包含關(guān)于將在合成下一個輸出時要使用的特定音的指令。依賴于MIDI文件的特定內(nèi)容,在任一時刻可能處于使用中的音的不同數(shù)量取決于正被重現(xiàn)的特定音樂片斷。每個音4都與控制器2、混合器10、波形表存儲器6和濾波器表8相連接。波形表存儲器6包含許多數(shù)字樣本序列。每個序列例如可以代表特定樂器的一個音符。由于存儲器的限制,僅僅可以存儲每個樂器的很少的音符。濾波器表8包含許多濾波器的值。在優(yōu)選實施例中,這些值代表辛克(sinc)函數(shù)(其中辛克函數(shù)為(sin(x))/x)。雖然在圖1中沒有示出,但是波形表存儲器6和濾波器表8都具有多路復(fù)用器,其允許在每個樣本周期(樣本周期被定義為采樣率的倒數(shù),而采樣率也就是原始聲音被采樣的速率)對每個表進(jìn)行多于一次的訪問。因此,音1至N的每一個可以共享同一組資源。如常規(guī)的那樣,依據(jù)從控制器2接收的指令和系統(tǒng)的插值度,音4產(chǎn)生所需要的輸出樣本16。通常,特定音4產(chǎn)生的聲音與所存儲的樣本序列之一在頻率上并不相對應(yīng)。因此音4必須“變換”該存儲序列的頻率以產(chǎn)生所需要的頻率上的聲音。例如,如果所存儲的樣本序列代表鋼琴上的中間C音符,那么這個序列能夠在頻率上被變換以獲得C#音符或者D音符。所需聲音的頻率可以被表達(dá)為所存儲的序列的頻率的倍數(shù)。這個倍數(shù)可以寫為有理數(shù)M/L并且被稱為是相位增量。因此,如果所需要的頻率為所存儲序列的頻率的兩倍,那么相位增量將等于2。如果所需要的頻率為所存儲序列的頻率的一半,那么相位增量將等于1/2。在需要C#音的示例中,相位增量為2的十二次根(無理數(shù)),它可被近似于一個有理數(shù)。當(dāng)對所存儲的樣本序列的頻率進(jìn)行變換時,所需要的樣本經(jīng)常并沒存儲在存儲器中。也就是說,所需要的樣本落在被存儲的兩個樣本之間。因此,音4從波形表存儲器6中檢索在所需樣本附近的多個樣本,并從濾波器表8中檢索同樣多的濾波器系數(shù)。然后將從波形表存儲器6中檢索的每個樣本與來自濾波器表8的適當(dāng)?shù)臑V波器系數(shù)相乘,并將這些乘積組合以產(chǎn)生該音的輸出16??梢赃x取濾波器表8的系數(shù),以使得如果波形表存儲器6確實包含所需要的樣本,那么就把從波形表存儲器6中檢索的其他樣本與零濾波器系數(shù)相乘,進(jìn)而輸出該被存儲的樣本。在優(yōu)選實施例中,其中濾波器表8包含代表辛克函數(shù)的值,辛克函數(shù)的周期是樣本周期的兩倍。音4的每個輸出16被發(fā)送給混合器10,在其中把所有有效音4的輸出16合并成組合輸出18并且送到DAC模塊12。DAC模塊12包含一個或者多個數(shù)字-模擬轉(zhuǎn)換器,該轉(zhuǎn)換器將該混合器10的組合輸出18轉(zhuǎn)換成模擬信號20。圖2顯示了根據(jù)本發(fā)明的、由圖1的控制器2執(zhí)行的一種方法。在步驟101中,控制器2分析MIDI數(shù)據(jù)流并且確定在下一個樣本周期期間有效的音4的數(shù)量。也就是說,控制器2確定有多少個不同的音4將把輸出16貢獻(xiàn)給混合器10。在步驟103中,控制器2確定在計算下一個輸出16時每個音4要使用的樣本數(shù)量(被稱為插值度ID),并且適當(dāng)?shù)刂甘疽?。在步驟105中,每個有效音4在從控制器2接收的指令的基礎(chǔ)上,利用所考慮的、和插值度ID相等的多個存儲樣本來計算輸出16。每個有效音4還將使用來自濾波器系數(shù)表8的、和插值度ID相等的多個濾波器系數(shù)。為每個輸出循環(huán)重復(fù)該過程,也就是說,在每個樣本周期重復(fù)一次該過程。在參考圖3和4進(jìn)行描述的本發(fā)明的實施例中,所述合成器具有24個音4并且具有最大插值度11。圖3是一張表,它顯示了根據(jù)本發(fā)明的、基于有效音數(shù)量確定插值度的方案。對于任何給定的有效音數(shù)量,該表都明確地給出了要使用的插值度。例如,如果控制器2確定在下一個樣本周期期間僅有一個音4將為有效,那么控制器2指示音4使用插值度11。當(dāng)有效音4的數(shù)量增加的時候,在計算輸出16時所使用的插值度以線性方式減少。如果合成器的所有24個音4都為有效,那么控制器2確定將使用插值度4??蛇x擇地,如果為合成器(例如在便攜式設(shè)備中使用的合成器)定義了最大的計算復(fù)雜度,那么可以對插值度進(jìn)行選取以使得不會超出該最大的計算復(fù)雜度。圖4是顯示了這種方案的另外一張表。同樣,插值度隨著有效音4的數(shù)量的增加而減少。然而,這種變化不是線性的。替代地,計算出插值度以使得不會超過最大的計算復(fù)雜度。例如,如果合成器具有24個音、最大插值度11并且耗費0.5MIPS/度/音(百萬個指令每秒/度/音),那么常規(guī)合成器可能需要高達(dá)132MIPS之多。這個計算能力遠(yuǎn)遠(yuǎn)超過了當(dāng)前典型的便攜式設(shè)備(例如移動終端)中可供利用的能力。使用圖4所示的方案,計算能力不會超過50MIPS。這個值比較適合于便攜式設(shè)備。實際使用的方案將由可供合成器利用的計算能力以及實現(xiàn)每個插值度所需要的計算能力的量來確定。圖5更詳細(xì)地顯示了圖1中的音。該音4與控制器2、波形表存儲器6和濾波器表8一同被顯示。處理器22從控制器2接收有關(guān)音4的指令。該指令將包括有關(guān)音4的MIDI信息以及涉及到在計算下一個輸出16時要使用的插值度的指示??刂破?可以向每個音4指示在計算下一個輸出時要使用的實際插值度,或者可選擇地,控制器2可以將有效音的數(shù)量指示給每個音4并且讓處理器22確定適當(dāng)?shù)牟逯刀?。處理?2與相位增量寄存器24、計數(shù)器26和濾波器系數(shù)選擇器28相連接。濾波器系數(shù)選擇器28與濾波器表8相連接,以便檢索適當(dāng)?shù)臑V波器系數(shù)。濾波器系數(shù)選擇器28還與計數(shù)器26相連接。根據(jù)本發(fā)明,處理器22把計算下一個輸出16所要使用的插值度通知給計數(shù)器26和濾波器系數(shù)選擇器28。處理器22設(shè)置相位增量寄存器24的值用來產(chǎn)生所需要的輸出16。相位增量寄存器24的值將為M/L,其中L和M為整數(shù),并且它是由處理器22在從控制器2接收的指令的基礎(chǔ)上來確定的。將相位增加值送到加法器30。加法器30與記錄了當(dāng)前相位的相位寄存器32相連接。加法器30的輸出包括整數(shù)部分和小數(shù)部分。相位寄存器的輸出的整數(shù)部分和小數(shù)部分都反饋給加法器30。相位寄存器32的輸出的整數(shù)部分還被送到第二個加法器34,在那里它被加到計數(shù)器26的輸出上。加法器34的整數(shù)輸出連接到波形表存儲器6,并且確定將要被讀出的樣本。從波形表存儲器中檢索到的樣本被送到乘法累積電路(multiply-accumulatecircuit)36。相位寄存器輸出的小數(shù)部分除被饋送到加法器30之外,還被饋送到濾波器系數(shù)選擇器28。濾波器系數(shù)選擇器28的輸出被送到乘法累積電路36,在那里它與從波形表存儲器6中檢索到的樣本進(jìn)行組合?,F(xiàn)在簡要地描述音4的操作。當(dāng)相位寄存器32的輸入為非整數(shù)值、即小數(shù)部分為非零的時候,所需要的樣本位于兩個被制成表格的(tabulated)樣本之間。因此必須計算所需要的樣本。加法器30每個樣本周期操作一次以將來自相位增量寄存器24的相位增量加到當(dāng)前相位(由相位寄存器32提供)上。相位寄存器32輸出的整數(shù)部分表示波形表存儲器地址,該地址包含直接位于所需要的樣本之前的存儲樣本。為了計算所需要的樣本,從波形表存儲器6中讀出等于ID的多個樣本。計數(shù)器26每次遞增1,以從所需要的樣本的周圍選擇ID個樣本。因此,當(dāng)ID為8時,在所需樣本前面的四個樣本連同在所需樣本之后的四個樣本一起被讀出。如果ID為5,則在所需樣本之前的三個樣本連同在所需樣本之后的兩個樣本一起被讀出。可選擇地,讀出在所需樣本之前的兩個樣本和在所需樣本之后的三個樣本。這些樣本被送到乘法累積電路36。應(yīng)注意的是,計數(shù)器每個樣本周期從其初始值操作到其終值一次。濾波器系數(shù)選擇器28依據(jù)相位寄存器輸出的小數(shù)部分和插值度從濾波器表8中獲得適當(dāng)?shù)臑V波器系數(shù)。濾波器系數(shù)選擇器28由計數(shù)器26控制從濾波器表8中獲得ID個系數(shù)。一旦已經(jīng)從濾波器表8中獲得了濾波器系數(shù)44,那么被使用從計數(shù)器26接收的輸入把濾波器系數(shù)送到乘法累積電路36。在這里,從波形表存儲器6獲得的樣本與適當(dāng)?shù)臑V波器系數(shù)44相乘,并且將乘積累加,以獲得音16的輸出。當(dāng)相位寄存器32的小數(shù)部分改變的時候,從濾波器表8獲得的濾波器系數(shù)也將會改變。當(dāng)有效音4的數(shù)量改變的時候,處理器將把所需要的適當(dāng)?shù)牟逯刀戎甘窘o計數(shù)器26和濾波器系數(shù)選擇器28。圖6顯示了帶有根據(jù)本發(fā)明的音樂合成器的移動電話。雖然本發(fā)明是按照被集成在移動電話內(nèi)來描述的,但應(yīng)該理解的是,本發(fā)明適用于任何便攜式設(shè)備,諸如個人數(shù)字助理(PDA)、尋呼機(jī)、電子組織器(organisers)、或者其他任何被期望能夠重現(xiàn)高質(zhì)量多音聲音的設(shè)備。如常規(guī)的那樣,移動電話46包括天線48、收發(fā)機(jī)電路50、CPU52、存儲器54和揚(yáng)聲器56。移動電話46還包括根據(jù)本發(fā)明的MIDI合成器58。CPU52提供帶有MIDI文件的MIDI合成器58。所述MIDI文件可以存儲在存儲器54中,或者可以通過天線48和收發(fā)機(jī)電路50從網(wǎng)絡(luò)上下載。由此,在這里描述了一種聲音合成器,它減少了對有高度多音的合成器的計算需求,同時確保聽得見的人工產(chǎn)物保持在最小。權(quán)利要求1.一種合成器,其包括存儲器,其包含多個被存儲的樣本;使用從所存儲的樣本中為多個有效音的每一個選擇的多個樣本來為每個有效音計算輸出信號的裝置;其中,該用于計算的裝置為每個有效音所使用的樣本的數(shù)量取決于有效音的數(shù)量。2.如權(quán)利要求1中要求的合成器,其中該用于計算的裝置為每個有效音所使用的樣本數(shù)量隨著有效音數(shù)量的增加而減少。3.如權(quán)利要求2中要求的合成器,其中該用于計算的裝置為每個有效音所使用的樣本數(shù)量隨著有效音數(shù)量的增加而減少,以使得不會超出最大計算復(fù)雜度。4.如權(quán)利要求1中要求的合成器,其中該用于計算的裝置為每個有效音所使用的樣本數(shù)量隨著有效音數(shù)量的增加而非線性地減少。5.如權(quán)利要求1至4的任一項中要求的合成器,其中存儲在所述存儲器中的多個樣本包括音樂音符的樣本。6.如權(quán)利要求5中要求的合成器,其中存儲在所述存儲器中的多個樣本包括由不同樂器產(chǎn)生的音符的樣本。7.如前述任一項權(quán)利要求中要求的合成器,其中用于計算輸出信號的裝置包括濾波器表。8.如權(quán)利要求7中要求的合成器,其中濾波器表包含辛克函數(shù)的系數(shù)。9.如前述任一項權(quán)利要求中要求的合成器,其中該合成器為MIDI音樂合成器。10.一種便攜式設(shè)備,其包括如前述任一項權(quán)利要求中所要求的合成器。11.如權(quán)利要求10中要求的便攜式設(shè)備,其中該便攜式設(shè)備為移動電話。12.如權(quán)利要求10中要求的便攜式設(shè)備,其中該該便攜式設(shè)備為尋呼機(jī)。13.一種操作具有存儲在存儲器中的多個樣本的合成器的方法,該方法包括以下步驟確定在產(chǎn)生聲音時有效的音的數(shù)量;在有效的音的數(shù)量的基礎(chǔ)上確定插值度,其中插值度被定義為要從存儲在存儲器內(nèi)的多個樣本中選擇的樣本的數(shù)量;以及使用按插值度確定的所述存儲樣本的數(shù)量,來計算每個有效音的輸出。14.如權(quán)利要求13中要求的方法,其中所述插值度隨著有效音數(shù)量的增加而減少。15.如權(quán)利要求13中要求的方法,其中所述插值度隨著有效音數(shù)量的增加而減少,以使得不會超出最大計算復(fù)雜度。16.如權(quán)利要求13中要求的方法,其中所述插值度隨著有效音數(shù)量的增加而非線性地減少。全文摘要提供了一種聲音合成器,它減少了對有高度多音的合成器的計算需求,同時確保聽得見的人工產(chǎn)物保持在最小。該合成器包括存儲在存儲器(6)中的多個樣本;多個音(4,16),每個音包括使用從所述存儲在存儲器(6)內(nèi)的多個樣本中選擇的多個樣本來計算輸出的裝置;其中當(dāng)計算輸出的時候音(4,16)為有效;其中該計算裝置所選擇的樣本的數(shù)量取決于有效音(4,16)的數(shù)量。文檔編號G10H1/18GK1679081SQ03820777公開日2005年10月5日申請日期2003年8月11日優(yōu)先權(quán)日2002年9月2日發(fā)明者T·雅各布松,A·佩特夫,A·斯門尼斯費爾特斯特倫申請人:艾利森電話股份有限公司