標籤:
原文連結:http://www.midifan.com/modulearticle-detailview-488.htm
Keyboard雜誌老資格編輯Jim Aikin在紀念MIDI誕生20的時候發表一篇文章,講述MIDI使用中經常遇到的20個概念,雖然都是“老生常談”,不少MIDI老手對其中一些問題也不見得十分明確,更不要說才入門的新手了。因此中音網把這篇文章譯出來幫大家複習一下。
1)MIDI發送演奏指令而不是聲音
當你在MIDI鍵盤上按下一個琴鍵,你不是在製造一個聲音而是發出一條MIDI指令,叫做Note on(音符開)資訊。至於這個資訊能發什麼聲音,完全取決於電纜另一端的MIDI樂器(如果有的話)。MIDI電纜裡完全沒有音頻資料。
2)In對Out;Out對In
許多MIDI裝置的後面板帶有3個MIDI插座:In、Out、Thru。串連裝置的時候,主鍵盤的Out將串連到希望接收資訊裝置的In。MIDI裝置可以做鏈形串連,使主鍵盤(或電腦等)發送的資訊傳送到串連的各個裝置。鏈形串連的時候主鍵盤的Out串連到下一個裝置的In,然後從它的Thru串連第三個裝置的In,再從Thru串連第四個裝置的In……如此串連。
3)過多的Thru使資料劣化
通過Thru口串連4或5台以上裝置不是好主意。數字訊號多次Thru之後累加的延遲容易使掛在鏈路後端的裝置發生錯碼或其他意外情況。
4)MIDI通訊是單方向的
不像許多現代的數字通訊例如USB等,MIDI電纜中的資訊只向一個方向流動。如果你希望兩台裝置之間能夠對話(傳送系統專用資訊時經常用到),就需要把各自的Out接到對方的In。
5)MIDI用串列格式傳送資料,速度相當快
在MIDI電纜中同一時間只能傳送一個位元,技術上稱為串列通訊。MIDI位元組包含10個位元而不是常用的8位元。MIDI每秒傳送31250位元,或者說3125位元組。
下面將要講到,一個MIDI音符開資訊包含3個位元組,不到1毫秒就發送完畢。即使一個20音的和弦也將在20毫秒之內先後發聲,人類的聽覺幾乎不能感覺到這樣微小的時間差異。
6)16通道共用同一條電纜
MIDI規定定義了兩類資訊??系統資訊和通道資訊。實際的音樂演奏資訊(音符、控制器、彎音等)是通道資訊格式。MIDI定義一條電纜同時可以傳送16條通道,如果需要更多通道,就要使用更複雜的電纜設定。例如你的電腦配備了8個連接埠的介面,同時傳送的通道數就可以達到16×8=128。
一些合成器可以同時接收32通道,這時就需要2個MIDI輸入口(或者其他形式的介面,如USB等)。
7)兩種MIDI同步
最早的MIDI規定定義了時鐘資訊以及停止、開始、繼續,樂曲位置指標等資訊,使2台音序器能夠同步運行。每個四分音符號發送24個時鐘資訊,因此它是隨速度而變化的。時鐘資訊是很簡單的單位元組標記,並不包含時間、位置等資訊。
更複雜的同步資訊要使用MIDI Time Code(MIDI時間碼,簡稱MTC),這是SMPTE同步碼在MIDI的表現方法,它能夠提供樂曲演奏的時間資訊,但是不包含速度資訊。如果兩個用MTC同步的音序器工作在不同的速度,儘管有很好的同步,它們的音樂還是會逐漸岔開。
8)中央C編號60
MIDI為各通道定義了128個音符,中央C編號為60,5個八度的鍵盤編號可能就是36到96。但是音序器沒有統一的規定,有的音序器顯示60號音符為C3,另一些則為C4,並不統一。
9)MIDI音符開的3個位元組包含4類資訊
第一個位元組包含狀態(說明這一資訊是什麼性質的)和通道號1-16;第二位元組是音符編號0-127;第三位元組表示力度0-127。
10)力度0就是音符關(Note off)
有兩種方法可以關閉已經開啟的音符:一種是發送音符關資訊;另一種是發送力度為0的音符開資訊。當然這兩種方法都必須包含相應的音符編號和通道號,否則就不能達到目的。除了力度0被借用來代表音符關,音符開的力度範疇變成1-127以外,這兩種方法在音樂上並無區別,不過算起細賬來後者能節省資訊量。原來MIDI有一個“運行狀態”,規定前後資訊的狀態完全一致的時候,後面的資訊可以省略狀態位元組。如此算來一開一關是不同的狀態,需要6個位元組;兩個開(第二個開力度為0,實際是關)狀態相同,5個位元組就夠了。在發送一大片連續的快速音符時,運行狀態可以有效降低MIDI資訊的傳送密度。
11)連續控制器並不連續
MIDI通道資訊設定了128個連續控制器資訊(Continuous Controller經常簡寫為CC),主要用來表示旋鈕、推子、踏板的運動狀況,每一個CC的範疇是0-127。例如合成器的調製輪或調製杆總是1號控制器,轉到一端為0,另一端為127。但是數值並不是平滑地變化,而是台階式的變化。比如數值可以是56或57,但不可能是56.329或57.1。如果用CC控制一些比較敏感的聲音參數,有可能聽得到台階式的效果變化。
12)一些CC是預先定義的
一些CC保留給特別的用途,例如CC64分配給延音踏板。實際上有一些(例如64、65、66等)控制器定義成開關式,如CC64踩下去發送127;抬起來發送0,並不使用中間的數值。CC00-CC31可以與CC32-CC63結對使用表示MSB和LSB,構成16384的控制值。是否使用14位元數值由裝置製造廠商決定,沒有一定之規。
13)彎音音域由接收合成器決定
彎音是一個很特別的MIDI資訊。雖然它被定義為14位元,但是許多合成器省略了LSB資料而只用MSB的7位元(0-127)數值。也許這樣是對的,因為許多彎音硬體只提供7位元數值,音序器也經常把彎音定在-63到+64的範圍。彎音是一個雙極資訊,中心為0,控制器常常帶有回0的彈簧。
有一條MIDI資訊(是一個已註冊參數號碼RPN)可以給接收彎音裝置定義彎音音域,但並不是所有合成器都響應。
14)音色庫的選擇
MIDI剛建立的時候合成器通常只有32、40、最多不過64個音色可以記憶,沒有誰能夠預見不久以後合成器竟能擁有數百以至數千音色。結果只定義了128個選擇音色的程式變換(Program Change),為瞭解決這個問題,發明出音色庫選擇資訊。
音色庫選擇(Bank Select)借用了連續控制器CC0和CC32構成14位元的數值,使音色選擇的範圍達到16384個音色庫,每庫包含128個音色。數值非常巨大。
問題是廠商對於音色庫選擇資訊的執行有很大差異,一些合成器僅用CC0選擇音色庫,捨棄了CC32(雖然MIDI規定要求二者連續發送),另有一些合成器則按規定使用命令,沒有包含數值的控制器也發送數值0。
一些合成器立即轉換到新選擇的音色庫,而另外一些則要等待到接收一條程式變換命令後才轉換。一些合成器沒有把音色庫裝滿,因此一條音色庫選擇命令可以同時選中2個庫,具體選擇音色時還需要加上位移值。Kurzweil在音色庫選擇規定出現之前就開始支援多重音色庫,在K2000/2500合成器上使用不同的音色庫選擇方法。還有的合成器忽略音色庫選擇命令。一些音序器試圖協助使用者完成音色庫選擇,但是並不能對所有的合成器生效。
15)有4種方法關掉“粘住”的音符
相信大家都遇到過“粘住”的音符。可憐的合成器只接收到音符開而沒有收到關掉這些音符的命令,於是就討厭的響個不停。如果發音的音色包絡已經把音量衰減下去,你就不容易發現“粘住”的音符,一般都是帶有保持包絡的音色造成明顯的問題。引起問題的原因可能在音序器,也可能在合成器的系統軟體,更有可能是MIDI串連出現問題(MIDI能夠檢測到串連出問題而自動發出關掉音符的命令,但不是全部合成器有這樣的功能)。
MIDI定義了關掉全部音符的命令,音序器軟體經常備用一個“救急”按鈕,點擊它就可以把關閉全部音符命令發送到16個通道,但是有的合成器不能識別這條命令,因此“救急”按鈕同時經常還需要給16個通道的每一個音符發送關閉命令,16×128=2048,幸虧機器不知道累。
如果“救急”按鈕不管用,可以試著發一個程式變換(Program Change),許多合成器在轉換到新音色時關閉正在發音的音符。如果這一招不管用,下面還有一手可以對付32複音數以下或音色多層次布局的合成器:用手和胳膊儘可能多的同步選取琴鍵,放手的時候也許有效。
最有效辦法是關掉電源然後再開啟,一定管用。不過如果出問題的不是合成器而是採樣器,重新載入64MB的樣本也要花一些時間呢。
16)時間延遲能減少
MIDI相當快,雖然串列傳送,基本上聽不出時間的參差。如果回放的開頭髮音遲緩,有以下幾種可能:試圖發送過多的控制器資料,通常是多通道回放的資訊包含有彎音和CC資料,它們擠佔了音符到達的時間。音序器通常備有“減薄”連續控制資料的編輯功能,能夠有效地減少這類延遲。觸後是另一類連續資料,曆來是引起延遲的聲名狼藉的嫌疑犯。如果觸後資訊用處不大,建議根本不用或全部刪除。
試圖同時讓過多的音符同時發音也會造成延遲。例如一種音色由4Voice構成,各Voice使用2個振蕩器,如果同時讓10個音符發音,對於合成器來說就要同時啟動80個振蕩器,時間上很容易出現延遲。解決的方法或者減少音色的層次,或者把音符前後錯開一些。
(譯者註:樂曲開頭處經常有許多MIDI設定資料需要發送,常常影響到第一個音符的準時出現。我們過去建議音樂家把第一小節空出來專門寫命令,音樂從第二小節開始,效果非常好。)
17)標準MIDI檔案使MIDI音樂廣為傳播
在MIDI的“幼年”時期,開發人員就明確地預見將會有一種檔案格式,像Microsoft的RTF(Rich Text Format)一樣供所有的音序器讀寫,不久以後果然以.MID做尾碼的SMF格式出現了。用音序器創作的音樂除了以自己的格式儲存,也可以存成標準MIDI檔案格式,在任何音序器上回放。
MIDI檔案最初定義了3種類型??0、1和2??但是通常只用0和1。0類檔案將全部資料放在一條音軌中(因為MIDI事件帶有通道標記,0類檔案可以通過編輯命令分成16軌);1類檔案包含多軌,各自可以命名。檔案甚至支援多口MIDI輸出(例如64通道)。MIDI檔案後來添加了歌詞等其他成分,最近升級的XMF檔案格式支援DLS(可以下載的聲音)資料,但是還不能描述音頻和音頻效果。
18)系統專用資訊有助於硬體升級
十年前的合成器或效果器升級(添加新功能或修正缺點)需要到服務中心,交款之後讓技師為你換一塊晶片。感謝MIDI和互連網,今天作業系統升級已經簡單和便宜得多了。許多廠家定期在網站提供系統升級,升級檔案經常是標準MIDI檔案形式,可以載入音序器回放。通常的做法是:
①下載升級檔案到電腦硬碟
②把檔案載入音序器
③把音序器的MIDI輸出串連到合成器的MIDI輸入
④將合成器設定成準備讀入系統專用資訊的模式
⑤開始回放音序
⑥檔案回放結束之前不要停止,也小心不要斷開MIDI串連。
事情就這樣簡單,你不需要知道MIDI檔案的內容,也不用開啟機箱,升級就完成了。
系統專用資訊經常還用在音色編輯方面,可以用它在電腦中建立龐大的音色庫。
19)通用MIDI不能包醫百病
1991年制定的通用MIDI規定(GM)未能有效克服MIDI的一些局限。例如最初的程式變換資訊(Program Change)只是一個數字編號,與它代表什麼聲音毫無關係。GM定義了128個音色名字,包括樂器音色和效果聲,也定義了打擊樂器音色在鍵盤上的排列,規定了一些控制器的使用。GM使得音樂家創作的MIDI檔案有可能在不同的合成器上回放,互連網上的MIDI檔案可以在配有GM音效卡的電腦上回放。
問題是名字相同的某一件樂器的音色在不同的合成器或音效卡上可能差異很大,結果得到出乎意料的合奏聲音。
Roland和Yamaha分別開發了自己的GM規定稱為GS和XG,都比GM複雜,但是互相不相容。
GM規定目前並沒有什麼壓力,GM2規定雖然已經存在,但使用並不普遍。
當前有2種讓MIDI攜帶採樣波形的格式,一種是MIDI協會開發的DLS,另一種是創新科技開發的SoundFonts,它們之間有許多不同點,但都已經佔有一部分市場。
20)MIDI協會出售全套MIDI規定
MIDI協會的官方網站上開列了所有MIDI規定的名字和版本,美元售價。網址www.midi.org
[轉]MIDI常識20條