播放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端口的调试信息。