專利名稱:一種動態(tài)調(diào)整midi和弦數(shù)的音樂合成方法
技術領域:
本發(fā)明涉及在每秒百萬指令(簡稱MIPS)比較緊張的系統(tǒng)中(如移動通信終端、嵌入式個人消費產(chǎn)品等)實現(xiàn)高和弦數(shù)音樂設備數(shù)字接口(簡稱MIDI)的解碼,特別是一種動態(tài)調(diào)整MIDI和弦數(shù)的音樂合成方法。
背景技術:
由于MIDI的解碼對MIPS要求極高,尤其在比較大的通信系統(tǒng)中,經(jīng)常會面臨與其他模塊爭搶資源的情況,從而導致MIDI播放不順暢,發(fā)生斷續(xù)、音質(zhì)下降等現(xiàn)象。通常的硬件解碼器有獨立的CPU,可以保證MIDI始終處于最高優(yōu)先級,并且可以通過硬件上的一些中斷機制動態(tài)屏蔽部分錦上添花的音效,以維持正常的解碼和播放速率。而在成本為關鍵考量因素的軟解碼系統(tǒng)中,我們就不得不考慮一些其他的辦法,來尋找音質(zhì)和解碼速度上的平衡。
發(fā)明內(nèi)容本發(fā)明的目的是提供一種動態(tài)調(diào)整MIDI和弦數(shù)的音樂合成方法,主要解決現(xiàn)有MIDI軟解碼系統(tǒng)的音質(zhì)和解碼速度上的平衡問題,最大限度的實現(xiàn)高和弦高速率的MIDI解碼。
為解決上述技術問題,本發(fā)明是這樣實現(xiàn)的一種動態(tài)調(diào)整MIDI和弦數(shù)的音樂合成方法,其特征在于在MIDI解碼器、音頻控制器、數(shù)據(jù)緩沖器之間構建了一套動態(tài)反饋機制,通過判斷data_in與data_out之間的緩沖數(shù)據(jù)量決定是否進行PolyNumber平衡算法的動態(tài)調(diào)整,其工作過程是這樣的解碼器解碼得到的數(shù)據(jù)按照一定的數(shù)據(jù)包大小放入數(shù)據(jù)緩沖器,同時,data_in數(shù)據(jù)指針加1,音頻控制器每播放完一組數(shù)據(jù)后就會再從數(shù)據(jù)緩沖器中提取數(shù)據(jù),每提取一包,data_out加1;當(data_in-data_out)的值小于某一閥值時,系統(tǒng)就會發(fā)送一個消息通知MIDI解碼器啟動PolyNumber平衡算法,將PolyNumber下降至安全范圍內(nèi),并繼續(xù)解碼;待解碼速度高于播放速度,即DataBuffer的增長速度大于縮減速度時,(data_in-data_out)的值會越來越大,直至大于另一較高的閥值,系統(tǒng)又會發(fā)送另一個消息,通知MIDI解碼器將PolyNumber恢復,以進行全和弦高音質(zhì)的解碼。
所述的動態(tài)調(diào)整MIDI和弦數(shù)的音樂合成方法,其特征在于在進行PolyNumber的平衡計算時,根據(jù)當前各個Poly的音量由大到小進行保留的。
所述的動態(tài)調(diào)整MIDI和弦數(shù)的音樂合成方法,其特征在于設定多個PolyNumber平衡計算的閥值,根據(jù)不同的Buffer使用量進行多級別的Poly調(diào)整。
藉由上述技術方案,本發(fā)明具有的技術效果是
1、通過本發(fā)明方法,首先保證了MIDI播放的順暢進行,同時,在進行PolyNumber的平衡計算時,我們的計算依據(jù)是根據(jù)當前各個Poly的音量由大到小進行保留的,因此,就可以最大限度地保留主旋律,保證音樂在聽覺上的連貫性和完整性。
2、本發(fā)明方法可以完全由軟件實現(xiàn),節(jié)省了硬件上的成本;而在軟件資源的需求上,由于平衡低點(LowPoint)、平衡高點(HighPoint)、額定和弦數(shù)等參數(shù)完全可以根據(jù)實際系統(tǒng)的情況進行客戶化配置,從而使得整個方案在應用上非常靈活,適應能力極強。
圖1是使用本發(fā)明方法的系統(tǒng)示意圖。
具體實施方式本發(fā)明的主要設計依據(jù)是MIDI樂曲和弦分布的不平衡性和MIDI解碼器額定和弦數(shù)的可控制性。前者是指每一首MIDI樂曲的和弦分布都是不均衡的,有時高,有時低,和弦越高,解碼速度相對就越慢,但偶爾的高和弦并不會影響整體的播放速度;MIDI解碼器的額定和弦數(shù)是指在MIDI解碼中所能支持的最高和弦數(shù),超過此值的和弦都將被略過,不進行解碼。所謂額定和弦可控制,就是說可以根據(jù)需要設定MIDI解碼器的最高和弦數(shù)。
如圖1所示本發(fā)明在MIDI解碼器(MIDI Decoder)、音頻控制器(Voiceband)、數(shù)據(jù)緩沖器(DataBuffer)之間構建了一套動態(tài)反饋(Feedback)機制,通過判斷data_in與data_out之間的緩沖數(shù)據(jù)量決定是否進行PolyNumber平衡算法的動態(tài)調(diào)整,以及如何調(diào)整。系統(tǒng)工作過程是這樣的解碼器解碼得到的數(shù)據(jù)按照一定的數(shù)據(jù)包大小放入DataBuffer,同時,data_in數(shù)據(jù)指針加1。Voiceband每播放完一組數(shù)據(jù)后就會再從DataBuffer中提取數(shù)據(jù),每提取一包,data_out加1。當(data_in-data_out)的值小于某一閥值(設為LowPoint)時,系統(tǒng)就會發(fā)送一個消息通知Decoder啟動PolyNumber平衡算法,將PolyNumber下降至安全范圍內(nèi),并繼續(xù)解碼。待解碼速度高于播放速度,即DataBuffer的增長速度大于縮減速度時,(data_in-data_out)的值會越來越大,直至大于另一較高的閥值(設為HighPoint),系統(tǒng)又會發(fā)送另一個消息,通知Decoder將PolyNumber恢復,以進行全和弦高音質(zhì)的解碼。
通過該方法,首先保證了MIDI播放的順暢進行,同時,在進行PolyNumber的平衡計算時,我們的計算依據(jù)是根據(jù)當前各個Poly的音量由大到小進行保留的,因此,就可以最大限度地保留主旋律,保證音樂在聽覺上的連貫性和完整性。
該發(fā)明可以完全由軟件實現(xiàn),節(jié)省了硬件上的成本;而在軟件資源的需求上,由于平衡低點(LowPoint)、平衡高點(HighPoint)、額定和弦數(shù)等參數(shù)完全可以根據(jù)實際系統(tǒng)的情況進行客戶化配置,從而使得整個方案在應用上非常靈活,適應能力極強。
根據(jù)實際系統(tǒng)的資源空閑情況,本發(fā)明還可以存在多種變化。比方說,可以設定多個PolyNumber平衡計算的閥值,根據(jù)不同的Buffer使用量進行多級別的Poly調(diào)整,以實現(xiàn)更加平穩(wěn)的過渡;或者,除了進行PolyNumber的調(diào)整外,還可以對各種音效的處理進行開關。在系統(tǒng)資源比較空閑時,增加一些音效,以使音樂的表現(xiàn)力更趨完美,而資源緊張時,則可以把這些音效有選擇性地關閉,節(jié)約有限的資源進行最必要的計算,等等。
綜上所述僅為本發(fā)明的較佳實施例而已,并非用來限定本發(fā)明的實施范圍。即凡依本發(fā)明申請專利范圍的內(nèi)容所作的等效變化與修飾,都應為本發(fā)明的技術范疇。
權利要求
1.一種動態(tài)調(diào)整MIDI和弦數(shù)的音樂合成方法,其特征在于在MIDI解碼器、音頻控制器、數(shù)據(jù)緩沖器之間構建了一套動態(tài)反饋機制,通過判斷data_in與data_out之間的緩沖數(shù)據(jù)量決定是否進行PolyNumber平衡算法的動態(tài)調(diào)整,其工作過程是這樣的解碼器解碼得到的數(shù)據(jù)按照一定的數(shù)據(jù)包大小放入數(shù)據(jù)緩沖器,同時,data_in數(shù)據(jù)指針加1,音頻控制器每播放完一組數(shù)據(jù)后就會再從數(shù)據(jù)緩沖器中提取數(shù)據(jù),每提取一包,data_out加1;當(data_in-data_out)的值小于某一閥值時,系統(tǒng)就會發(fā)送一個消息通知MIDI解碼器啟動PolyNumber平衡算法,將PolyNumber下降至安全范圍內(nèi),并繼續(xù)解碼;待解碼速度高于播放速度,即DataBuffer的增長速度大于縮減速度時,(data_in-data_out)的值會越來越大,直至大于另一較高的閥值,系統(tǒng)又會發(fā)送另一個消息,通知MIDI解碼器將PolyNumber恢復,以進行全和弦高音質(zhì)的解碼。
2.根據(jù)權利要求
1所述的動態(tài)調(diào)整MIDI和弦數(shù)的音樂合成方法,其特征在于在進行PolyNumber的平衡計算時,根據(jù)當前各個Poly的音量由大到小進行保留的。
3.根據(jù)權利要求
1或2所述的動態(tài)調(diào)整MIDI和弦數(shù)的音樂合成方法,其特征在于設定多個PolyNumber平衡計算的閥值,根據(jù)不同的Buffer使用量進行多級別的Poly調(diào)整。
專利摘要
一種動態(tài)調(diào)整MIDI和弦數(shù)的音樂合成方法,其特征在于在MIDI解碼器、音頻控制器、數(shù)據(jù)緩沖器之間構建了一套動態(tài)反饋機制,通過判斷data_in與data_out之間的緩沖數(shù)據(jù)量決定是否進行PolyNumber的動態(tài)調(diào)整,以及如何調(diào)整。本發(fā)明主要解決現(xiàn)有MIDI軟解碼系統(tǒng)的音質(zhì)和解碼速度上的平衡問題,最大限度的實現(xiàn)高和弦高速率的MIDI解碼。
文檔編號G10H7/00GK1991973SQ200510112245
公開日2007年7月4日 申請日期2005年12月29日
發(fā)明者王騫, 劉守華 申請人:展訊通信(上海)有限公司導出引文BiBTeX, EndNote, RefMan