專利名稱:一種樂器數(shù)字化接口中突發(fā)音的播放方法
技術(shù)領(lǐng)域:
本發(fā)明涉及樂器數(shù)字化接口(Musical Instrument Digital Interface,MIDI)技術(shù)領(lǐng)域,特別是指一種樂器數(shù)字化接口中突發(fā)音的播放方法。
背景技術(shù):
MIDI是數(shù)字樂器接口的國際標(biāo)準(zhǔn),它定義了電子音樂設(shè)備與計(jì)算機(jī)的通訊接口,規(guī)定了使用數(shù)字編碼來描述音樂樂譜的規(guī)范。
MIDI文件本身其實(shí)只是一堆數(shù)字信號,不包含任何聲音信息,它只是記錄在什么時(shí)間播放哪個音,在什么時(shí)間停止播放哪個音,實(shí)際上就是一組音序。在播放這組音序時(shí),系統(tǒng)根據(jù)其中每個音的打開時(shí)間、關(guān)閉時(shí)間進(jìn)行播放。每個音對應(yīng)有兩個事件打開通道事件、關(guān)閉通道事件,MIDI的音序就是很多事件的組合,在MIDI播放過程中,順序執(zhí)行已經(jīng)設(shè)置好的各個事件。例如,對于1、2、3三個音來說,其事件順序可能是這樣打開通道1事件、打開通道2事件、關(guān)閉通道1事件、打開通道3事件、關(guān)閉通道3事件、關(guān)閉通道2事件,那么在MIDI的播放順序就是播放1音,播放2音,結(jié)束1音,播放3音,結(jié)束3音,結(jié)束2音。
在播放MIDI音樂的時(shí)候,用戶可以設(shè)置產(chǎn)生突發(fā)音,突發(fā)音就是不在MIDI預(yù)先安排好的音序中的音。對于突發(fā)音的播放,目前采用和普通音相同的處理方式,即為突發(fā)音產(chǎn)生兩個事件打開通道事件和關(guān)閉通道事件。在系統(tǒng)獲得用戶設(shè)置的突發(fā)音后,從音源庫中讀取該音的相關(guān)屬性,其中包括該音的音色、音階和音長等,其中,音長即該音的持續(xù)時(shí)間,然后根據(jù)這些屬性為該突發(fā)音生成打開通道事件和關(guān)閉通道事件,并根據(jù)該突發(fā)音的持續(xù)時(shí)間等設(shè)置關(guān)閉通道事件中的關(guān)閉時(shí)間。此后,系統(tǒng)執(zhí)行打開通道事件和關(guān)閉通道事件,系統(tǒng)在執(zhí)行打開通道事件時(shí),打開相應(yīng)通道播放突發(fā)音;系統(tǒng)在執(zhí)行關(guān)閉通道事件時(shí),根據(jù)其中的時(shí)間關(guān)閉播放該突發(fā)音的通道,停止播放該提示音。如果用戶設(shè)置突發(fā)音的時(shí)間,例如按下某個鍵的時(shí)間超出了該突發(fā)音對應(yīng)的持續(xù)時(shí)間,那么在該突發(fā)音對應(yīng)的持續(xù)時(shí)間結(jié)束后,系統(tǒng)再次為該突發(fā)音生成相應(yīng)的事件來播放該突發(fā)音,直至用戶停止設(shè)置該突發(fā)音。
對于用戶設(shè)置產(chǎn)生多個突發(fā)音的情況下,每個突發(fā)音的兩個事件都是同時(shí)產(chǎn)生的,執(zhí)行突發(fā)音事件的順序如圖1所示,即當(dāng)產(chǎn)生第一個突發(fā)音時(shí),系統(tǒng)首先產(chǎn)生第一個突發(fā)音的打開通道事件和關(guān)閉通道事件,并順序執(zhí)行這兩個事件打開通道1和關(guān)閉通道1;產(chǎn)生第二個突發(fā)音時(shí),系統(tǒng)產(chǎn)生第二個突發(fā)音的打開通道事件和關(guān)閉通道事件,并在第一個突發(fā)音的兩個事件結(jié)束后,再順序執(zhí)行這兩個事件打開通道2和關(guān)閉通道2。
如果用戶在第一個突發(fā)音沒有結(jié)束之后,又設(shè)置產(chǎn)生了第二個突發(fā)音,這種情況下用戶當(dāng)然希望在播放時(shí),也能夠在第一個突發(fā)音沒有結(jié)束播放時(shí),就播放第二個突發(fā)音。但是由于突發(fā)音的播放只能順序執(zhí)行,即只能在第一個突發(fā)音的兩個事件執(zhí)行結(jié)束后,才能夠執(zhí)行第二個突發(fā)音的兩個事件。也就是說在播放時(shí),一定是第一個突發(fā)音結(jié)束播放后,才播放第二個突發(fā)音,造成了第二個突發(fā)音播放的延遲。以上是對于兩個突發(fā)音來說造成了延遲,對于多個突發(fā)音來說,造成的延遲將更加嚴(yán)重,對突發(fā)音的播放效果造成了很大的影響。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種樂器數(shù)字化接口中突發(fā)音的播放方法,該方法能夠避免突發(fā)音的播放延遲。
為達(dá)到上述目的,本發(fā)明提供了一種樂器數(shù)字化接口中突發(fā)音的播放方法,該方法中,預(yù)先為每個通道設(shè)置對應(yīng)的定時(shí)裝置;當(dāng)系統(tǒng)獲得用戶設(shè)置的突發(fā)音時(shí),獲取該突發(fā)音的屬性,根據(jù)該突發(fā)音的屬性生成打開通道事件,并執(zhí)行該打開通道事件,打開該事件所對應(yīng)的通道,在該通道上播放突發(fā)音;同時(shí),系統(tǒng)將突發(fā)音屬性中的持續(xù)時(shí)間下發(fā)給所述通道所對應(yīng)的定時(shí)裝置;定時(shí)裝置在持續(xù)時(shí)間結(jié)束時(shí),向所述通道發(fā)送關(guān)閉指示,關(guān)閉該通道。
所述下發(fā)持續(xù)時(shí)間的方法可以為以脈沖的形式下發(fā)該持續(xù)時(shí)間參數(shù)。
所述關(guān)閉指示可以為脈沖。
所述定時(shí)裝置可以為計(jì)數(shù)器。
如果所述定時(shí)裝置為計(jì)數(shù)器,可以進(jìn)一步包括在計(jì)數(shù)器中設(shè)置時(shí)間單位和計(jì)數(shù)單位的對應(yīng)關(guān)系,所述下發(fā)給通道所對應(yīng)的定時(shí)裝置的持續(xù)時(shí)間包括數(shù)值和時(shí)間單位;所述持續(xù)時(shí)間結(jié)束的判斷步驟為a1、計(jì)數(shù)器根據(jù)時(shí)間單位,索引所述時(shí)間單位和計(jì)數(shù)單位的對應(yīng)關(guān)系,獲得該時(shí)間單位對應(yīng)的計(jì)數(shù)單位;a2、將所述數(shù)值和計(jì)數(shù)單位相乘得到計(jì)數(shù)次數(shù);a3、啟動計(jì)數(shù)器,當(dāng)該計(jì)數(shù)器的計(jì)數(shù)次數(shù)消耗至0時(shí),確定持續(xù)時(shí)間結(jié)束。
所述定時(shí)裝置為還可以為定時(shí)器。
所述的定時(shí)裝置還可以為軟件定時(shí)器或軟件計(jì)數(shù)器。
從以上技術(shù)方案可以看出,本發(fā)明中,通過為每個通道設(shè)置對應(yīng)的定時(shí)裝置,在用戶產(chǎn)生突發(fā)音后,系統(tǒng)只產(chǎn)生并執(zhí)行打開通道事件,并通過定時(shí)裝置控制所打開通道的關(guān)閉,使得后續(xù)的突發(fā)音不會因?yàn)榍耙粋€突發(fā)音的關(guān)閉通道事件沒有執(zhí)行而無法執(zhí)行打開通道事件,從而解決了突發(fā)音播放的延遲問題,提高了突發(fā)音的播放效果。
圖1為現(xiàn)有技術(shù)中突發(fā)音的播放順序圖;圖2為本發(fā)明一個較佳實(shí)施例的流程圖;
圖3為本發(fā)明的一個示例中突發(fā)音的播放順序圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì)描述。
本發(fā)明中,預(yù)先為每個通道設(shè)置對應(yīng)的定時(shí)裝置;當(dāng)系統(tǒng)獲得用戶設(shè)置的突發(fā)音后,獲取該突發(fā)音的屬性,根據(jù)該突發(fā)音的屬性為其生成打開通道事件,并執(zhí)行該打開通道事件,打開該事件所對應(yīng)的通道,在其上播放突發(fā)音;同時(shí),系統(tǒng)將突發(fā)音屬性中的持續(xù)時(shí)間下發(fā)給播放突發(fā)音通道所對應(yīng)的定時(shí)裝置;定時(shí)裝置在持續(xù)時(shí)間結(jié)束時(shí),向播放突發(fā)音的通道發(fā)送關(guān)閉指示,該通道關(guān)閉停止播放突發(fā)音。
上述定時(shí)裝置可以為計(jì)數(shù)器,在預(yù)先為每個通道設(shè)置了對應(yīng)的計(jì)數(shù)器后,還可以設(shè)置時(shí)間單位與計(jì)數(shù)器計(jì)數(shù)單位的對應(yīng)關(guān)系,例如,可以設(shè)置1毫秒對應(yīng)1000個計(jì)數(shù)單位;當(dāng)系統(tǒng)獲得用戶產(chǎn)生的突發(fā)音時(shí),產(chǎn)生并執(zhí)行打開通道事件,在打開通道事件中設(shè)置的通道號對應(yīng)的通道上播放突發(fā)音;同時(shí),系統(tǒng)獲得該突發(fā)音的持續(xù)時(shí)間,將該持續(xù)時(shí)間下發(fā)給播放該突發(fā)音通道所對應(yīng)的計(jì)數(shù)器,這里下發(fā)的持續(xù)時(shí)間中包括持續(xù)時(shí)間的數(shù)值和時(shí)間單位。此后,計(jì)數(shù)器接收到持續(xù)時(shí)間的數(shù)值和時(shí)間單位后,根據(jù)時(shí)間單位,索引所述時(shí)間單位和計(jì)數(shù)單位的對應(yīng)關(guān)系,獲得該時(shí)間單位對應(yīng)的計(jì)數(shù)單位,并將所述數(shù)值和計(jì)數(shù)單位相乘得到計(jì)數(shù)次數(shù),然后啟動計(jì)數(shù)器,當(dāng)該計(jì)數(shù)器的計(jì)數(shù)次數(shù)消耗至0時(shí),即產(chǎn)生關(guān)閉脈沖;例如,突發(fā)音的持續(xù)時(shí)間為10ms,那么系統(tǒng)將10和ms分別以脈沖形式下發(fā)給計(jì)數(shù)器,則計(jì)數(shù)器在計(jì)數(shù)10000次后,輸出關(guān)閉脈沖;播放突發(fā)音的通道接收到該脈沖后,就自行關(guān)閉,結(jié)束播放。
上述定時(shí)裝置還可以為定時(shí)器。預(yù)先為每個通道設(shè)置了對應(yīng)的定時(shí)器后,當(dāng)系統(tǒng)獲得用戶產(chǎn)生的突發(fā)音時(shí),產(chǎn)生并執(zhí)行打開通道事件,在打開通道事件中設(shè)置的通道號對應(yīng)的通道上播放突發(fā)音;同時(shí),系統(tǒng)獲取該突發(fā)音的持續(xù)時(shí)間后,設(shè)置播放該突發(fā)音通道所對應(yīng)定時(shí)器的定時(shí)時(shí)間為該持續(xù)時(shí)間,并啟動定時(shí)器,定時(shí)器的具體實(shí)現(xiàn)原理與計(jì)數(shù)器相同,這里不再詳細(xì)闡述;當(dāng)定時(shí)器達(dá)到持續(xù)時(shí)間后,即產(chǎn)生關(guān)閉脈沖,關(guān)閉播放通道,結(jié)束播放。
上述定時(shí)裝置還可以為軟件定時(shí)器或軟件計(jì)數(shù)器。在用軟件定時(shí)器或軟件計(jì)數(shù)器作為定時(shí)裝置的方法中,預(yù)先為每個通道設(shè)置一個對應(yīng)軟件計(jì)數(shù)器或軟件定時(shí)器;當(dāng)系統(tǒng)產(chǎn)生并執(zhí)行打開通道事件后,將獲得的持續(xù)時(shí)間參數(shù)發(fā)送給打開通道時(shí)間中通道號所對應(yīng)的軟件定時(shí)器或軟件計(jì)數(shù)器,當(dāng)達(dá)到持續(xù)時(shí)間后,軟件定時(shí)器或軟件計(jì)數(shù)器向其對應(yīng)的通道發(fā)送脈沖,關(guān)閉該通道。
以下通過一個較佳實(shí)施例對本發(fā)明進(jìn)行說明。
在本發(fā)明的具體實(shí)施例中,預(yù)先為每個通道設(shè)置一個計(jì)數(shù)器。此后,本實(shí)施例的具體流程如圖2所示,具體步驟如下步驟201、用戶設(shè)置突發(fā)音后,系統(tǒng)獲取該突發(fā)音所對應(yīng)的音源屬性,并根據(jù)音源屬性產(chǎn)生打開通道事件,并執(zhí)行打開通道事件,在其中設(shè)置的通道上播放突發(fā)音;產(chǎn)生打開通道事件的方法與現(xiàn)有技術(shù)相同,即根據(jù)用戶產(chǎn)生的突發(fā)音獲取對應(yīng)的音源屬性,該音源屬性中包括音色、持續(xù)時(shí)間等,系統(tǒng)在獲取這些屬性信息后,根據(jù)這些信息產(chǎn)生打開通道事件,并在打開通道事件中設(shè)置播放該音的通道號,在執(zhí)行打開通道事件后,系統(tǒng)即在該事件中設(shè)置的通道號對應(yīng)的通道上播放用戶產(chǎn)生的突發(fā)音;步驟202、系統(tǒng)將突發(fā)音所對應(yīng)的持續(xù)時(shí)間下發(fā)到播放突發(fā)音通道所對應(yīng)的計(jì)數(shù)器,同時(shí)啟動計(jì)數(shù)器;步驟203、計(jì)數(shù)器對收到的持續(xù)時(shí)間參數(shù)進(jìn)行消耗,當(dāng)計(jì)數(shù)器減到0時(shí),產(chǎn)生一個脈沖,發(fā)送給其對應(yīng)的通道,并關(guān)閉該通道;由于在MIDI中,控制每個通道的關(guān)閉都是通過向通道發(fā)送脈沖來實(shí)現(xiàn)的,同樣的,當(dāng)計(jì)數(shù)器向已經(jīng)打開的通道發(fā)送脈沖時(shí),就關(guān)閉了該計(jì)數(shù)器對應(yīng)的通道。
下面再通過用戶設(shè)置兩個突發(fā)音這樣的具體示例對本發(fā)明進(jìn)行進(jìn)一步說明。假設(shè)用戶設(shè)置產(chǎn)生了兩個突發(fā)音,產(chǎn)生后一個突發(fā)音時(shí),第一個突發(fā)音的播放還沒有完成,即還沒有關(guān)閉第一個突發(fā)音的播放通道。在這種假設(shè)下,如圖3所示,用戶設(shè)置產(chǎn)生第一個突發(fā)音后,系統(tǒng)獲取該突發(fā)音的屬性,產(chǎn)生打開通道事件X,并執(zhí)行該打開通道事件,在通道X上播放該突發(fā)音,同時(shí)將該突發(fā)音的持續(xù)時(shí)間參數(shù)X下發(fā)到通道X所對應(yīng)的計(jì)數(shù)器X,計(jì)數(shù)器X對持續(xù)時(shí)間參數(shù)X進(jìn)行消耗;用戶設(shè)置產(chǎn)生第二個突發(fā)音后,系統(tǒng)根據(jù)該突發(fā)音的信息,產(chǎn)生打開通道事件Y,并執(zhí)行該打開通道事件,在通道Y上播放該突發(fā)音,同時(shí)將該突發(fā)音的持續(xù)時(shí)間參數(shù)Y下發(fā)到通道Y所對應(yīng)的計(jì)數(shù)器Y,計(jì)數(shù)器Y對持續(xù)時(shí)間參數(shù)Y進(jìn)行消耗;計(jì)數(shù)器X對持續(xù)時(shí)間參數(shù)X消耗至0,向通道X發(fā)送關(guān)閉脈沖,通道X關(guān)閉;計(jì)數(shù)器Y對持續(xù)時(shí)間參數(shù)Y消耗至0,向通道Y發(fā)送關(guān)閉脈沖,通道Y關(guān)閉。
以上是對本發(fā)明具體實(shí)施例的說明,在具體的實(shí)施過程中可對本發(fā)明的方法進(jìn)行適當(dāng)?shù)母倪M(jìn),以適應(yīng)具體情況的具體需要。因此可以理解,根據(jù)本發(fā)明的具體實(shí)施方式
只是起示范作用,并不用以限制本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種樂器數(shù)字化接口中突發(fā)音的播放方法,其特征在于,預(yù)先為每個通道設(shè)置對應(yīng)的定時(shí)裝置;當(dāng)系統(tǒng)獲得用戶設(shè)置的突發(fā)音后,獲取該突發(fā)音的屬性,根據(jù)該突發(fā)音的屬性生成打開通道事件,并執(zhí)行該打開通道事件,打開該事件所對應(yīng)的通道,在該通道上播放突發(fā)音;同時(shí),系統(tǒng)將突發(fā)音屬性中的持續(xù)時(shí)間下發(fā)給;定時(shí)裝置在持續(xù)時(shí)間結(jié)束時(shí),向所述通道發(fā)送關(guān)閉指示,關(guān)閉該通道。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述下發(fā)持續(xù)時(shí)間的方法為以脈沖的形式下發(fā)該持續(xù)時(shí)間參數(shù)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述關(guān)閉指示為脈沖。
4.根據(jù)權(quán)利要求1至3中任一權(quán)利要求所述的方法,其特征在于,所述定時(shí)裝置為計(jì)數(shù)器。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,在計(jì)數(shù)器中設(shè)置時(shí)間單位和計(jì)數(shù)單位的對應(yīng)關(guān)系,所述下發(fā)給通道所對應(yīng)的定時(shí)裝置的持續(xù)時(shí)間包括數(shù)值和時(shí)間單位;所述持續(xù)時(shí)間結(jié)束的判斷步驟為a1、計(jì)數(shù)器根據(jù)時(shí)間單位,索引所述時(shí)間單位和計(jì)數(shù)單位的對應(yīng)關(guān)系,獲得該時(shí)間單位對應(yīng)的計(jì)數(shù)單位;a2、將所述數(shù)值和計(jì)數(shù)單位相乘得到計(jì)數(shù)次數(shù);a3、啟動計(jì)數(shù)器,當(dāng)該計(jì)數(shù)器的計(jì)數(shù)次數(shù)消耗至0時(shí),確定持續(xù)時(shí)間結(jié)束。
6.根據(jù)權(quán)利要求1至3中任一權(quán)利要求所述的方法,其特征在于,所述定時(shí)裝置為定時(shí)器。
7.根據(jù)權(quán)利要求1至3中任一權(quán)利要求所述的方法,其特征在于,所述的定時(shí)裝置為軟件定時(shí)器或軟件計(jì)數(shù)器。
全文摘要
本發(fā)明公開了一種樂器數(shù)字化接口中突發(fā)音的播放方法,該方法中,預(yù)先為每個通道設(shè)置其對應(yīng)的定時(shí)裝置;當(dāng)系統(tǒng)獲得用戶設(shè)置的突發(fā)音后,獲取該突發(fā)音的屬性,根據(jù)該突發(fā)音的屬性生成打開通道事件,并執(zhí)行該打開通道事件,打開該事件所對應(yīng)的通道,在其上播放突發(fā)音;同時(shí),系統(tǒng)將突發(fā)音屬性中的持續(xù)時(shí)間下發(fā)給播放突發(fā)音通道所對應(yīng)的定時(shí)裝置;定時(shí)裝置在持續(xù)時(shí)間結(jié)束時(shí),向其對應(yīng)的通道發(fā)送關(guān)閉指示,關(guān)閉該通道。本發(fā)明中,通過為每個通道設(shè)置其對應(yīng)的定時(shí)裝置,在用戶產(chǎn)生突發(fā)音后,系統(tǒng)通過定時(shí)裝置控制所打開通道的關(guān)閉,解決了突發(fā)音播放的延遲問題,提高了突發(fā)音的播放效果。
文檔編號G10H1/00GK1645474SQ20051000867
公開日2005年7月27日 申請日期2005年3月1日 優(yōu)先權(quán)日2005年3月1日
發(fā)明者程青云, 金傳恩 申請人:北京中星微電子有限公司