為什麼這篇midi輸出鄉民發文收入到精華區:因為在midi輸出這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Souma (野人)看板keyboard標題[貢獻] MIDI使用中常遇到的20個概念時間Thu...
作者: mavischew ( )
標題: Re: 關於發文
時間: Thu Feb 23 11:41:07 2012
MIDI使用中常遇到的20個概念
keyboard手應該對Rittor Music出版的Keyboard magazine 不陌生...
看不懂日文也以在雜誌裡獲得大量的鍵盤樂器的資訊,
其內容除了有知名的鍵盤演奏家的介紹、彈奏技巧的介紹、器材的介紹、
推薦的音樂、鍵盤手生活點點..........等等,但在網路上看過一篇關於
Keyboard雜誌的文章,內容也有電子科學類別, 覺得很酷!
其實是因為要找一條midi轉usb的線,所以翻遍了老光華,終於找到好像
是最後一條,起初我也不知道這麼難找,後來研究了一些關於這方面資訊,
看到這篇關於midi的文章,Keyboard雜誌資深編輯Jim Aikin在紀念MIDI誕
生20年的時候發表的文章,講述MIDI使用中經常遇到的20個概念:
(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規定的名字和版本,美元售價。
網址http://www.midi.org
文章來自~ http://news.globalaudio.cn/Article/ShowArticle.asp?ArticleID=21
[板工代mavischew刊登]
--
孤臣孽子
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.61.49.79