MidiSoftwareSynthesisHowTo

来自Ubuntu中文
跳到导航跳到搜索



原文出处:

原文作者:fishfork

授权许可:GNU FDL
翻译人员:firehare
校对人员:MillenniumDark spider5
贡献者:spider5
适用版本:
文章状态:等待校正


本手册用于使MIDI音乐发声,下列情况可以不用做此操作: a. 您的声卡硬件声音合成(硬波表&FM)能被Linux支持 a. 您使用外置的MIDI设备 大多数人的MIDI音乐播放需要软件(声音)合成。

<#8080FF> 下面这句话由spider5追加。

由于c-media和soundmax等声音芯片的卓越性能,现在使用板载声卡已经非常普遍,软波表很有必要。Ubuntu不区分内置和外置声卡,因此默认是采用软波表方法的。如果您用的是外置声卡,那么本文的大部分内容都对您没有什么用处--当然使用Timidity也是个不错的选择,您只要参照probe 将Timidity设为MIDI服务器部分的modprobe设置,应该就能使您的外置声卡的MIDI序列器工作。

有两种主要的程序可以实现软件合成,Timidity和Fluidsynth。本节此时只是展示如何安装和使用Timidity。

安装Timidity++

您需要启用Universe软件库(参见AddingRepositoriesHowto)。

开始安装TiMidity++(参见SynapticHowto)。

接下来你需要一组例子。最容易的方式就是安装‘freepats’包(下载需28MB),或者为了能得到更好的声音,把下列的软件库信息写到您的/etc/apt/sources.list文件中:

deb http://www.fbriere.net/debian/dists/etch misc/

然后您可以安装'timidity-patches-eaw'包(大约要下载31MB),并改变/etc/timidity/timidity.cfg文件里的这行:

source /etc/timidity/freepats.cfg

改成这样:

dir /usr/share/timidity/patches-eaw
source /etc/timidity/eawpats.cfg

接着下载配置文件:

cd /etc/timidity
sudo wget http://timidity.s11.xrea.com/files/cfgs/eawpats.cfg

要使用其他的声音采样,可参考接着的'Finding and setting up a soundfont'部分。

当你安装好了之后,你可以尝试播放一个MIDI文件:

timidity myfile.mid

如果一切正常的话,你可以听到合成音乐的优美旋律。如果你有问题,请阅读下面的“减少CPU的使用”。 Anchor(probe)

将Timidity设为MIDI服务器

执行下列命令:

sudo modprobe snd-seq-device
sudo modprobe snd-seq-midi
sudo modprobe snd-seq-oss
sudo modprobe snd-seq-midi-event
sudo modprobe snd-seq

这样会加载缺少的模块。你也许不需要全部的模块(我发现只需要前面二个就可以正常工作了)。然后输入:

timidity -iA -B2,8 -Os1l -s 44100

该命令使Timidity++成为MIDI服务器并打开2个MIDI端口,128:0 ad 128:1。在你运行它之后,你就可以运行MIDI播放器了。你可以打开另一个终端并运行命令:

pmidi -p 128:0 music.mid
kmid music.mid

关闭Timidity,可以在它运行的终端里按CTRL-C。

以根用户来运行服务也许能提高性能,因为它能给进程更高的权限。

<#8080FF> 原文的Notedit疑为作者笔误,可能是NoteEdit,一个五线谱编辑器。

NoteEdit或者您自选的乐谱编辑器将被载入并自动识别MIDI端口。

如果计算机除了播放音乐外还在忙于处理其他事情,你也许会听到一些刮擦音或者有一些潜在的问题。这可以通过打实时内核补丁来解决,但这已经超出了本指南的范围。

引导时自启动Timidity

当你安装Timidity时,Ubuntu Hoary会在/etc/init.d目录中设置启动脚本。为了能在引导时启动,编辑/etc/default/timidity文件并反注释下列行:

TIM_ALSASEQ=true

你也需要添加需更早引导的模块到/etc/modules目录中。

找到并设置soundfont

<#8080FF> 注:SoundFont就是一组经过设定、可下载、并能运用到你的音乐里的声音。

网站: http://www.personalcopy.com (尝试 Unison.sf2) [WWW] http://www.hammersound.net/ 或在搜索引擎中查找Soundfonts。在http://timidity.s11.xrea.com/files/readme_cfgp.htm可以找到一个很长的列表,其中正数第15个 (SGM-whatever) 对一般情况下使用TiMidity已经足够了。

如果你的文件是以.sfArk结束的话,那么它是用讨厌的专利格式压缩的。你也许需要用Windows系统根据所用版本来解压它。详情请参见http://melodymachine.com/sfark.htm ,那儿提供一个Linux版本的工具。

接下来,你需要创建文件/etc/timidity/timidity.cfg,并将下列行添加其中(适当编辑)

soundfont /pathtothesoundfontfile/soundfontfile.sf2

Linux上的sfArk

如果您无法用Linux版的解压工具读取sfArk压缩格式的Soundfonts,您可以使用WINE在Linux中安装Windows版的sfArk。如果您的机器里没安装WINE,您可以用下列命令安装:

sudo apt-get install wine

接着,您必须从上面列出的链接中获得sfArk。一旦装好了WINE,您要做的就是切换到下载的路径,并执行下列命令:

wine nameoffile

sfArk也可以在Crossover Office 5上很漂亮地运行。

减少CPU的使用

如果Timidity++在你低配置机器上占用太多CPU的话,试着将下列几行添加到/etc/timidity/timidity.cfg文件的开头(你也许需要创建该文件)

opt EFresamp=l          #use linear resampling
opt EFvlpf=d            #disable VLPF
opt EFreverb=d          #disable reverb
opt EFchorus=d          #disable chorus
opt EFdelay=d           #disable delay

在Breezy Badger and Dapper Drake里,只需要简单地反注释文件中处理低速CPU的部分。可是,其中一行有错误,"opt no-antialias"应该改成"opt --no-anti-alias"。另外,"opt p32a"换成"opt p64a"比较好,因为32个声部太少了。

讨论

请到[1]提问。