專利名稱:實(shí)時(shí)動(dòng)態(tài)樂器數(shù)字接口控制的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及樂器數(shù)字接口(以下稱為“MIDI”),具體涉及能實(shí)時(shí)改變MIDI參數(shù)的MIDI控制器。
樂器產(chǎn)生形成音樂的聲波。例如,
圖1示出了一架鋼琴100。鋼琴100具有多個(gè)琴鍵102。每個(gè)琴鍵102與一個(gè)琴槌104耦聯(lián),圖中只示出了一個(gè)琴鍵/琴槌的組合。鋼琴100還包括多根張緊的琴弦106,其中一根琴弦106與琴槌104相配。演奏時(shí),演奏者壓下一個(gè)或多個(gè)琴鍵102。琴鍵102移動(dòng)相關(guān)的琴槌使其敲擊相關(guān)的一根琴弦106。琴弦106振動(dòng)產(chǎn)生聲波。因琴弦106振動(dòng)而產(chǎn)生的實(shí)際音調(diào)取決于琴弦106的長(zhǎng)度、琴弦所受的張力和通過演奏者的敲擊而傳遞到琴弦106上的能量。
可以用電使琴弦106產(chǎn)生振動(dòng)和用電子合成器產(chǎn)生音樂。圖2表示一個(gè)帶有多個(gè)琴鍵202的電子鍵盤200。演奏者用與鋼琴100類似的方式通過敲擊任何鍵202即可在電子鍵盤200上進(jìn)行演奏。當(dāng)壓下一個(gè)琴鍵202時(shí),不是使琴槌敲擊琴弦,而是由琴鍵200產(chǎn)生電子音樂信號(hào)204。音樂信息204由音調(diào)發(fā)生器206接收。音調(diào)發(fā)生器206利用音樂信號(hào)204產(chǎn)生聲波。圖2表示一些電子合成器,例如包含琴鍵202和音調(diào)發(fā)生器206的鍵盤200,其中琴鍵202確定演奏者想要產(chǎn)生的聲波(控制器部分),而音調(diào)發(fā)生器206真正產(chǎn)生聲波(即聲音發(fā)生器)。
圖3表示可以把控制器部分和聲音發(fā)生器分成兩個(gè)分離的部件。參照?qǐng)D3,電子鍵盤300包括多個(gè)琴鍵302。當(dāng)把一個(gè)琴鍵302壓下時(shí),鍵盤300產(chǎn)生電子音樂信號(hào)304。鍵盤300通過有形連接器308連接到實(shí)際上與鍵盤300分離的音調(diào)發(fā)生器306上。
利用幾種工業(yè)標(biāo)準(zhǔn)音樂接口中的一種接口可以將鍵盤200或300分別與和它們相配的音調(diào)發(fā)生器206或306連通。這些接口可以是數(shù)字的。一種工業(yè)上公知的數(shù)字接口是MIDI。例如,在采用MIDI接口的鍵盤200的情況下,當(dāng)演奏者通過敲擊一個(gè)或多個(gè)琴鍵202在鍵盤200上演奏樂曲時(shí),鍵盤200產(chǎn)生數(shù)字MIDI信號(hào)。相應(yīng)的音調(diào)發(fā)生器利用該MIDI文件或MIDI信號(hào)產(chǎn)生所需的音樂。與MIDI有關(guān)的其它資料可參見Christian Braut的“音樂家MIDI指南”(The Musician′s Guide如MIDI),Sybex,1994或Rob Young的“MIDI文件”(The MIDI Files),Prentice Hall,1996。以格式0存儲(chǔ)的MIDI文件包含MIDI META事件(“MME”)和MIDI聲音信息事件(“MVE”)。將一個(gè)事件順序串稱為塊數(shù)據(jù)。MME代表由版權(quán)信息、公告文本、順序/軌道名文本、定位節(jié)拍(set tempo)信息等構(gòu)成的MIDI文件中的數(shù)據(jù)。MVE代表由通道信息、音符接通/斷開信息、音調(diào)和音色信息等構(gòu)成的MIDI文件中的數(shù)據(jù)。用時(shí)間差分量存儲(chǔ)每個(gè)事件(MME或MVE)。每個(gè)時(shí)間差單元等于(節(jié)拍時(shí)間)/每個(gè)MIDI四分音符的時(shí)鐘滴(clock tick數(shù))。用定位節(jié)拍MME來確定節(jié)拍。因此,時(shí)間差分量是微秒數(shù)除以時(shí)鐘滴數(shù)。每個(gè)時(shí)間差單元代表存儲(chǔ)事件之間的時(shí)間延遲量。從塊數(shù)據(jù)中存儲(chǔ)的第一事件到塊數(shù)據(jù)中存儲(chǔ)的另一事件,在塊數(shù)據(jù)中累計(jì)的時(shí)間差單元數(shù)表示從樂曲開始直到演奏事件結(jié)束所經(jīng)過的所有時(shí)間。
可以用三種格式中的一種格式存儲(chǔ)每個(gè)MIDI文件。格式0文件包含按演奏者演奏的相應(yīng)音符/琴弦的順序存放的MVE。換句話說,格式0文件包含按演奏順序排列的各個(gè)MVE。存儲(chǔ)在格式1和格式2文件中的信息與存儲(chǔ)在格式0文件中的信息相似。然而,與格式0不同,存儲(chǔ)在格式1和2文件中的MIDI文件包含多個(gè)事件順序串或多個(gè)塊數(shù)據(jù)。而且,格式1文件僅包含第一塊數(shù)據(jù)中的MME,而格式2文件則包含第一塊數(shù)據(jù)中的大多數(shù)MME(例如每個(gè)格式2的塊數(shù)據(jù)都具有定位節(jié)拍)。然而,在每個(gè)塊數(shù)據(jù)中都存儲(chǔ)有MVE。因此,格式1和2文件并不包含演奏者演奏的單一順序的MVE。相反,它們包含演奏順序中多個(gè)軌道中每一個(gè)軌道的信息。軌道是與塊數(shù)據(jù)有關(guān)的音樂標(biāo)記。例如將打擊樂存儲(chǔ)到第一軌道,將弦樂存儲(chǔ)到第二軌道,將管樂存儲(chǔ)到第三軌道。構(gòu)成格式1或2 MIDI文件的塊數(shù)據(jù)的總數(shù)與軌道數(shù)相對(duì)應(yīng)。
由于音調(diào)發(fā)生器產(chǎn)生的是電子音樂信號(hào)而不是聲波,所以MIDI文件中的大部分MME都是不必要的。此外,由于格式1和2不是順序存儲(chǔ)的,而是按軌道順序存儲(chǔ)的,所以在再現(xiàn)時(shí)需要大量的處理資源來實(shí)時(shí)地進(jìn)行對(duì)MIDI文件的調(diào)節(jié)。因此,在再現(xiàn)MIDI文件時(shí)需減少實(shí)時(shí)調(diào)整所需的處理時(shí)間和處理資源。
本發(fā)明的優(yōu)點(diǎn)和目的可從下面的描述中部分地顯示出來,或可以通過本發(fā)明的實(shí)踐而認(rèn)識(shí)到。借助于在所附的權(quán)利要求中特別指出的要素及組合可以達(dá)到和實(shí)現(xiàn)本發(fā)明的優(yōu)點(diǎn)和目的。
為了達(dá)到本發(fā)明的效果和根據(jù)本發(fā)明的目的,如本文所實(shí)施和充分描述的,按照本發(fā)明的系統(tǒng)通過把MIDI文件的格式更改成修正的格式并刪除對(duì)再現(xiàn)無用的MIDI事件而減少了對(duì)樂器數(shù)字接口(MIDI)文件進(jìn)行實(shí)時(shí)處理所需的處理時(shí)間和處理資源。為達(dá)到此目的,設(shè)置了預(yù)處理器,該預(yù)處理器提取時(shí)間信息并把時(shí)間信息存儲(chǔ)到修正的MIDI文件中。然后,預(yù)處理器順序地提取每個(gè)MIDI事件以確定該事件是MIDI聲音信息事件還是MIDI META定位節(jié)拍事件。如果判定該事件是MIDI聲音信息事件或是MIDI META定位節(jié)拍事件,則將該事件存儲(chǔ)到修正的MIDI文件中,否則則將其刪除。
此外,本發(fā)明的系統(tǒng)通過組配各種MIDI通道,MIDI通道聲音信息或它們的任何組合而減少了實(shí)時(shí)處理樂器數(shù)字接口(MIDI)文件所需的處理時(shí)間和處理資源。組配控制有利于在再現(xiàn)MIDI文件時(shí)把實(shí)時(shí)控制信號(hào)送到MIDI通道。
納入說明書并構(gòu)成說明書一部分的附圖示出本發(fā)明的優(yōu)選實(shí)施例,并與說明書一起解釋本發(fā)明的目的、優(yōu)點(diǎn)和原理。在附圖中,圖1是表示現(xiàn)有鋼琴的示意圖;圖2是表示現(xiàn)有電子鍵盤的示意圖;圖3是表示另一種現(xiàn)有電子鍵盤的示意圖;圖4是表示按照本發(fā)明構(gòu)成的記錄系統(tǒng)的示意圖;圖5是表示按照本發(fā)明所述MIDI文件預(yù)處理方法的流程圖;圖6是表示按照本發(fā)明所述把格式0 MIDI文件轉(zhuǎn)換成修正的格式0MIDI文件的方法流程圖;圖7是表示按照本發(fā)明所述把格式1的MIDI文件轉(zhuǎn)換成修正的格式0MIDI文件的方法流程圖;圖8是表示本發(fā)明所述控制處理管理器的示意圖;圖9是表示對(duì)本發(fā)明所述對(duì)通道進(jìn)行組配的方法流程圖;圖10是表示本發(fā)明所述數(shù)據(jù)優(yōu)化方法的流程圖;和圖11是表示本發(fā)明所述MIDI輸出接口電路的示意圖。
下面將對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)說明,優(yōu)選實(shí)施例的實(shí)例示于附圖中。包含在以下說明中和示于附圖中的所有內(nèi)容應(yīng)理解為用作說明而沒有限制意義。
本發(fā)明所述的方法和裝置能夠在再現(xiàn)期間有響應(yīng)地和動(dòng)態(tài)地實(shí)時(shí)控制MIDI文件。有響應(yīng)和動(dòng)態(tài)的實(shí)時(shí)控制主要是通過配備對(duì)每個(gè)MIDI文件進(jìn)行預(yù)處理的MIDI控制器實(shí)現(xiàn)的。此外,MIDI控制器的結(jié)構(gòu)能使用戶組配類似的MIDI樂器以便于MIDI控制器為由用戶定義的組配基本上同時(shí)地改變用戶選定的MIDI參數(shù)。
圖4表示按本發(fā)明構(gòu)成的記錄系統(tǒng)400。記錄系統(tǒng)400包括具有多個(gè)琴鍵404的鍵盤402、MIDI控制器406、音調(diào)發(fā)生器408和存儲(chǔ)器410。MIDI控制器406可以是個(gè)人計(jì)算機(jī)或其它類型的計(jì)算機(jī),例如,適合包含下述特征的混音板。MIDI控制器406包括預(yù)處理器412、控制過程管理器414、和數(shù)據(jù)優(yōu)化器416。預(yù)處理器412對(duì)存儲(chǔ)在存儲(chǔ)器410中的MIDI文件418進(jìn)行修正,得到修正的MIDI文件420。管理器414對(duì)經(jīng)修正的MIDI文件420進(jìn)行更改以實(shí)時(shí)地形成更改的MIDI文件422。數(shù)據(jù)優(yōu)化器416優(yōu)化已更改的MIDI文件422并形成傳輸給音調(diào)發(fā)生器408的優(yōu)化MIDI文件424。
用戶(演奏者)通過壓下鍵盤402上的琴鍵404來操作記錄系統(tǒng)。鍵盤402產(chǎn)生可按任何格式以MIDI文件418的形式存儲(chǔ)的表示樂譜的比特流,該比特流由MIDI控制器406接收。當(dāng)鍵盤402動(dòng)作時(shí),MIDI控制器406起管道作用,它或者把MIDI文件418存儲(chǔ)到存儲(chǔ)器410中,或者使比特流進(jìn)入音調(diào)發(fā)生器408。MIDI控制器406允許演奏者在再現(xiàn)已存儲(chǔ)的MIDI文件418時(shí)調(diào)節(jié)MIDI參數(shù)。作為另一種選擇,鍵盤402能夠產(chǎn)生MIDI比特流,該比特流在輸入MIDI控制器406之前就作為MIDI文件418存儲(chǔ)在存儲(chǔ)器410中。用這種方式連接時(shí),可以把鍵盤402直接與音調(diào)發(fā)生器408和/或存儲(chǔ)器410相連。
然而,當(dāng)記錄系統(tǒng)400通過直接從存儲(chǔ)器410中檢索MIDI文件418來播放樂曲時(shí),最好是使用MIDI控制器406。播放樂曲時(shí),MIDI控制器406從存儲(chǔ)器410中檢索MIDI文件418,并通過預(yù)處理器412、管理器414以及數(shù)據(jù)優(yōu)化器416對(duì)檢索到的文件進(jìn)行處理,然后把優(yōu)化的MIDI文件送到音調(diào)發(fā)生器408。MIDI控制器406上設(shè)有下文中將詳細(xì)說明的預(yù)處理和各種控制處理,這樣可實(shí)時(shí)地調(diào)整MIDI文件以提高再現(xiàn)質(zhì)量。
在一個(gè)優(yōu)選實(shí)施例中,MIDI控制器的預(yù)處理器412、管理器414和數(shù)據(jù)優(yōu)化器416分別是在由主PC機(jī)的微處理器執(zhí)行的軟件中實(shí)現(xiàn)的。在另一個(gè)實(shí)施例中,所構(gòu)成的MIDI控制器406包括專用微處理器,用于執(zhí)行與預(yù)處理器412、管理器414和數(shù)據(jù)優(yōu)化器416各功能相應(yīng)的軟件。在又一個(gè)實(shí)施例中,MIDI控制器406各部分的功能是用硬件電路或硬件與軟件結(jié)合實(shí)現(xiàn)的。
在以下的描述中,將詳細(xì)闡述能構(gòu)成上述任一實(shí)施例所述MIDI控制器406的各預(yù)處理器412、管理器414和數(shù)據(jù)優(yōu)化器416各自的功能。最好將該系統(tǒng)裝到以Windows為基礎(chǔ)的操作環(huán)境的PC機(jī)上。
由MIDI控制器406完成的預(yù)處理和控制處理根據(jù)用戶需要實(shí)時(shí)地修正MIDI參數(shù)進(jìn)而改變MIDI文件418,從而使得由音調(diào)發(fā)生器408產(chǎn)生的電子音樂信號(hào)聽上去多少顯得自然。為了提高M(jìn)IDI控制器406通過控制處理修正文件418的能力,在MIDI控制器406上配備了預(yù)處理器412。預(yù)處理器412具有把不同格式的MIDI文件從其現(xiàn)有格式轉(zhuǎn)換成標(biāo)準(zhǔn)格式0型文件的功能。此外,預(yù)處理器412從每個(gè)MIDI文件中除去在再現(xiàn)時(shí)不需要的信息,從而將MIDI文件轉(zhuǎn)換成修正的格式0 MIDI文件。如上所述,存儲(chǔ)在MIDI文件418中的大部分MME在再現(xiàn)時(shí)無用的。這包括版權(quán)、公告文本、順序/軌道名文本、歌詞(lyric)文本,時(shí)間標(biāo)記、琴鍵標(biāo)記等。事實(shí)上,為再現(xiàn)而存儲(chǔ)在MIDI文件418中的相關(guān)信息只包括定位節(jié)拍MME,塊數(shù)據(jù)的第三個(gè)字(每個(gè)四分音符MIDI的時(shí)鐘滴數(shù)(以下稱為“NTK”)和MVE。
圖5是表示預(yù)處理器412完成預(yù)處理功能的流程圖500。首先,預(yù)處理器412提取存儲(chǔ)在存儲(chǔ)器410中的MIDI文件418(步驟502)。提取MIDI文件418之后,預(yù)處理器412確定MIDI文件418的格式(步驟504)。MIDI文件可以按格式0,1或2存儲(chǔ)。預(yù)處理器412根據(jù)檢測(cè)到的文件格式,把該格式轉(zhuǎn)換成修正的格式0 MIDI文件(步驟506)。然后把修正后的MIDI文件輸出到管理器414(步驟508)。
圖6是表示由預(yù)處理器412完成的把以格式0存儲(chǔ)的每個(gè)MIDI文件轉(zhuǎn)換成修正的格式0 MIDI文件功能的流程圖600。為達(dá)到說明圖6的目的,假設(shè)MIDI文件418為格式0。首先,預(yù)處理器412從MIDI文件418中提取NTK并把NTK存儲(chǔ)到修正的MIDI文件420(步驟602)。然后,預(yù)處理器412從MIDI文件418中提取下一個(gè)MIDI事件(步驟604)。預(yù)處理器412判斷該MIDI事件是否是MVE(步驟606)。如果該MIDI事件是MVE,則將這個(gè)事件存儲(chǔ)到修正的MIDI文件420中(步驟610)。如果該事件不是MVE而是MME,預(yù)處理器412將進(jìn)一步判斷這個(gè)MME是否為定時(shí)節(jié)拍事件(步驟608)。如果MME是定位節(jié)拍事件,則將其存到修正的MIDI文件420中(步驟610)。存儲(chǔ)在修正的MIDI文件中的每個(gè)文件都包含時(shí)間差信息和MIDI事件,該事件可以是MVE或定位節(jié)拍MME。最后,預(yù)處理器412判斷是否已將MIDI文件418中的所有MIDI事件全部處理完畢(步驟612)。如果還未處理完全部MIDI事件,則重復(fù)步驟604-612,否則,預(yù)處理過程結(jié)束并把修正的MIDI文件420輸出到管理器414中(步驟614)。
圖7是表示由預(yù)處理器412完成的把以格式1存儲(chǔ)的每個(gè)MIDI文件轉(zhuǎn)換成修正的格式0 MIDI文件的功能流程圖。如上所述,格式1文件與格式0文件的區(qū)別在于,格式1文件中的MVE信息遍布多個(gè)軌道,其中用塊數(shù)據(jù)表示每個(gè)軌道。然而,定位節(jié)拍MME和NTK存儲(chǔ)在第一塊中。因此,除了用存儲(chǔ)修正的MIDI文件代替輸出修正的MIDI文件之外,其它均按照與上述步驟602-614處理格式0文件相同的方式處理第一塊數(shù)據(jù)(步驟702)。預(yù)處理器412從修正的MIDI文件中提取NTK數(shù)據(jù)并將其存儲(chǔ)到臨時(shí)的修正的MIDI文件中(步驟704)。對(duì)于格式1的MIDI文件來說,下一個(gè)檢驗(yàn)的塊數(shù)據(jù)和每個(gè)后續(xù)塊數(shù)據(jù)文件中只包含MVE。因此,為了建立單一的以格式0格式存儲(chǔ)的修正的MIDI文件,預(yù)處理器412把下一個(gè)塊數(shù)據(jù)和修正的MIDI文件合并以得到修正的MIDI文件420。為了確保按合適的順序存儲(chǔ)各MVE,預(yù)處理器412從修正的MIDI文件中順序地提取各MVE并產(chǎn)生修正的MIDI文件累計(jì)時(shí)間信號(hào)(步驟706)。預(yù)處理器412幾乎同時(shí)地從下一個(gè)塊數(shù)據(jù)中順序地提取事件并產(chǎn)生下一個(gè)塊數(shù)據(jù)累計(jì)時(shí)間信號(hào)(步驟708)。接下來,預(yù)處理器412判斷修正的MIDI文件累計(jì)時(shí)間信號(hào)是否大于下一個(gè)塊數(shù)據(jù)累計(jì)時(shí)間信號(hào)(步驟710)。如果修正的MIDI文件累計(jì)時(shí)間信號(hào)不大于下一個(gè)塊數(shù)據(jù)累計(jì)時(shí)間信號(hào),就把從修正的MIDI文件中提取的MVE存儲(chǔ)到臨時(shí)的修正的MIDI文件內(nèi)而將下一個(gè)塊數(shù)據(jù)MVE放回塊數(shù)據(jù)中(步驟712)。否則,將下一個(gè)塊數(shù)據(jù)MVE存儲(chǔ)到臨時(shí)的修正的MIDI文件中而把從修正的MIDI文件中提取的MVE放回修正的MIDI文件中(步驟714)。在把存儲(chǔ)到修正的MIDI文件和下一個(gè)塊數(shù)據(jù)中的所有MVE合并成臨時(shí)的修改的MIDI文件之前,預(yù)處理器412重復(fù)步驟706-714(步驟716)。預(yù)處理器412存儲(chǔ)臨時(shí)的修正的MIDI文件作為修正的MIDI文件(步驟718)。在處理完所有塊數(shù)據(jù)文件之前,預(yù)處理器重復(fù)步驟706-718(步驟720)。處理完所有文件之后,把修正的MIDI文件420輸出到管理器414(步驟722)。
為了轉(zhuǎn)換存儲(chǔ)在格式2協(xié)議中的MIDI文件,采取了與轉(zhuǎn)換格式1文件相似的步驟,其中只有一點(diǎn)區(qū)別。該區(qū)別是,在格式2的MIDI文件中,每個(gè)塊數(shù)據(jù)具有獨(dú)立的定位節(jié)拍和與之有關(guān)的NTK事件。這不同于格式0和格式1文件。具體地說,格式0事件是按順序存儲(chǔ)的,其不需要塊數(shù)據(jù)的合并。格式1事件是將每個(gè)事件按順序存儲(chǔ)在每個(gè)塊中,而每個(gè)塊具有與存入第一塊中的值一致的時(shí)間差值,以便于預(yù)處理器412順序地合并事件。格式2文件與格式1文件相類似,然而,時(shí)間差值并不與每個(gè)塊數(shù)據(jù)相一致。為了將文件合并,預(yù)處理器412疊加一模擬時(shí)間差,從而有利于將塊數(shù)據(jù)合并成一個(gè)文件。在優(yōu)選實(shí)施例中,把定位節(jié)拍定為500,000微秒而將NTK設(shè)為25,000。這些值的選擇使得轉(zhuǎn)換的文件和原文件之間的時(shí)間誤差為最小。不象對(duì)格式1的MIDI文件那樣進(jìn)行簡(jiǎn)單的時(shí)間差累加,對(duì)格式2的MIDI文件來說,事件i(Ts(i))的累計(jì)時(shí)間等于(時(shí)間差(n)·Tp(n))中n=0至i的和,其中時(shí)間差(n)是第(n)個(gè)事件的時(shí)間差數(shù)值,Tp(n)是在第(n)個(gè)事件時(shí)刻塊的定位節(jié)拍值。因此,第i個(gè)事件的新時(shí)間差值dt(i)可以用等于[(Ts(i)-Ts(i-1))/T]取整值的dt(i)來表示,其中Ts(-1)=0,T是定位節(jié)拍值/(NTK)(在這個(gè)實(shí)施例中T=20微秒)。
預(yù)控制器412把修正的MIDI文件420轉(zhuǎn)換成修正的格式0 MIDI文件之后,修正的MIDI文件420對(duì)由管理器414的控制處理器所進(jìn)行的實(shí)時(shí)調(diào)節(jié)更加敏感。圖8表示管理器414的一個(gè)實(shí)施例,該管理器包括三個(gè)控制處理器。三個(gè)控制處理器包括預(yù)定控制處理器800,手工控制處理器802,和軟件控制處理器804。這些處理器對(duì)修正的MIDI文件420的相對(duì)作用可由用戶通過調(diào)節(jié)加權(quán)系數(shù)來控制(未示出)。用加權(quán)系數(shù)產(chǎn)生展現(xiàn)控制處理器作用的加權(quán)平均值。這些控制處理器(或控制處理器的加權(quán)平均值)更改修正的MIDI文件420中的參數(shù)以形成更改的MIDI文件422。
預(yù)定控制處理器800在執(zhí)行MIDI程序之前置位,以便在播放MIDI文件時(shí),在預(yù)定時(shí)刻改變樂器參數(shù)或組配。此外,預(yù)定控制處理器800可以改變通道組配(下文將詳細(xì)描述)、通道聲音信息組配(下文將詳細(xì)說明)、和在再現(xiàn)期間由程序員在預(yù)定時(shí)刻確定的其它參數(shù)。在再現(xiàn)樂曲時(shí),預(yù)置的條件是固定的而且可以使這些條件在任何時(shí)間發(fā)生。下面將說明,如何通過手動(dòng)操作的手動(dòng)控制處理器802的兩個(gè)接口中的任一個(gè)將用戶和預(yù)定控制處理器800聯(lián)系起來。
手動(dòng)控制處理器802設(shè)有兩個(gè)手動(dòng)操作的接口。每個(gè)接口都足以完成手工操作。一個(gè)接口是圖形控制接口單元,它在優(yōu)選實(shí)施例中相當(dāng)于在主PC機(jī)(未示出)上顯示的圖形接口屏。另一個(gè)接口是控制面板(未示出),它在優(yōu)選實(shí)施例中接到MIDI控制器406的串行口(未示出)上。通常,手工控制處理器802起現(xiàn)有混音板(未示出)的作用,它使得演奏者在再現(xiàn)期間能調(diào)節(jié)再現(xiàn)速度、總體音量和音調(diào)等。利用這些接口可以調(diào)節(jié)所有MIDI文件通道的參數(shù)和參數(shù)組配以及調(diào)節(jié)通道組配。用戶用固定的控制旋鈕調(diào)節(jié)MIDI文件參數(shù)。這些控制旋鈕成組設(shè)置,每組包含可連續(xù)調(diào)節(jié)的五個(gè)控制旋鈕和三個(gè)設(shè)成單觸式或開/關(guān)式的開關(guān)。此外,圖形控制接口單元帶有字母數(shù)字接口,以供用戶輸入字母數(shù)字?jǐn)?shù)據(jù),例如通道組配的識(shí)別名。利用選擇數(shù)據(jù)的字母數(shù)字接口和通過壓下圖形控制接口上的OK按鈕可以輸入任何字母數(shù)字?jǐn)?shù)據(jù)。
軟件控制處理器804可以是模糊邏輯控制處理器。模糊邏輯增強(qiáng)了軟件控制處理器804的能力。此外,軟件控制處理器804能夠更改各種MIDI文件輸入從而使參數(shù)例如每個(gè)MIDI信號(hào)的節(jié)拍相一致。這種控制對(duì)用實(shí)況信號(hào)和記錄信號(hào)進(jìn)行同時(shí)演奏是特別有用的。
更具體地說,軟件控制處理器804是處理兩種數(shù)據(jù)源的模糊控制器。一種數(shù)據(jù)源是轉(zhuǎn)換后的模擬數(shù)據(jù)源,例如把人的聲音或模擬樂器轉(zhuǎn)換成必要的控制信號(hào)的數(shù)據(jù)源。另一種數(shù)據(jù)源是數(shù)字源,例如存儲(chǔ)的MIDI文件或與MIDI兼容的數(shù)字式樂器。
在處理之前,通過提取源的參數(shù),把模擬數(shù)據(jù)源的人的實(shí)況演出特征(例如緩慢的或快速的,強(qiáng)音或弱音等)轉(zhuǎn)換成MIDI控制參數(shù)。這些參數(shù)是例如音調(diào)、音量、速度、節(jié)拍等。一旦轉(zhuǎn)換成MIDI控制參數(shù),軟件控制處理器804的作用就是把用戶選定的參數(shù)例如數(shù)字?jǐn)?shù)據(jù)源的節(jié)拍與原始(演出者的實(shí)況表演特征)模擬數(shù)據(jù)源相匹配。模糊控制處理包括用于音樂節(jié)拍和片段的參數(shù)調(diào)節(jié)模型以便于軟件控制處理器804的工作。
為了便于控制處理器800、802和804工作,MIDI控制器406具備通道組配、通道聲音信息組配和復(fù)合組配的功能。復(fù)合組配是將通道組配和通道聲音信息組配相結(jié)合。MIDI控制器406利用來自控制處理器800、802和804的指令控制各種組配而不需要控制各個(gè)通道和通道聲音信息。
一種工業(yè)標(biāo)準(zhǔn)的MIDI記錄系統(tǒng)具有16個(gè)通道。通常每個(gè)通道一次只產(chǎn)生一種樂器的聲音。如果把音調(diào)發(fā)生器408配置為傳統(tǒng)的音調(diào)發(fā)生器,該音調(diào)發(fā)生器每次能產(chǎn)生多達(dá)16種樂器的音樂。通道聲音信息是一種改變音符或個(gè)別通道發(fā)聲方式的信號(hào)。換句話說,它可以是持續(xù)奏一個(gè)音符、加入混響效果等的信息。
通道組配用來調(diào)節(jié)某組樂器的參數(shù)。例如,可要求同時(shí)調(diào)節(jié)所有管樂器通道。圖9是表示MIDI控制器406為進(jìn)行通道組配而完成的功能的流程圖。首先,選擇組名(步驟902)。接著給組名指定組配到一起的通道(步驟904)。特別是,MIDI控制器406以字節(jié)串的形式存儲(chǔ)通道組配信息。字節(jié)串中的每個(gè)邏輯“1”位表示指定給該通道組的一個(gè)特定通道。因此,如果為這一組指定了四個(gè)樂器通道,那么文件中將包含的字節(jié)串其所有位處于邏輯“0”,但是與指定通道有關(guān)的4位除外。每個(gè)邏輯“1”代表一個(gè)有關(guān)的個(gè)別通道。因此,當(dāng)選擇組配通道進(jìn)行控制時(shí),所有指定的各通道都接收指令。
更具體地說,將通道組配到一起可使用戶只需指出通道組名和要進(jìn)行的改變就可對(duì)每組樂器的特定參數(shù)進(jìn)行調(diào)整,而不必分別給每個(gè)通道號(hào)指出變化。利用圖形控制接口來設(shè)置通道組以輸入通道組名,然后選擇所需的通道,最后按下OK按鈕(如圖9中的流程圖900所示)。例如,如果將記錄系統(tǒng)400配置成基本上同時(shí)處理兩種MIDI文件,例如MIDI源1和MIDI源2,那么每個(gè)通道組信息文件的格式是通道_組_名字節(jié)1字節(jié)2字節(jié)3字節(jié)4,其中通道_組_名是以字符串形式輸入的通道組名。四個(gè)數(shù)據(jù)字節(jié)1-4表示指定給該組的特定通道,應(yīng)注意到,字節(jié)1和2控制第一MIDI文件的通道而字節(jié)3和4控制第二MIDI文件的通道。組名和通道指定之間用關(guān)閉符號(hào)“”分開。字節(jié)1至字節(jié)4各位的定義如下字節(jié)1MIDI源1的通道15-通道8,其中最高有效位(“MSB”)是通道15;字節(jié)2MIDI源1的通道7-通道0,其中MSB是通道7;字節(jié)3MIDI源2的通道15-通道8,其中MSB是通道15;和字節(jié)4MIDI源2的通道7-通道0,其中MSB是通道7。
對(duì)于用記錄系統(tǒng)400進(jìn)行處理的每個(gè)MIDI文件來說,通道組信息文件包括兩個(gè)字節(jié)。就每個(gè)MIDI文件而言,兩個(gè)字節(jié)中的每位都與該MIDI文件的一個(gè)特定通道有關(guān)。因此,如果選擇某一特定通道,則把相應(yīng)位設(shè)定為1,否則則將其設(shè)置為0。例如,如果一個(gè)人希望用通道組名WINDS來定義管樂樂器組,并包括下列通道處理第一MIDI文件的MIDI源通道9、8、5、4和處理第二MIDI文件的MIDI源通道10、9、6和5,則數(shù)據(jù)格式應(yīng)為WINDS03300660。
MIDI控制器406還用與通道組配相似的方式組配通道聲音信息。然而,不是將通道組配到一起,而是把通道聲音信息組配到一起。這樣,當(dāng)將通道聲音信息組送到某個(gè)通道中時(shí),該通道幾乎同時(shí)接收幾個(gè)通道聲音信息。利用圖形控制接口單元可以把通道聲音信息組配輸入到MIDI控制器406中。每個(gè)通道聲音信息組是兩字節(jié)字串。第一字節(jié)是選定的通道聲音信息,例如音符關(guān)閉、音符接通、多音鍵按壓(polyphonic key pressure)、控制變化、程序變化、通道按壓、和音調(diào)的回旋變化(pitch wheel change)。第二字節(jié)通常是由通道聲音信息產(chǎn)生的具體音符數(shù),雖然也允許是其它信息。通道聲音信息組配結(jié)束時(shí)需要識(shí)別,在優(yōu)選實(shí)施例中,組尾用控制字節(jié)0來表示。
更具體地說,通道聲音信息組配能夠把影響MIDI特性的某些變化組配到一起。這有利于借助控制面板和圖形控制接口單元進(jìn)行控制。按照與通道組配相同的方式對(duì)通道聲音信息進(jìn)行組配,即,輸入通道聲音信息組名,一一選擇或輸入每個(gè)通道聲音信息,然后依次壓下圖形控制接口單元的相加鍵;接著,在完成設(shè)置后壓下OK按鈕,所經(jīng)歷的過程類似于圖9中的流程圖所示過程。一旦設(shè)置完畢,通道聲音信息組配具有以下格式通道_組_名SBDBCBSBDBCBSBDBCB....。在這種格式中,SB是選定通道聲音信息的字節(jié)1,其數(shù)字值和類目的關(guān)系為80=音符關(guān)閉,90=音符接通,A0=多音鍵按壓,B0=控制變化,C0=程序變化,D0=通道按壓,和E0=音調(diào)回旋變化。DB是選定通道語言信息的字節(jié)2,其數(shù)字值一般在00和7F之間,該值表示個(gè)別的音符。然而,對(duì)音符接通、音符關(guān)閉或多音鍵按壓這些功能來說,數(shù)字值80表示它影響所有音符號(hào)數(shù)。控制變化的數(shù)字值是00-7F,它用于選擇控制器。對(duì)通道強(qiáng)制和音調(diào)回旋變化來說,將數(shù)字值固定在唯一數(shù)字值0上。CB是內(nèi)部控制字節(jié)。當(dāng)CB為“0”時(shí),該字節(jié)用于指示通道聲音信息組的結(jié)束,否則在組中存在附加的一些SB和DB。
由于例如音樂表現(xiàn)力和音量經(jīng)常具有內(nèi)在聯(lián)系,所以通道聲音信息組配提高了音樂特性。通道聲音信息組配的功能性使得重放能獲得更有效地控制。例如,音符接通、音符關(guān)閉、呼吸控制器和表現(xiàn)力控制等功能之間的內(nèi)在聯(lián)系可以彼此結(jié)合地進(jìn)行設(shè)定;然后利用下述不同的轉(zhuǎn)換程序,通過調(diào)節(jié)一個(gè)控制旋鈕可對(duì)這些系統(tǒng)參數(shù)進(jìn)行同時(shí)修正。
如上所述,可以將通道和通道聲音信息在復(fù)合組配中組配到一起。這樣便可以用通道聲音信息或通道聲音信息組同時(shí)設(shè)置通道或通道組。設(shè)置的方式如下利用圖形控制接口單元輸入復(fù)合組名,然后選擇通道或通道組。接著,選擇通道聲音信息或通道聲音信息組。完成這一設(shè)置后,按下OK按鈕,完成與圖9中的流程900相類似的過程。復(fù)合組的文件格式是復(fù)合_組_名CH名CH_V_名TAG[CH_NAMECH_V_NAMETAG],其中的CH_NAME是通道組或個(gè)別通道的名稱。個(gè)別通道名用SxCy定義,其中參數(shù)x等于正由MIDI控制器406處理的MIDI文件數(shù)。在優(yōu)選實(shí)施例中,將記錄系統(tǒng)400配置成處理兩個(gè)MIDI文件,因此x等于1或2。參數(shù)y等于0-15范圍內(nèi)的值,它相當(dāng)于MIDI通道數(shù)。因此,Sx表示MIDI文件源而Cy表示通道0-15。CH_V_NAME是通道聲音信息組名,它的格式為SBDB,其中SBDB與上述通道聲音信息組配中所述的SBDB具有相同含義。TAG等于0或1。TAG 0表示沒有其它的組配串,而TAG1表示存在另一組CH_NAMECH_V_NAMETAG數(shù)據(jù)。
控制處理器800、802和804利用修改型或增量型控制處理來更改修正的MIDI文件402以產(chǎn)生經(jīng)更改的MIDI文件422。增量型控制處理是這樣一種處理,其中例如來自處理器800、802或804的控制信號(hào)表示從音符1到音符2的變化是滑音變化,即音符從音符1到音符2的連續(xù)漸變。因此,更改的MIDI文件422包括由管理器414加入的需要產(chǎn)生連續(xù)變化的附加音符。相反,根據(jù)修改型控制處理,控制信號(hào)指示的是從音符1到音符2的瞬間音符變化。在這種情況下,更改的MIDI文件422包括音符變化但不包括音符1和音符2之間的附加音符。因此,修改型控制處理并不增加MIDI文件的尺寸,而只是修改存儲(chǔ)在文件中的MIDI事件。然而,增量型控制處理產(chǎn)生附加的MVE并增加了MIDI文件尺寸。
增量型控制處理可以根據(jù)幾個(gè)不同的數(shù)據(jù)轉(zhuǎn)換程序來進(jìn)行,例如線性轉(zhuǎn)換、對(duì)數(shù)轉(zhuǎn)換、指數(shù)轉(zhuǎn)換、和非線性變換。
線性轉(zhuǎn)換程序通過控制面板或圖形控制接口單元對(duì)在選定的上下范圍內(nèi)傳輸?shù)闹颠M(jìn)行線性轉(zhuǎn)換并得到輸出值。線性轉(zhuǎn)換設(shè)置是通過選擇圖形控制接口單元上的線性轉(zhuǎn)換功能作為轉(zhuǎn)換方法,然后手工選擇上限界和下限界而完成的。隨后利用外部輸入值轉(zhuǎn)換公式進(jìn)行轉(zhuǎn)換
新_值=下_界限+(上_界限-下_界限)V/255 (式1)其中下_界限和上_界限是輸出值的預(yù)置范圍,V是由控制面板或圖形控制接口單元傳輸?shù)闹怠?br>
對(duì)數(shù)轉(zhuǎn)換和指數(shù)轉(zhuǎn)換程序除了它們分別使用對(duì)數(shù)和指數(shù)函數(shù)外,其它均與線性轉(zhuǎn)換程序相類似。對(duì)數(shù)轉(zhuǎn)換是通過下式完成的新_值=下_界限+(上_界限-下_限界)。
(logv/log255) (式2)指數(shù)轉(zhuǎn)換是按下式進(jìn)行的新_值=下_界限+(上_界限-下_界限)·(expv/exp255) (式3)在公式(2)和(3)中,下_界限和上_界限是輸出值的預(yù)置范圍,V是由控制面板或圖形控制接口單元傳輸?shù)闹怠?br>
非線性變換的轉(zhuǎn)換對(duì)輸出值和V進(jìn)行一對(duì)一不規(guī)則轉(zhuǎn)換。這個(gè)方法是通過選擇控制面板或圖形控制接口單元上的非線性變換法然后順序輸入與原始值相應(yīng)的變換值0-255而輸入的。這個(gè)方法最靈活,但是需要輸入每個(gè)變換值。
在MIDI文件418上進(jìn)行的預(yù)處理和在修正的MIDI文件420上進(jìn)行的控制處理產(chǎn)生了經(jīng)更改的MIDI文件422。由于預(yù)處理和控制處理除了提高接口系統(tǒng)的傳輸能力之外,還增加了MIDI文件的尺寸,所以用數(shù)據(jù)優(yōu)化器416優(yōu)化更改的MIDI文件422以便產(chǎn)生適合廣播的優(yōu)化MIDI文件424。各種優(yōu)化方法都是有效的。然而,令人滿意的優(yōu)化方法包括廣播用的運(yùn)行狀態(tài)優(yōu)化和處理流程。
圖10中示出了一個(gè)優(yōu)化過程的實(shí)例。圖10是運(yùn)行狀態(tài)優(yōu)化方法的流程圖1000。首先,數(shù)據(jù)優(yōu)選器416重新組織更改的MIDI文件422從而使由狀態(tài)字節(jié)和數(shù)據(jù)字節(jié)構(gòu)成的包含相同狀態(tài)字節(jié)的MVE按序排列(步驟1002)。接著,數(shù)據(jù)優(yōu)化器416刪除相同狀態(tài)字節(jié)外的所有字節(jié)(步驟1004)。如果傳輸?shù)奈募叽绮怀^傳輸容量(步驟1006),則傳輸該文件(步驟1014)。然而,如果傳輸?shù)奈募鰝鬏斎萘?步驟1006),則從該文件中移出最后一個(gè)通道聲音信息變化,而將其存儲(chǔ)以便稍后傳輸(步驟1008)。如果傳輸?shù)奈募匀怀鰝鬏斎萘?步驟1010),則存儲(chǔ)某些MIDI事件以便秀后傳輸(步驟1012)。在存儲(chǔ)連續(xù)的MIDI事件以供稍后傳輸?shù)氖录?,如果下一個(gè)MIDI事件與當(dāng)前存儲(chǔ)并供稍后傳輸?shù)牧硪粋€(gè)MIDI事件具有相同的狀態(tài)字節(jié),那么下一個(gè)MIDI事件將改寫當(dāng)前存儲(chǔ)的MIDI事件。
為了對(duì)修正的MIDI文件進(jìn)行實(shí)時(shí)控制,MIDI控制器406設(shè)有MIDI輸出接口電路1100。圖11表示MIDI輸出接口電路1100。電路1100含有包括例如石英晶體振蕩器的振蕩源電路1104和計(jì)數(shù)器1106的時(shí)基發(fā)生電1102。電路1104可以設(shè)置成由2MHz振蕩器驅(qū)動(dòng)的時(shí)鐘電路以提供時(shí)鐘信號(hào)CLK。由振蕩源電路1104驅(qū)動(dòng)的計(jì)數(shù)器1106提供計(jì)數(shù)信號(hào)CT。例如,可以將計(jì)數(shù)器1106設(shè)置成20比特的長(zhǎng)度,每300毫秒返回到“0”和復(fù)位。電路1100還包括MIDI時(shí)間信號(hào)發(fā)生電路1108。電路1108包括中斷寄存器1110,它用于在下一次系統(tǒng)中斷之前保持代表時(shí)間的8比特值;時(shí)鐘信號(hào)SPP寄存器1112,用于存儲(chǔ)MIDI信號(hào)源應(yīng)產(chǎn)生同步信號(hào)的時(shí)間;滴嗒高時(shí)間(tick high time)TKH寄存器114,用于存儲(chǔ)MIDI信號(hào)源應(yīng)傳輸MIDI信號(hào)的時(shí)間。電路1108還包括譯碼器1116,該譯碼器接收來自相關(guān)主計(jì)算機(jī)1118中的微處理器的指令并把微處理器輸出的數(shù)據(jù)寫入寄存器1110、1112和1114。電路1108還包括與其他耦合的信號(hào)發(fā)生器電路1120,用于接收保持在寄存器1110、1112和1114中的電流值和作為計(jì)數(shù)器1106當(dāng)前值的計(jì)數(shù)信號(hào)CT。信號(hào)發(fā)生器電路1120包括比較電路,該比較電路把保持在每個(gè)寄存器1110、1112和1114中的值與計(jì)數(shù)信號(hào)CT相比較。當(dāng)寄存器1110中的值與計(jì)數(shù)器信號(hào)CT相符時(shí),比較電路觸發(fā)信號(hào)發(fā)生器1120產(chǎn)生信號(hào)INT;當(dāng)寄存器1112的值與計(jì)數(shù)信號(hào)CT相符時(shí),產(chǎn)生信號(hào)SPP,而當(dāng)寄存器1114的值與當(dāng)前信號(hào)相符時(shí),產(chǎn)生信號(hào)TKH。
電路1100還包括含有緩沖存儲(chǔ)器1142和MIDI信號(hào)發(fā)生器1144的MIDI信號(hào)發(fā)生電路1140。耦合的緩沖器1142用以接收來自主計(jì)算機(jī)1118中存儲(chǔ)器1146的優(yōu)化MIDI文件。MIDI信號(hào)發(fā)生電路1140完成的功能是將優(yōu)化的MIDI文件和從MIDI時(shí)間信號(hào)發(fā)生電路1108輸出的同步信號(hào)合并而且以MIDI輸出信號(hào)串的形式傳輸合并的數(shù)據(jù)。
工作時(shí),主計(jì)算機(jī)1118中的微處理器把存儲(chǔ)在存儲(chǔ)器1146中的優(yōu)化MIDI文件傳輸?shù)骄彌_器1142。當(dāng)時(shí)間信號(hào)發(fā)生電路1108產(chǎn)生TKH信號(hào)和該信號(hào)被MIDI信號(hào)發(fā)生電路1140接收時(shí),MIDI信號(hào)發(fā)生器1144開始從緩沖器1142中檢索MIDI信號(hào)并以串行的形式將其輸出。MIDI信號(hào)發(fā)生器1144響應(yīng)所產(chǎn)生的SPP信號(hào)在串行的MIDI信號(hào)中插入1字節(jié)F8H。這一字節(jié)用于使接收串行MIDI信號(hào)的MIDI聲組件同步。
主計(jì)算機(jī)1118中的微處理器周期性地把代表下一次中斷中計(jì)算機(jī)1118的時(shí)間值存儲(chǔ)到中斷寄存器1110中。接著,在計(jì)數(shù)信號(hào)CT等于中斷寄存器1110中的值而使信號(hào)發(fā)生器1120產(chǎn)生INT信號(hào)時(shí),通過向緩沖器1142傳輸附加的MIDI數(shù)據(jù)而使主計(jì)算機(jī)1118中的微處理器作出響應(yīng)。這樣便確保了MIDI信號(hào)發(fā)生器1144連續(xù)地產(chǎn)生串行的MIDI信號(hào)。
總之,按照本發(fā)明構(gòu)成的記錄系統(tǒng)提高了用戶控制MIDI文件參數(shù)的能力??刂颇芰Φ奶岣咧饕怯赡苄拚齅IDI文件的預(yù)處理器實(shí)現(xiàn)的,所述MIDI文件可按三種格式中的任何一種格式存儲(chǔ)成單一的修正格式。作為預(yù)處理的一部分,刪除存儲(chǔ)在MIDI文件中但對(duì)再現(xiàn)功能無用的信息。由于具有標(biāo)準(zhǔn)格式和較少額外數(shù)據(jù)的修正MIDI文件比非修正MIDI文件對(duì)預(yù)定控制處理器、手動(dòng)控制處理器和軟件控制處理器(這些處理器均受控制處理管理器的管理)提供的實(shí)時(shí)參數(shù)調(diào)整更敏感,所以可以獲得實(shí)際的功能提高。
實(shí)時(shí)參數(shù)調(diào)整包括兩種類型。一種類型可以增加MIDI文件中的數(shù)據(jù),而另一種實(shí)時(shí)參數(shù)調(diào)整可修改MIDI文件中現(xiàn)有的數(shù)據(jù)。為了確保在MIDI文件中增加數(shù)據(jù)不會(huì)超出記錄系統(tǒng)的傳輸能力,在記錄系統(tǒng)中設(shè)置了數(shù)據(jù)優(yōu)化器。
每個(gè)控制處理器都能逐個(gè)通道地調(diào)節(jié)MIDI文件參數(shù);然而,根據(jù)本發(fā)明的另一個(gè)方面,通過提供由用戶選擇待組配通道、待組配的通道聲音信息或它們的任何組合的處理,進(jìn)一步提高了記錄系統(tǒng)實(shí)時(shí)控制的能力。由于改變一組參數(shù)會(huì)影響到幾個(gè)通道或通道聲音信息,所以組配可提高實(shí)時(shí)控制的能力。
此外,按照本發(fā)明構(gòu)成的記錄系統(tǒng)能夠幾乎連續(xù)地處理MIDI文件。為了連續(xù)處理MIDI文件,記錄系統(tǒng)配備了輸出接口電路。輸出接口電路產(chǎn)生用于協(xié)調(diào)MIDI文件傳輸?shù)臅r(shí)序信號(hào)。
按照本發(fā)明構(gòu)成的記錄系統(tǒng)通過預(yù)處理減小了記錄系統(tǒng)處理的數(shù)據(jù)量,又通過通道組配、通道聲音信息組配、和復(fù)合組配減少了通道和通道聲音信息指令的數(shù)量。由于減少了數(shù)據(jù)和指令量,所以減少了在再現(xiàn)MIDI文件時(shí)所需的處理時(shí)間和處理資源。
很顯然,對(duì)于熟悉本領(lǐng)域的技術(shù)人員來說,在不脫離本發(fā)明的范圍和構(gòu)思的情況下,可以對(duì)本發(fā)明的方法和優(yōu)選實(shí)施例的結(jié)構(gòu)作出各種修改和變動(dòng)。對(duì)熟悉本領(lǐng)域的技術(shù)人員來說,很顯然,在本文所述的發(fā)明內(nèi)容和實(shí)踐的基礎(chǔ)上可以得到本發(fā)明的其它實(shí)施例。本文的說明和舉例只是作為例子,本發(fā)明的真正范圍和構(gòu)思體現(xiàn)在以下的權(quán)利要求中。
權(quán)利要求
1.用于處理樂器數(shù)字接口(MIDI)文件的方法,包括以下由處理器完成的步驟接收具有多個(gè)事件的表示音樂信息的MIDI文件;從所述MIDI文件中提取時(shí)間信息;把所述提取的時(shí)間信息存儲(chǔ)在修正的文件中;從所述MIDI文件中提取下一個(gè)事件;如果下一個(gè)事件是產(chǎn)生音樂所需的事件,則將該下一個(gè)事件存儲(chǔ)到所述修正的文件中;如果所述MIDI文件中還有其它下一個(gè)事件上,則重復(fù)進(jìn)行提取和存儲(chǔ)下一個(gè)事件的步驟;和輸出所述修改的文件。
2.用于處理樂器數(shù)字接口(MIDI)文件的方法,包括以下由處理器完成的步驟(a)、接收具有多個(gè)塊數(shù)據(jù)的MIDI文件,每個(gè)塊數(shù)據(jù)包含多個(gè)事件;(b)、從所述MIDI文件中提取第一塊數(shù)據(jù);(c)、從所述第一塊數(shù)據(jù)中提取時(shí)間信息;(d)、把所述提取的時(shí)間信息存儲(chǔ)在修正的文件中;(e)、從所述第一塊數(shù)據(jù)中提取下一個(gè)事件;(f)、如果所述下一事件是產(chǎn)生音樂所需要的事件,則把該下一事件存儲(chǔ)到所述修正的文件中;(g)、如果在所述第一塊數(shù)據(jù)中還存在其它下一事件,則重復(fù)步驟(e)-(f);(h)、把所述時(shí)間信息從所述修正文件送到臨時(shí)文件;(i)、從所述MIDI文件中提取下一塊數(shù)據(jù);(j)、從所述修正的文件中提取第一個(gè)下一事件;(k)、產(chǎn)生第一個(gè)下一事件時(shí)間累計(jì)信號(hào);(l)、從所述下一個(gè)塊數(shù)據(jù)中提取第二個(gè)下一事件;(m)、產(chǎn)生第二個(gè)下一事件時(shí)間累計(jì)信號(hào);(n)、如果所述第一個(gè)下一事件時(shí)間累計(jì)信號(hào)不大于所述第二個(gè)下一事件時(shí)間累計(jì)信號(hào),則將所述第一個(gè)下一事件存儲(chǔ)到所述臨時(shí)文件中而將所述第二個(gè)下一事件存儲(chǔ)在所述下一個(gè)塊數(shù)據(jù)中;(o)、如果所述第一個(gè)下一事件時(shí)間累計(jì)信號(hào)大于所述第二個(gè)下一事件時(shí)間累計(jì)信號(hào),則把所述第二個(gè)下一事件存儲(chǔ)到所述臨時(shí)文件中而將所述第一個(gè)下一事件存儲(chǔ)到所述修正的文件中;(p)、重復(fù)步驟(j)-(o),直到把所有所述修正的事件和塊數(shù)據(jù)事件都存儲(chǔ)到所述臨時(shí)文件中;(q)、存儲(chǔ)所述臨時(shí)文件作為所述修正的文件;和(r)、重復(fù)步驟(i)-(g),直到把所有所述塊數(shù)據(jù)都存儲(chǔ)到所述修正的文件中。
3.根據(jù)權(quán)利要求2所述的方法,其中所述步驟(k)和(m)中的每一個(gè)均包括以下步驟選擇定位節(jié)拍和每個(gè)MIDI四分音符值的時(shí)鐘滴數(shù);和根據(jù)所述定位節(jié)拍和所述每個(gè)MIDI四分音符值的時(shí)鐘滴數(shù)產(chǎn)生累計(jì)時(shí)間信號(hào)。
4.用于控制多個(gè)樂器數(shù)字接口(MIDI)通道的方法,包括以下由處理器完成的步驟選擇組名;為所述選定的組名指定多個(gè)MIDI通道;和提供組控制信號(hào)以便控制給所述組名指定的所述多個(gè)MIDI通道的再現(xiàn)。
5.用于處理樂器數(shù)字接口(MIDI)文件的裝置,包括用格式0、1和2中的一種格式存儲(chǔ)MIDI文件的存儲(chǔ)器;和MIDI控制器,包括把所述MIDI文件轉(zhuǎn)換成預(yù)定格式MIDI文件的預(yù)處理器,控制處理管理器,用于有選擇地改變每個(gè)已轉(zhuǎn)換的MIDI文件的MIDI參數(shù),和數(shù)據(jù)優(yōu)化器,以確保由所述控制處理管理器處理的每個(gè)已轉(zhuǎn)換的MIDI文件的尺寸處于預(yù)定的傳輸能力之內(nèi)。
6.樂器數(shù)字接口系統(tǒng),包括用格式0、1和2中的一種格式存儲(chǔ)MIDI文件的存儲(chǔ)器;MIDI控制器,包括對(duì)所述MIDI文件進(jìn)行預(yù)處理以產(chǎn)生修正的MIDI文件的裝置;控制所述修正的MIDI文件參數(shù)的裝置;和優(yōu)化所述修正的MIDI文件以便傳輸?shù)难b置;和產(chǎn)生音樂聲音的音調(diào)發(fā)生器。
7.樂器數(shù)字接口(MIDI)控制器,包括用于預(yù)處理標(biāo)準(zhǔn)MIDI文件以產(chǎn)生修正的MIDI文件的裝置;用于控制所述修正的MIDI文件的至少一個(gè)參數(shù)的裝置;和用于優(yōu)化所述修正的MIDI文件以便傳輸?shù)难b置。
8.根據(jù)權(quán)利要求7所述的MIDI控制器,其中所述標(biāo)準(zhǔn)MIDI文件存儲(chǔ)在存儲(chǔ)器中;其中所述的預(yù)處理裝置包括用于從所述存儲(chǔ)器中提取所述標(biāo)準(zhǔn)MIDI文件的裝置;用于確定所述標(biāo)準(zhǔn)MIDI文件格式的裝置;和按照所述確定的格式把所述標(biāo)準(zhǔn)MIDI文件轉(zhuǎn)換成所述修正的MIDI文件的裝置。
9.根據(jù)權(quán)利要求8所述的MIDI控制器,其中用于轉(zhuǎn)換所述標(biāo)準(zhǔn)MIDI文件的裝置包括把所述標(biāo)準(zhǔn)MIDI文件的時(shí)間信息存儲(chǔ)到修正的MIDI文件中的裝置;從所述標(biāo)準(zhǔn)MIDI文件中反復(fù)提取多個(gè)MIDI事件的裝置;為每個(gè)已提取的MIDI事件判斷該已提取的MIDI事件是否是再現(xiàn)所需事件的裝置;將已確定為再現(xiàn)所需的每個(gè)提取的MIDI事件存儲(chǔ)到所述修正的MIDI文件中的裝置。
10.根據(jù)權(quán)利要求7所述的MIDI控制器,其中所述控制裝置包括預(yù)定控制器、手動(dòng)控制器和軟件控制器。
11.根據(jù)權(quán)利要求7所述的MIDI控制器,其中所述標(biāo)準(zhǔn)MIDI文件存儲(chǔ)在存儲(chǔ)器中;而且其中對(duì)所述標(biāo)準(zhǔn)MIDI文件進(jìn)行預(yù)處理的裝置包括用于從所述存儲(chǔ)器中提取所述標(biāo)準(zhǔn)MIDI文件的裝置,用于確定是所述標(biāo)準(zhǔn)MIDI文件格式的裝置;和根據(jù)所述確定的格式把所述標(biāo)準(zhǔn)MIDI文件轉(zhuǎn)換成所述修正的MIDI文件的裝置;和其中所述控制裝置包括預(yù)定控制器、手動(dòng)控制器、和軟件控制器。
12.根據(jù)權(quán)利要求7所述的MIDI控制器,其中所述控制裝置包括用于獨(dú)立地修改所述修正的MIDI文件中的至少一個(gè)參數(shù)的裝置。
13.根據(jù)權(quán)利要求7所述的MIDI控制器,其中所述控制裝置包括根據(jù)確定第一和第二值之間附加值的預(yù)定函數(shù)把所述修正的MIDI文件的至少一個(gè)參數(shù)從所述第一值變?yōu)樗龅诙档难b置。
14.根據(jù)權(quán)利要求7所述的MIDI控制器,其中所述控制裝置包括用于獨(dú)立修改所述修正的MIDI文件的至少一個(gè)參數(shù)的裝置和根據(jù)確定第一和第二值之間附加值的預(yù)定函數(shù)把所述修正的MIDI文件的至少一個(gè)參數(shù)從所述第一值變?yōu)樗龅诙档难b置。
15.根據(jù)權(quán)利要求13所述的MIDI控制器,其中所述預(yù)定的函數(shù)是線性轉(zhuǎn)換函數(shù)。
16.根據(jù)權(quán)利要求13所述的MIDI控制器,其中所述預(yù)定的函數(shù)是對(duì)數(shù)轉(zhuǎn)換函數(shù)。
17.根據(jù)權(quán)利要求13所述的MIDI控制器,其中所述預(yù)定函數(shù)是指數(shù)轉(zhuǎn)換函數(shù)。
18.根據(jù)權(quán)利要求13所述的MIDI控制器,其中所述預(yù)定函數(shù)是非線性交換函數(shù)。
19.根據(jù)權(quán)利要求13所述的MIDI控制器,其中所述預(yù)定的函數(shù)是線性轉(zhuǎn)換函數(shù)、對(duì)數(shù)轉(zhuǎn)換函數(shù)、指數(shù)轉(zhuǎn)換函數(shù)和非線性變換函數(shù)中的至少一種函數(shù)。
20.用于控制多個(gè)樂器數(shù)字接口(MIDI)通道聲音信息的方法,包括由處理器完成的以下步驟選擇聲音信息組名;給所述選定的組名指定多個(gè)MIDI通道聲音信息;和提供聲音信息組控制信號(hào)以便對(duì)給所述聲音信息組名指定的所述多個(gè)MIDI通道聲音信息進(jìn)行再現(xiàn)控制。
21.用于控制多個(gè)樂器數(shù)字接口(MIDI)通道和多個(gè)MIDI通道聲音信息的方法,包括以下由處理器完成的步驟選擇復(fù)合組名;給所述選定的復(fù)合組名指定多個(gè)MIDI通道中的至少一個(gè)和所述多個(gè)MIDI通道聲音信息中的至少一個(gè);提供復(fù)合組控制信號(hào),以便對(duì)指定給所述復(fù)合組名的所述至少一個(gè)MIDI通道和所述至少一個(gè)MIDI通道聲音信息進(jìn)行再現(xiàn)控制。
22.用于控制多個(gè)樂器數(shù)字接口(MIDI)通道和多個(gè)MIDI通道聲音信息的方法,包括由處理器完成的以下步驟選擇通道組名,通道聲音信息組名,和復(fù)合組名;給所述選定的通道組名指定多個(gè)MIDI通道,為給所述選定的通道聲音信息組名指定多個(gè)MIDI通道聲音信息,給所述選定的復(fù)合組名指定所述多個(gè)MIDI通道、通道組名、所述多個(gè)MIDI通道信息和通道聲音信息組名這些中的至少一種;和提供通道組控制信號(hào)、通道聲音信息組控制信號(hào)和復(fù)合組控制信號(hào)中的至少一個(gè)信號(hào)以便對(duì)指定給所述通道組名的所述多個(gè)通道中的所述至少一個(gè)通道、對(duì)指定給所述通道聲音信息組名的所述多個(gè)通道聲音信息、和對(duì)指定給所述復(fù)合組名的所述通道組名、通道、通道聲音信息組名、和通道聲音信息中的至少一種進(jìn)行再現(xiàn)控制。
23.樂器數(shù)字接口(MIDI)的輸出接口電路,包括含有計(jì)數(shù)器的定時(shí)器;MIDI時(shí)間信號(hào)發(fā)生電路,包含中斷存儲(chǔ)寄存器、滴嗒高時(shí)間存儲(chǔ)寄存器、和SSP存儲(chǔ)寄存器;用于接收MIDI文件的MIDI信號(hào)發(fā)生電路;和用于把所述中斷存儲(chǔ)寄存器、所述滴答高時(shí)間存儲(chǔ)寄存器和所述SSP存儲(chǔ)寄存器中的值與所述計(jì)數(shù)器的當(dāng)前值進(jìn)行比較的裝置;和其中所述MIDI時(shí)間信號(hào)發(fā)生電路包括對(duì)所述比較裝置作出響應(yīng)以產(chǎn)生輸出MIDI文件的裝置。
24.根據(jù)權(quán)利要求5所述的設(shè)備,其中所述MIDI控制器包括包含計(jì)數(shù)器的定時(shí)器;MIDI時(shí)間信號(hào)發(fā)生電路,該電路包含中斷存儲(chǔ)寄存器、滴答高時(shí)間存儲(chǔ)寄存器、和SSP存儲(chǔ)寄存器;用于接收MIDI文件的MIDI信號(hào)發(fā)生電路;和把所述中斷存儲(chǔ)寄存器、所述滴答高時(shí)間寄存器和所述SSP存儲(chǔ)寄存器中的值與所述計(jì)數(shù)器的當(dāng)前值進(jìn)行比較的裝置;和其中所述MIDI時(shí)間信號(hào)發(fā)生電路包括對(duì)所述比較裝置作出響應(yīng)以產(chǎn)生輸出MIDI文件的裝置。
25.計(jì)算機(jī)程序產(chǎn)品,包括含有能進(jìn)行數(shù)據(jù)處理的計(jì)算機(jī)可讀碼的計(jì)算機(jī)可用媒體和樂器數(shù)字接口(MIDI)控制器,所述計(jì)算機(jī)可用的媒體包括接收模塊,其配置用于接收由所述MIDI控制器處理的MIDI文件;預(yù)處理模塊,其配置用于把所述MIDI文件轉(zhuǎn)換成預(yù)定的格式;控制處理模塊,其配置用于有選擇地改變所述已轉(zhuǎn)換的MIDI文件的MIDI參數(shù);和數(shù)據(jù)優(yōu)化模塊,其配置用于把由所述控制處理模塊處理的所述已轉(zhuǎn)換MIDI文件尺寸優(yōu)化到預(yù)定的傳輸容量范圍內(nèi)。
全文摘要
通過把存儲(chǔ)的樂器數(shù)字接口(MIDI)文件重新格式化成修正的MIDI文件格式并通過同時(shí)刪除存儲(chǔ)在文件中但是對(duì)再現(xiàn)無用的MIDI META事件、對(duì)MIDI文件預(yù)處理以便于再現(xiàn)文件的實(shí)時(shí)動(dòng)態(tài)MIDI控制器。該MIDI控制器包括進(jìn)行通道組配、通道聲音信息組配或?qū)⒏鹘M配組合以便于控制選定的MIDI文件參數(shù)的管理器。實(shí)時(shí)動(dòng)態(tài)MIDI控制器還包括輸出接口電路,該電路對(duì)MIDI控制器已處理的一個(gè)或多個(gè)MIDI文件的傳輸進(jìn)行協(xié)調(diào)。
文檔編號(hào)G10H1/00GK1203410SQ9710465
公開日1998年12月30日 申請(qǐng)日期1997年7月28日 優(yōu)先權(quán)日1997年6月25日
發(fā)明者蘇文鈺, 張靖敏, 簡(jiǎn)良臣, 余德彰 申請(qǐng)人:財(cái)團(tuán)法人工業(yè)技術(shù)研究院