Linux amidi音樂聆聽的實(shí)現(xiàn)步驟
對于Windows用戶來說,聽midi從來不是什么問題,幾乎所有主流的媒體播放器都可以直接支持midi文件的讀取和合成。那是因?yàn)閣indows自帶了midi合成器的緣故,雖然效果不怎么樣(很多人甚至因此而以為midi音樂的效果也就是這樣了……),但至少能聽。而且XP中所自帶的Roland 合成器的效果也還聽得過去。
在Linux下,想聽Linux amidi就沒那么方便了,因?yàn)槿狈inux amidi的相關(guān)知識,很多人甚至都不知道自己需要的是什么,到底是合成器?還是播放器?又或者是midi編輯軟件?
盡管Linux系統(tǒng)幾乎都沒有自帶midi合成器/采樣器,但是在Linux下要播放midi音樂其實(shí)也不難,因?yàn)樵贚inux下不僅同樣有著許多專業(yè)級的midi合成器軟件,也有兩個著名的大眾級軟件:Timidity和FluidSynth。
Timidity 通常指的是Timidity++,是一個相當(dāng)出色且易用的合成器/采樣器/播放器,還具有幾種不錯的播放界面以及簡單的配置文件。由于它甚至已經(jīng)自帶了一個比較簡陋的音色庫,安裝好后就已經(jīng)可以直接播放了。相關(guān)的配置方法在網(wǎng)上已經(jīng)有很多,隨便google一下就可以找到一大把,這里就不再詳述了。
FluidSynth從名字就可以看出,這是一個單純的合成器/采樣器,我們還需要另外安裝播放器來播放midi音樂。雖然不如timidity那么簡單,但是fluidsynth在資源占用上要比timidity要少,即使是低配置的機(jī)器也不容易出現(xiàn)卡的情況。
首先,我使用的ubuntu linux上默認(rèn)并沒有加載序列器模塊(用lsmod命令查看),這樣幾乎所有的midi相關(guān)程序都是無法正常運(yùn)行的。可以使用以下命令手動加載:
sudo modprobe snd-seq-oss
需要每次啟動自動加載的話,只需修改文件/etc/modules,在其中加入snd_seq_oss一行即可。
現(xiàn)在,我們需要安裝FluidSynth及其GUI配置前端QSynth了。安裝完成后,啟動qsynth
左邊的按鈕是引擎控制按鈕,右邊的則是功能選擇按鈕。左邊的旋鈕是主音量增益,中間的旋鈕控制回響音效,右邊的旋鈕控制混響音效。
由于fluidsynth并沒有自帶音色庫(Soundfont),我們需要另外下載。目前比較常用的有國內(nèi)的“短歌行”62M音色庫和Fluid R2或R3版音色庫。后者適合內(nèi)存容量比較大的機(jī)器使用。
將下載回來的文件解壓后(可能需要額外的音色庫解壓軟件)得到sf2格式的音色庫文件,放在不含中文名字的路徑下。
現(xiàn)在需要用qsynth來配置引擎及加載音色庫了。點(diǎn)擊左下角的[setup...]按鈕,MIDI標(biāo)簽頁中,確保勾選了Enable Midi Input并選擇了合適的驅(qū)動(一般alsa-seq即可),否則后面會找不到midi輸入接口。在Audio標(biāo)簽頁中,根據(jù)個人情況選擇音頻驅(qū)動即可,推薦使用jack,用alsa也是可以的。
在Soundfonts中,點(diǎn)擊[open...]來加載sf2音色庫文件。
最后,點(diǎn)擊[OK]并確認(rèn)重啟Fluidsynth即可。
如果一切正常,各個旋鈕都可以進(jìn)入可用狀態(tài),這時我們的合成器/采樣器和音色庫就配置完成了。下面來安裝播放器吧,我使用KDE,這里就選用kmid吧。
安裝好kmid后,在主菜單中選擇[設(shè)置]->[MIDI設(shè)置],在midi設(shè)備中選擇帶有"Fluid"的那一項(xiàng),確定。
現(xiàn)在試著打開一個midi文件,播放看看……哈哈,有聲音了。嗯,qsynth的界面似乎有點(diǎn)煩人,那么點(diǎn)擊面板上的[Options...]按鈕打開設(shè)置面板,勾選Enable system tray icon一項(xiàng),確定。然后再關(guān)閉消息窗口,關(guān)閉主窗口。現(xiàn)在,qsynth只呆在右下角的系統(tǒng)托盤上了。在播放音樂的時候,這個圖標(biāo)還會根據(jù)節(jié)奏閃爍噢!
如何?很簡單吧?
不過很遺憾,這種解決方案目前還存在一些小問題,使用時應(yīng)該注意以下幾點(diǎn):
首先,在我的ubuntu上,播放midi經(jīng)常導(dǎo)致系統(tǒng)死鎖,原因暫時不明;
其次,選擇fluidsynth對alsa輸出時,可能會造成cpu占用率一直100%的現(xiàn)象,這是fluidsynth的一個bug,解決方法是:1.使用Jack輸出;2.在Setup->Audio標(biāo)簽頁中,把Audio Device一項(xiàng)填上hw:0,不過這樣就聽不到其他程序的聲音了……
【編輯推薦】