播放MIDI
出自Linux Wiki
通常默認安裝的Linux系統不能播放MIDI文件,但現在解決這一問題並不困難。
有必要簡單先介紹一下MIDI格式:MIDI文件中保存的並不是原始的聲音信號,而是音樂強度、音量、抖音等控制信息和音長等時間信息,或者說MIDI文件就是一個信息極為豐富的「樂譜」。將樂譜變為聲音,比將聲波還原成聲音要困難的多,不同的軟體、硬體還原的效果也不盡相同。Windows系統中包括了一個簡單的MIDI合成器,所以在Windows中播放MIDI文件較為方便,但效果也不太好。[1]
在Linux中播放MIDI的非專業軟體主要有Timidity和FluidSynth,前者的設置相對容易,故本文針對前者做介紹。[2]
目錄 |
安裝Timidity++
Timidity++是一個將MIDI文件轉化為聲音波形的軟體,轉化的結果可以用於播放。它存在於多數發行版的軟體倉庫中,名稱為'timidity或timidity++,安裝方法請參見從軟體倉庫安裝軟體。
作為一個合成器,Timidity++還需要「聲音字體(soundfont)」才能正常工作。
安裝聲音字體(soundfont)
Fluid提供了可用的聲音字體Fluid (R3) General MIDI SoundFont (GM),在Debian/Ubuntu等發行版中,可以直接安裝fluid-soundfont-gm軟體包,如果使用Archlinux,則從AUR安裝fluidr3。
安裝好後,還要設置Timidity++使用Fluid,如可以在/etc/timidity++/timidity.cfg中注釋掉所有行,並在行尾加入:
soundfont /usr/share/soundfonts/fluidr3/FluidR3GM.SF2
如果Fluid的安裝路徑不同,請相應修改後面的路徑。
如果一切順利,Timidity++現在就可以播放MIDI文件了:
$ timidity YOUR_MIDI_FILE
配置為ALSA服務
使用Timidity播放MIDI只支持命令行,還不太方便。而配置為ALSA服務後,就可以使用Audacious等軟體播放MIDI了。
設置開機時啟動timidity++或timidity服務就可以解決這一問題(運行命令timidity -iA可以臨時解決這一問題)。
服務運行後,可以使用aconnect命令查看可用的MIDI埠
$ aconnect -o client 128: 'TiMidity' [type=user] 0 'TiMidity port 0 ' 1 'TiMidity port 1 ' 2 'TiMidity port 2 ' 3 'TiMidity port 3 '
看到以上輸出後,就可以在多數播放器中播放MIDI文件了(可能需要做相應的設置,如設置Audacious的AMIDI插件使用128:0埠)
設置其它軟體
DOSBox
這一設置方法在DOSBox 0.72中測試通過,請先確認Timidity已經以服務形式運行。[2]
在DOSBox中輸入如下命令,得到配置文件:
config -writeconf dosbox.conf
編輯它並對midi段做如下修改:
[midi] mpu401=intelligent device=default config=128:0
在終端中重新啟動DOSBox,如果正常的話應該能看到初始化128:0埠的調試信息。