天堂的另一角

天堂魷魚的原创技术博客。所謂兼容並包,無奇不有。

 

使用FluidSynth在Linux下聆听MIDI音乐

对于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即出现以下界面。
qsynth1.png

如图所示,左边的按钮是引擎控制按钮,右边的则是功能选择按钮。左边的旋钮是主音量增益,中间的旋钮控制回响音效,右边的旋钮控制混响音效。

由于fluidsynth并没有自带音色库(Soundfont),我们需要另外下载。目前比较常用的有国内的“短歌行”62M音色库和Fluid R2或R3版音色库。后者适合内存容量比较大的机器使用。
将下载回来的文件解压后(可能需要额外的音色库解压软件)得到sf2格式的音色库文件,放在不含中文名字的路径下。
现 在需要用qsynth来配置引擎及加载音色库了。点击左下角的[setup...]按钮,MIDI标签页中,确保勾选了Enable Midi Input并选择了合适的驱动(一般alsa-seq即可),否则后面会找不到midi输入接口。在Audio标签页中,根据个人情况选择音频驱动即可, 推荐使用jack,用alsa也是可以的。
qsynth2.png

在Soundfonts中,点击[open...]来加载sf2音色库文件。
最后,点击[OK]并确认重启Fluidsynth即可。
qsynth3.png

如果一切正常,各个旋钮都可以进入可用状态,这时我们的合成器/采样器和音色库就配置完成了。下面来安装播放器吧,我使用KDE,这里就选用kmid吧。
安装好kmid后,在主菜单中选择[设置]->[MIDI设置],在midi设备中选择带有"Fluid"的那一项,确定。
kmid.png

现 在试着打开一个midi文件,播放看看……哈哈,有声音了。嗯,qsynth的界面似乎有点烦人,那么点击面板上的[Options...]按钮打开设置 面板,勾选Enable system tray icon一项,确定。然后再关闭消息窗口,关闭主窗口。现在,qsynth只呆在右下角的系统托盘上了。在播放音乐的时候,这个图标还会根据节奏闪烁噢!
qsynth4.png

如何?很简单吧?

不过很遗憾,这种解决方案目前还存在一些小问题,使用时应该注意以下几点:
首先,在我的ubuntu上,播放midi经常导致系统死锁,原因暂时不明;
其 次,选择fluidsynth对alsa输出时,可能会造成cpu占用率一直100%的现象,这是fluidsynth的一个bug,解决方法是:1.使 用Jack输出;2.在Setup->Audio标签页中,把Audio Device一项填上hw:0,不过这样就听不到其他程序的声音了……


参考链接

使用Timidity++播放midi音乐


音色库下载

短歌行音乐音频网
SF2MIDI.COM(需要注册)


posted on 2006-10-18 21:17 Addone 阅读(6268) 评论(3)  编辑 收藏 引用 所属分类: Linux软件介绍

评论

# re: 使用FluidSynth在Linux下聆听MIDI音乐 2006-10-19 11:53 DELL网站

好文,学习中。  回复  更多评论   

# re: 使用FluidSynth在Linux下聆听MIDI音乐 2010-12-25 03:38 speedup2010

使用firefox 3.6.13和chromium 8.0.552.224 (0) 查看你的这个网站那个样式都有问题。边栏退到后面去了。  回复  更多评论   

# re: 使用FluidSynth在Linux下聆听MIDI音乐 2011-01-20 12:41 Addone

@speedup2010
谢谢提醒!
检查了一下,在我的几台电脑上都没有发现这个问题,可能跟屏幕的分辨率有关。
应该是博客主题对水平分辨率不高的显示器支持不好所致。不好改啊。:(
有空的时候再看看能不能解决吧。
再次谢谢哈!  回复  更多评论   

只有注册用户登录后才能发表评论。

导航

统计

公告


Addone,又名:天堂鱿鱼。
这里是我的技术博客。其他文章
作为“杂感”分类存档。
我的新思想主要发往新站:
幻想园
幻想园

欢迎光临

Linux注册用户

feedsky
抓虾
google reader
bloglines

联系方式




My status

常用链接

留言簿(11)

随笔分类(99)

随笔档案(69)

相册

友情链接

推荐站点

搜索

积分与排名

最新评论

阅读排行榜