要播放 Midi 檔案,首先要有硬體支援,早期是音效卡透過外接 Midi 裝置達到播放的效果,目前音效卡有內建 Midi 音效處理晶片的只有 Sound Blaster Live,只要讀取官方所提供的 "聲音樣本",就能夠處理 Midi 合成。這麼說的話,沒有此音效卡就無法播放 Midi 了嗎?請不用擔心,以上所說的是以 "硬體" 直接播放來說明,反之,我們也可以使用 "軟體" 來處理播放 Midi 音效。
在 Linux 上常見的 Midi 音效播放程式為 Timidity,此程式在 Debian Testing/Unstable 皆有附,但有該軟體還不夠,還必須要有 timidity-patches,此套件包含了 timidity 對於各種樂器的補正文件,有了這些 patch 檔案資訊,timidity就能針對 midi 檔案對應的樂器加以模擬並播放出音樂來,很可惜的是 timidity-patches 只有在 stable 上,testing/unstable 並沒有,所以請另行安裝。
在此,小弟建議捨棄 timidity-patches 這個套件,請另外抓取 http://www.stardate.bc.ca/eawpatches/eawpats12_full.rar,然後解壓縮。小弟是解壓縮在 /usr/share/timidity/eawpats/ 之下,然後編輯 /etc/timidity.cfg 並加入以下設定內容:
- 代碼: 選擇全部
dir /usr/share/timidity/eawpats/
source gravis.cfg
source gsdrums.cfg
source gssfx.cfg
source xgmap2.cfg
OK!!!設定好了,準備播放 midi 檔案,由於 Timidity 在執行時需要設定 "輸出輸入",什麼是輸入呢?可以說是 User Interface Input,由於 Timidity 有許多個 User Interface,比如 gtk+,ncurse,X toolkit 等,可以在 timidity -h 中查閱,小弟便不詳述。輸出呢?可以指定 -Od:dsp device 直接輸出;-Os:ALSA PCM;-Oe:esound server;-Ol:ogg files,方法很多,小弟也不詳述,舉最簡單的例子來說。
1:以 gtk+ 為介面播放
- 代碼: 選擇全部
timidity -ig -Od your-midi.mid
相信喇叭中就會聽到許多好聽的音樂了。(想必您已經設定好音效卡了吧...)
2:以 aRts 為音效輸出
- 代碼: 選擇全部
artsdsp timidity -ig -Od your-midi.mid
KDE 中有 kmid 以及 kmidi 這兩個程式可以播放 midi 音樂,前者純粹是播放軟體,但必須搭配 ALSA,因為在編譯時以 ALSA 為主,也可以重新編譯成 OSS support。後者是 timidity 的另一個介面,可以做到 midi to wav 的功能,但播放便不建議使用,因為 kmidi 是即時轉換 midi to wav 然後在播放,所以需要快速的 CPU 才不會停滯,建議還是用上述介紹的方式播放 midi 檔案即可。
timidity 也可以 Server 的方式啟動,可以搭配 ALSA 有不錯的效能,但無法與 sound server 相容,只能擇其一。
底下有一篇關於 ALSA 與 midi 的介紹,相信您會得到更多幫助。
http://www.tldp.org/linuxfocus/ChineseG ... e259.shtml