对于Windows用户来说,听midi从来不是什么问题,几乎所有主流的媒体播放器都可以直接支持midi文件的读取和合成。那是因为windows自
带了midi合成器的缘故,虽然效果不怎么样(很多人甚至因此而以为midi音乐的效果也就是这样了……),但至少能听。而且XP中所自带的Roland
合成器的效果也还听得过去。
在Linux下,想听midi就没那么方便了,因为缺乏midi的相关知识,很多人甚至都不知道自己需要的是什么,到底是合成器?还是播放器?又或者是midi编辑软件?
首先大家需要知道的是,midi文件中所包含的内容相当于乐谱,我们首先需要使用播放器将文件的内容读出和解析,再传给合成器/采样器,后者将这些内容通过合成或采样转换为声音信号,再通过底层的音频接口输出到音频输出设备。
尽管Linux系统几乎都没有自带midi合成器/采样器,但是在Linux下要播放midi音乐其实也不难,因为在Linux下不仅同样有着许多专业级的midi合成器软件,也有两个著名的大众级软件:Timidity和FluidSynth。
Timidity
通常指的是Timidity++,是一个相当出色且易用的合成器/采样器/播放器,还具有几种不错的播放界面以及简单的配置文件。由于它甚至已经自带了一
个比较简陋的音色库,安装好后就已经可以直接播放了。相关的配置方法在网上已经有很多,随便google一下就可以找到一大把,这里就不再详述了。
FluidSynth从名字就可以看出,这是一个单纯的合成器/采样器,我们还需要另外安装播放器来播放midi音乐。虽然不如timidity那么简单,但是fluidsynth在资源占用上要比timidity要少,即使是低配置的机器也不容易出现卡的情况。
首先,我使用的ubuntu linux上默认并没有加载序列器模块(用lsmod命令查看),这样几乎所有的midi相关程序都是无法正常运行的。可以使用以下命令手动加载:
sudo modprobe snd-seq-oss
需要每次启动自动加载的话,只需修改文件/etc/modules,在其中加入snd_seq_oss一行即可。
现在,我们需要安装FluidSynth及其GUI配置前端QSynth了。安装完成后,启动qsynth即出现以下界面。
如图所示,左边的按钮是引擎控制按钮,右边的则是功能选择按钮。左边的旋钮是主音量增益,中间的旋钮控制回响音效,右边的旋钮控制混响音效。
由于fluidsynth并没有自带音色库(Soundfont),我们需要另外下载。目前比较常用的有国内的“短歌行”62M音色库和Fluid R2或R3版音色库。后者适合内存容量比较大的机器使用。
将下载回来的文件解压后(可能需要额外的音色库解压软件)得到sf2格式的音色库文件,放在不含中文名字的路径下。
现
在需要用qsynth来配置引擎及加载音色库了。点击左下角的[setup...]按钮,MIDI标签页中,确保勾选了Enable Midi
Input并选择了合适的驱动(一般alsa-seq即可),否则后面会找不到midi输入接口。在Audio标签页中,根据个人情况选择音频驱动即可,
推荐使用jack,用alsa也是可以的。
在Soundfonts中,点击[open...]来加载sf2音色库文件。
最后,点击[OK]并确认重启Fluidsynth即可。
如果一切正常,各个旋钮都可以进入可用状态,这时我们的合成器/采样器和音色库就配置完成了。下面来安装播放器吧,我使用KDE,这里就选用kmid吧。
安装好kmid后,在主菜单中选择[设置]->[MIDI设置],在midi设备中选择带有"Fluid"的那一项,确定。
现
在试着打开一个midi文件,播放看看……哈哈,有声音了。嗯,qsynth的界面似乎有点烦人,那么点击面板上的[Options...]按钮打开设置
面板,勾选Enable system tray
icon一项,确定。然后再关闭消息窗口,关闭主窗口。现在,qsynth只呆在右下角的系统托盘上了。在播放音乐的时候,这个图标还会根据节奏闪烁噢!
如何?很简单吧?
不过很遗憾,这种解决方案目前还存在一些小问题,使用时应该注意以下几点:
首先,在我的ubuntu上,播放midi经常导致系统死锁,原因暂时不明;
其
次,选择fluidsynth对alsa输出时,可能会造成cpu占用率一直100%的现象,这是fluidsynth的一个bug,解决方法是:1.使
用Jack输出;2.在Setup->Audio标签页中,把Audio Device一项填上hw:0,不过这样就听不到其他程序的声音了……
参考链接
使用Timidity++播放midi音乐
音色库下载
短歌行音乐音频网SF2MIDI.COM(需要注册)