Linux amidi音乐聆听的实现步骤

运维 系统运维
首先大家需要知道的是,midi文件中所包含的内容相当于乐谱,我们首先需要使用播放器将文件的内容读出和解析,再传给合成器/采样器,后者将这些内容通过合成或采样转换为声音信号,再通过底层的音频接口输出到音频输出设备。

对于Windows用户来说,听midi从来不是什么问题,几乎所有主流的媒体播放器都可以直接支持midi文件的读取和合成。那是因为windows自带了midi合成器的缘故,虽然效果不怎么样(很多人甚至因此而以为midi音乐的效果也就是这样了……),但至少能听。而且XP中所自带的Roland 合成器的效果也还听得过去。


在Linux下,想听Linux amidi就没那么方便了,因为缺乏Linux amidi的相关知识,很多人甚至都不知道自己需要的是什么,到底是合成器?还是播放器?又或者是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,不过这样就听不到其他程序的声音了……

【编辑推荐】

  1. Linux 查看磁盘空间实现代码介绍
  2. Linux操作系统需要微软的十大帮助
  3. 探寻Linux到底需要多低的配置
  4. Linux测试工具tcpdump监视TCP/IP连接命令介绍
  5. Linux流量控制实例应用介绍
责任编辑:chenqingxiang 来源: 互联网
相关推荐

2022-05-17 09:33:52

FreeDOS听音乐Linux

2011-04-28 12:16:53

声学条件音响

2016-01-15 09:53:36

云计算云市场云安全

2010-06-22 17:28:35

Linux Autom

2009-12-24 10:46:08

WPF MediaEl

2018-03-09 11:25:09

微信

2012-05-04 16:16:08

2022-03-06 20:24:50

音乐播放器Juk开源

2010-07-22 13:23:46

telnet SMTP

2021-08-26 10:04:27

小米MIUI12.5

2010-04-06 16:36:55

Oracle绑定变量

2011-03-09 10:25:25

Linux安装LAMP

2010-06-24 09:29:02

Linux Bzip2

2013-03-04 10:57:01

网易云音乐

2019-02-11 09:20:35

Linux音乐播放器

2017-10-31 15:40:36

Linux学习步骤

2017-02-20 09:15:34

Linux播放器Qmmp

2009-10-23 08:12:01

LinuxSCSI硬盘热插拔
点赞
收藏

51CTO技术栈公众号