專利名稱:一種midi音樂播放的方法及midi音樂播放裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種播放音頻數(shù)據(jù)的方法,特別是一種MIDI音樂播放的方法。本發(fā)明同時還涉及一種采用該方法的MIDI音樂播放的裝置。
背景技術(shù):
MIDI是Musical Instrument Digital Interface的首寫字母組合詞,可譯成“電子樂器數(shù)字接口”。用于在音樂合成器(music synthesizers)、樂器(musical instruments)和計算機(jī)之間交換音樂信息的一種標(biāo)準(zhǔn)協(xié)議。MIDI文件沒有記錄聲音本身,而是對樂曲的描述,比如說“在什么時候,使用什么樂器,以什么音符開始,以什么音調(diào)結(jié)束,加以什么伴奏”。也就是說它只記錄了樂曲的信息。所以播放MIDI就需要一些音樂合成手段,其中一種方法為波表合成方法。波表合成方法是在MIDI播放時,根據(jù)MIDI記錄的樂曲信息向波表發(fā)出命令,從表格中找出對應(yīng)的聲音信息,經(jīng)過合成、加工后回放出來。而音樂合成器通常有自己獨特的指令,所以需要預(yù)先把輸入的MIDI文件或別的格式的MIDI音樂轉(zhuǎn)換為控制音樂合成器的指令格式?,F(xiàn)有的MIDI音樂播放裝置一般為采用一個中央控制器(CPU)讀入MIDI文件,并轉(zhuǎn)換成可控制音樂合成器的MIDI指令數(shù)據(jù);然后由一個序列器(sequencer)定時從這些指令中取出一條指令送入一個音樂合成器合成樂曲。而現(xiàn)有的這種MIDI音樂播放裝置都只能每次讀入一路MIDI文件,進(jìn)行一路MIDI音樂的合成。隨著人們需求的提高,同時播放多路MIDI音樂,獲得更豐富的視聽享受也將成為人們的需求趨勢。
發(fā)明內(nèi)容
本發(fā)明的目的是針對現(xiàn)有技術(shù)的不足,提供一種簡單實用,且可實現(xiàn)同時播放多路MIDI音樂的方法和MIDI音樂播放裝置。
為了解決上述技術(shù)問題,本發(fā)明所采取的技術(shù)方案是一種MIDI音樂播放的方法,包括MIDI數(shù)據(jù)指令輸入步驟、仲裁選擇步驟以及音樂合成步驟,其中,
所述MIDI數(shù)據(jù)指令輸入步驟為米用多路序列器分別輸入多路MIDI數(shù)據(jù)指令,并等待所輸入的MIDI數(shù)據(jù)指令的執(zhí)行時間的到達(dá);所述仲裁選擇步驟為當(dāng)多路序列器中只有一路序列器內(nèi)的MIDI數(shù)據(jù)指令的執(zhí)行時間到達(dá)時,則該序列器輸出MIDI數(shù)據(jù)指令;當(dāng)多路序列器中存在至少兩路序列器,它們的MIDI數(shù)據(jù)指令的執(zhí)行時間同時到達(dá),則在它們之間作出仲裁選擇,使其中的一路序列器輸出MIDI數(shù)據(jù)指令;所述音樂合成步驟為采用音樂合成器接收所述序列器輸出的MIDI數(shù)據(jù)指令,進(jìn)行MIDI音樂合成,并輸出合成后的MIDI音樂。
所述仲裁選擇可以是根據(jù)預(yù)先設(shè)定的優(yōu)先級,選擇優(yōu)先級最高的一路序列器輸出MIDI數(shù)據(jù)指令。
可以采用緩存器對將要輸入所述序列器內(nèi)的MIDI數(shù)據(jù)指令進(jìn)行緩存。
所述MIDI數(shù)據(jù)指令輸入步驟中,所述序列器可以首先自所述緩存器內(nèi)預(yù)取MIDI數(shù)據(jù)指令的部分?jǐn)?shù)據(jù),其中包括該指令的執(zhí)行時間數(shù)據(jù),當(dāng)該指令的執(zhí)行時間到達(dá),并且該序列器獲得仲裁許可時,則該序列器從所述緩存器內(nèi)取出該MIDI數(shù)據(jù)指令的全部數(shù)據(jù),并傳輸至所述音樂合成器。
所述音樂合成步驟中,可以首先采用通道分配器為輸出至音樂合成器內(nèi)的MIDI數(shù)據(jù)指令選擇正確的合成器通道,從而控制相應(yīng)通道的合成器合成音樂。
一種MIDI音樂播放裝置,包括音樂合成器、仲裁器以及多路序列器,所述多路序列器用于分別輸入多路MIDI數(shù)據(jù)指令,并按該MIDI數(shù)據(jù)指令的執(zhí)行時間輸出;所述仲裁器用于對多路序列器作出仲裁選擇,從而使其中一路序列器的MIDI數(shù)據(jù)指令傳輸至所述音樂合成器。
還可以包括多路緩存器,且每路緩存器的輸出端對應(yīng)連接至一路序列器的輸入端,用于緩存MIDI數(shù)據(jù)指令。
還可以包括通道分配器,用于接收序列器輸出的MIDI數(shù)據(jù)指令,并為其分配正確的音樂合成器的通道,控制相應(yīng)通道合成音樂。
還可以包括中央控制器,用于讀入MIDI文件,并將其轉(zhuǎn)換成可控制音樂合成器的MIDI數(shù)據(jù)指令后,輸入對應(yīng)的緩存器。
還可以包括模數(shù)轉(zhuǎn)換器,用于將所述音樂合成器輸出的數(shù)字信號的MIDI音樂轉(zhuǎn)換成模擬信號,以進(jìn)行播放。
在上述技術(shù)方案中,本發(fā)明通過采用多路序列器并列獲取MIDI數(shù)據(jù)指令,并通過仲裁選擇的方法選取其中一路輸出到音樂合成器內(nèi)合成,從而實現(xiàn)了多路MIDI音樂并發(fā)播放的目的,獲得更好的音樂播放的效果;并且,由于多路序列器共享一個音樂合成器,則可以最大限度的利用好音樂合成器資源,簡化系統(tǒng)結(jié)構(gòu)、縮小裝置的體積,并可降低成本。另外,在序列器前設(shè)置緩存器緩存MIDI數(shù)據(jù)指令可減少序列器的工作負(fù)荷;在音樂合成器前設(shè)置通道分配器進(jìn)行合成器通道的配置則可更有效的利用音樂合成器的通道。相對現(xiàn)有技術(shù),本發(fā)明具有資源配置合理、結(jié)構(gòu)簡單,可實現(xiàn)多路MIDI音樂同時播放,播放效果好等特點。
附圖1為本發(fā)明一種MIDI音樂播放的方法的流程圖;附圖2為本發(fā)明一種MIDI音樂播放裝置的結(jié)構(gòu)原理方框圖;附圖3為本發(fā)明的一種較佳實施例的MIDI音樂播放裝置的結(jié)構(gòu)原理方框圖;附圖4為本發(fā)明的一種較佳實施例的MIDI音樂播放方法的流程圖。
具體實施例方式
下面將結(jié)合說明書附圖及具體實施例對本發(fā)明作進(jìn)一步詳細(xì)說明。
參考圖1,本發(fā)明提供的一種MIDI音樂播放的方法,包括MIDI數(shù)據(jù)指令輸入步驟、仲裁選擇步驟以及音樂合成步驟。其中所述MIDI數(shù)據(jù)指令輸入步驟為采用多路序列器分別輸入多路MIDI數(shù)據(jù)指令,并等待所輸入的MIDI數(shù)據(jù)指令的執(zhí)行時間的到達(dá)。
所述仲裁選擇步驟為序列器在其執(zhí)行時間到達(dá)時發(fā)出仲裁請求。這時判斷是否有多路序列器同時發(fā)出仲裁請求。當(dāng)多路序列器中只有一路序列器內(nèi)的MIDI數(shù)據(jù)指令的執(zhí)行時間到達(dá),并發(fā)出仲裁請求時,則該序列器輸出MIDI數(shù)據(jù)指令;當(dāng)多路序列器中存在至少兩路序列器,它們的MIDI數(shù)據(jù)指令的執(zhí)行時間同時到達(dá),則在它們之間作出仲裁選擇,使其中的一路序列器輸出MIDI數(shù)據(jù)指令。
所述音樂合成步驟為采用音樂合成器接收所述序列器輸出的MIDI數(shù)據(jù)指令,進(jìn)行MIDI音樂合成,并輸出合成后的MIDI音樂。
參考附圖2,本發(fā)明提供的一種MIDI音樂播放裝置,包括音樂合成器、仲裁器以及多路序列器,所述多路序列器用于分別輸入多路MIDI數(shù)據(jù)指令,并按該MIDI數(shù)據(jù)指令的執(zhí)行時間輸出;所述仲裁器用于對多路序列器作出仲裁選擇,從而使其中一路序列器的MIDI數(shù)據(jù)指令傳輸至所述音樂合成器。
圖3、4給出本發(fā)明的一個較佳實施例。
如圖3,本實施例中給出具有兩路序列器的MIDI音樂播放裝置的結(jié)構(gòu)。具有兩路以上序列器的MIDI音樂播放裝置的結(jié)構(gòu)以及工作原理均與此類似,因此本發(fā)明包括但不局限于本實施例。
本實施例的MIDI音樂播放裝置包括中央控制器(CPU)、多路緩存器、多路序列器、仲裁器、通道分配器、音樂合成器及模數(shù)轉(zhuǎn)換器。其中各個模塊的具體結(jié)構(gòu)均可采用現(xiàn)有技術(shù)的結(jié)構(gòu)實現(xiàn),如序列器可采用狀態(tài)機(jī)實現(xiàn),仲裁器可采用選擇電路實現(xiàn)等,該現(xiàn)有技術(shù)為本技術(shù)領(lǐng)域內(nèi)的技術(shù)人員所公知的技術(shù)方案,本專利中不再詳細(xì)描述。
本實施例的結(jié)構(gòu)中,所述中央控制器用于讀入所有MIDI文件,并將其轉(zhuǎn)換成可控制音樂合成器的MIDI數(shù)據(jù)指令后,輸入對應(yīng)的緩存器。
每路緩存器的輸出端對應(yīng)連接至一路序列器的輸入端,用于緩存MIDI數(shù)據(jù)指令。
所述序列器用于首先自所述緩存器內(nèi)預(yù)取MIDI數(shù)據(jù)指令的部分?jǐn)?shù)據(jù),其中包括該指令的執(zhí)行時間數(shù)據(jù)。當(dāng)該指令的執(zhí)行時間到達(dá),并且該序列器獲得仲裁許可時,該序列器再從所述緩存器內(nèi)取出該MIDI數(shù)據(jù)指令的全部數(shù)據(jù),并傳輸至所述音樂合成器。由此可見,序列器不必如現(xiàn)有技術(shù)中,預(yù)先存取所有的MIDI數(shù)據(jù)指令,消耗過多的系統(tǒng)資源。當(dāng)然,在MIDI數(shù)據(jù)指令較短的情況下,亦可對本實施例作出修改,去掉多路緩存器,使多路序列器直接從中央控制器中獲得全部的MIDI數(shù)據(jù)指令。
所述仲裁器用于根據(jù)預(yù)先設(shè)定的優(yōu)先級,選擇優(yōu)先級最高的一路序列器輸出MIDI數(shù)據(jù)指令。
所述通道分配器用于接收序列器輸出的MIDI數(shù)據(jù)指令,并為其分配正確的音樂合成器的通道,控制相應(yīng)通道合成音樂。
所述模數(shù)轉(zhuǎn)換器用于將所述音樂合成器輸出的數(shù)字信號的MIDI音樂轉(zhuǎn)換成模擬信號,以進(jìn)行播放。
下面對照圖4說明本實施例的具體的工作流程。
首先我們假定一種應(yīng)用場景在通過手機(jī)上網(wǎng)玩游戲時,手機(jī)的背景音樂是一路MIDI音樂,當(dāng)按下按鍵時會發(fā)出按鍵音,這是另一路MIDI音樂,這兩路MIDI音樂需要同時播放,而且預(yù)先規(guī)定按鍵音的優(yōu)先級高于背景音樂。
當(dāng)需要播放背景音樂文件的時候,CPU從MIDI文件1讀入MIDI文件,作分析處理,將MIDI指令轉(zhuǎn)變?yōu)榭梢钥刂埔魳泛铣善鞯闹噶?,然后將該指令送入緩存?,當(dāng)要播放按鍵音時CPU就讀入MIDI文件2,作同樣的處理,將處理結(jié)果送入緩存器2。緩存器1和緩存器2是兩個緩沖區(qū),用來緩沖CPU送入的數(shù)據(jù)。序列器1和序列器2是兩個相同的序列器,當(dāng)緩沖區(qū)中有數(shù)據(jù)的時候,序列器從緩沖區(qū)中取出部分MIDI數(shù)據(jù)指令,其中包含了該命令的執(zhí)行時間,序列器等待該執(zhí)行時間,當(dāng)時間到達(dá)后序列器向仲裁器發(fā)出仲裁請求。如果只有一路序列器向仲裁器發(fā)出仲裁請求,則直接將該路序列器的MIDI數(shù)據(jù)指令發(fā)送給通道分配器。而當(dāng)序列器1和序列器2同時向仲裁器發(fā)送仲裁請求時,由于設(shè)定序列器2的優(yōu)先級高于序列器1的優(yōu)先級,序列器2的MIDI數(shù)據(jù)指令將被仲裁器選擇送給通道分配器,序列器1則要等到序列器2發(fā)送完MIDI指令后才能發(fā)送。由于音樂合成器可以有16、64等多個通道,通道分配器需要為來自仲裁器的MIDI指令選擇正確的合成器通道,控制相應(yīng)通道的合成器合成音樂。當(dāng)命令送入音樂合成器后就開始合成音樂,從音樂合成器輸出合成的MIDI音樂,再經(jīng)過一個模數(shù)轉(zhuǎn)換模塊將數(shù)字信號變成模擬信號,就得到了兩路MIDI音樂。
以上僅為本發(fā)明的一個具體實施例。而在實際實施過程中,還可根據(jù)實際應(yīng)用作出相應(yīng)的調(diào)整,如仲裁器的實施結(jié)構(gòu)以及進(jìn)行仲裁選擇的方法可以按照不同的應(yīng)用環(huán)境、不同的MIDI指令等因素作出相應(yīng)的改變;再如通道分配器的功能亦可在CPU內(nèi)完成。因此,凡依本發(fā)明技術(shù)方案所作的改變,所產(chǎn)生的功能作用未超出本發(fā)明技術(shù)方案的范圍時,均屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種MIDI音樂播放的方法,其特征在于包括MIDI數(shù)據(jù)指令輸入步驟、仲裁選擇步驟以及音樂合成步驟,其中,所述MIDI數(shù)據(jù)指令輸入步驟為采用多路序列器分別輸入多路MIDI數(shù)據(jù)指令,并等待所輸入的MIDI數(shù)據(jù)指令的執(zhí)行時間的到達(dá);所述仲裁選擇步驟為當(dāng)多路序列器中只有一路序列器內(nèi)的MIDI數(shù)據(jù)指令的執(zhí)行時間到達(dá)時,則該序列器輸出MIDI數(shù)據(jù)指令;當(dāng)多路序列器中存在至少兩路序列器,它們的MIDI數(shù)據(jù)指令的執(zhí)行時間同時到達(dá),則在它們之間作出仲裁選擇,使其中的一路序列器輸出MIDI數(shù)據(jù)指令;所述音樂合成步驟為采用音樂合成器接收所述序列器輸出的MIDI數(shù)據(jù)指令,進(jìn)行MIDI音樂合成,并輸出合成后的MIDI音樂。
2.如權(quán)利要求1所述MIDI音樂播放的方法,其特征在于所述仲裁選擇是根據(jù)預(yù)先設(shè)定的優(yōu)先級,選擇優(yōu)先級最高的一路序列器輸出MIDI數(shù)據(jù)指令。
3.如權(quán)利要求1或2所述的MIDI音樂播放的方法,其特征在于采用緩存器對將要輸入所述序列器內(nèi)的MIDI數(shù)據(jù)指令進(jìn)行緩存。
4.如權(quán)利要求3所述的MIDI音樂播放的方法,其特征在于所述MIDI數(shù)據(jù)指令輸入步驟中,所述序列器首先自所述緩存器內(nèi)預(yù)取MIDI數(shù)據(jù)指令的部分?jǐn)?shù)據(jù),其中包括該指令的執(zhí)行時間數(shù)據(jù),當(dāng)該指令的執(zhí)行時間到達(dá),并且該序列器獲得仲裁許可時,則該序列器從所述緩存器內(nèi)取出該MIDI數(shù)據(jù)指令的全部數(shù)據(jù),并傳輸至所述音樂合成器。
5.如權(quán)利要求3所述的MIDI音樂播放的方法,其特征在于所述音樂合成步驟中,首先采用通道分配器為輸出至音樂合成器內(nèi)的MIDI數(shù)據(jù)指令選擇正確的合成器通道,從而控制相應(yīng)通道的合成器合成音樂。
6.一種MIDI音樂播放裝置,包括音樂合成器,其特征在于還包括仲裁器以及多路序列器,所述多路序列器用于分別輸入多路MIDI數(shù)據(jù)指令,并按該MIDI數(shù)據(jù)指令的執(zhí)行時間輸出;所述仲裁器用于對多路序列器作出仲裁選擇,從而使其中一路序列器的MIDI數(shù)據(jù)指令傳輸至所述音樂合成器。
7.如權(quán)利要求6所述MIDI音樂播放裝置,其特征在于還包括多路緩存器,且每路緩存器的輸出端對應(yīng)連接至一路序列器的輸入端,用于緩存MIDI數(shù)據(jù)指令。
8.如權(quán)利要求6或7所述MIDI音樂播放裝置,其特征在于還包括通道分配器,用于接收序列器輸出的MIDI數(shù)據(jù)指令,并為其分配正確的音樂合成器的通道,控制相應(yīng)通道合成音樂。
9.如權(quán)利要求8所述MIDI音樂播放裝置,其特征在于還包括中央控制器,用于讀入MIDI文件,并將其轉(zhuǎn)換成可控制音樂合成器的MIDI數(shù)據(jù)指令后,輸入對應(yīng)的緩存器。
10.如權(quán)利要求9所述MIDI音樂播放裝置,其特征在于還包括模數(shù)轉(zhuǎn)換器,用于將所述音樂合成器輸出的數(shù)字信號的MIDI音樂轉(zhuǎn)換成模擬信號,以進(jìn)行播放。
全文摘要
一種MIDI音樂播放的方法,在其MIDI數(shù)據(jù)指令輸入步驟中采用多路序列器分別輸入多路MIDI數(shù)據(jù)指令,并等待執(zhí)行時間到達(dá)。在其仲裁選擇步驟中,當(dāng)多路序列器中只有一路序列器內(nèi)的MIDI數(shù)據(jù)指令的執(zhí)行時間到達(dá)時,則該序列器輸出MIDI數(shù)據(jù)指令;當(dāng)多路序列器中存在至少兩路序列器,它們的MIDI數(shù)據(jù)指令的執(zhí)行時間同時到達(dá),則在它們之間作出仲裁選擇,使其中的一路序列器輸出MIDI數(shù)據(jù)指令。在其音樂合成步驟中采用音樂合成器接收所述序列器輸出的MIDI數(shù)據(jù)指令,進(jìn)行MIDI音樂合成,并輸出合成后的MIDI音樂。本發(fā)明同時公開了一種MIDI音樂播放裝置,包括音樂合成器、仲裁器以及多路序列器。
文檔編號G10H1/00GK1604181SQ200410091009
公開日2005年4月6日 申請日期2004年11月15日 優(yōu)先權(quán)日2004年11月15日
發(fā)明者金傳恩, 董欣, 戴春泉 申請人:北京中星微電子有限公司