其实寻找这种方法的初衷是因为我想用cakewalk的sonar来编辑MIDI,但sonar只支持DXi格式的插件,不支持VSTi。虽然有转换工具,但是似乎很不完善,几乎不能正常使用。后来就转而寻找能把vst插件变成系统的MIDI输出设备的程序,最后还是没有找到,倒是在一个叫SynthFont的程序里面得到了提示,找到了一种新的方法。
这种方法需要两类软件。第一类是一种叫做“虚拟MIDI电缆”的东西;第二类是支持将系统的MIDI输入口作为信号源的VST Host(VST宿主)。其实两种东西都好找,选择也挺多的,有商业软件也有免费软件。“虚拟MIDI电缆”这种东西可以在计算机内部“虚拟”出一条或多条MIDI电缆。这些“电缆”是看不见的,它们只会让你看到你的MIDI设备列表那里增加的一大堆输入输出端口。利用这些虚拟的电缆可以将应用程序的MIDI输入输出连接起来,比如将播放软件的MIDI输出设置为虚拟电缆的输入端,然后将虚拟电缆的输出端设置为VST Host的输入端,这样MIDI就能通过VST Host播放出来了。这就是这种解决方案的基本原理。可用以下图片进行表示:
目前网上可以找到若干款虚拟电缆,它们基本上是免费的。我分别测试了Maple Virtual Midi Cable, Sonic Foundry Virtual MIDI Router, Loopbe1和MIDI Yoke,觉得这些软件各有优缺点,很遗憾,没有一款是比较完美的。MIDI Yoke的兼容性总体而言不错,在我的Windows XP下工作十分正常,不过在一台Windows 2003下就出现了MIDI数据丢失的现象(似乎在XP下也偶尔会出现-_-)。而Sonic的那款虽然不支持feedback检测,但是在2003下却能正常工作。顺便提一下,所谓feedback,是指这样的一种现象:一些同时支持MIDI in和MIDI out的程序,比如大部分的MIDI编辑程序,如果将其MIDI输入和输出设备都设为同一条虚拟通道,相当于把通道的输入端和输出端接在了一起,那么就会在这条通道上产生“回啸”。由于数据不断在通道上不断循环增加,最终将榨干系统的最好一点资源——我在那台2003上试过一次,结果把系统搞得半死,所以除非想不开否则千万别试图在你的程序中将MIDI输入和输出设备都设为同一组虚拟通道。
总之,我的建议是在Windows NT/2k/xp等系统下,可以先尝试MIDI Yoke。通过它来播放几首MIDI,听听是不是跟手机上的播放效果一样,如果差别比较明显,那就换其它的试试。注意,本文的讲解都将以MIDI Yoke为例。如果是98/ME,虽然MIDI Yoke也有对应的版本,不过网上一般都是推荐使用Hubi's MIDI LoopBack device。我没尝试过,哪位同学有兴趣的可以试试当小白鼠……
至于支持MIDI IN的VST Host,网上就多如牛毛,简直跟夏天宿舍里打不完的蚊子同一个数量级了。但是我们不需要太多稀奇古怪的花俏功能,我们只需要一个功能越简单越好最好简单得很石器时代的VST Host。老天爷没有抛弃俺,终于让俺找到了一个叫SAVIHost的。SAVIHost长得小巧可爱,该有的功能都有了,而且能在98和ME下跑,我使用至今,虽然有一些恼人的小BUG,但还算感觉良好。
OK,主角都登场了,现在介绍一下怎么将这一锅乱七八糟的东西搅在一起。
首先就是要安装虚拟MIDI电缆程序。MIDI Yoke的安装分为手动或自动两种,一般采用方便快捷的手动安装即可。具体安装方法可以参考软件附带的文档。
安装完毕后,在控制面板里的“声音和音频设备”中的“音频”标签页里即可看到在“MIDI 音乐播放”中多出来了几个MIDI设备,这些就是虚拟MIDI电缆的输入端口了。可以看到,MIDI Yoke虚拟了8个MIDI通道,不过我们只需要一个就足够了。
如果在这里将“MIDI Yoke NT: 1”设为默认设备,则以后就可以将SAVIHost作为默认的MIDI输出音源了。也就是说,无论是通过Windows Media Player播放的MIDI文件,还是浏览网页时IE播放的MIDI文件,都会通过SAVIHost以OT756的音色播放出来。这样我们在网上下载铃声时,就能很方便地试听到铃声在手机上的播放效果了。当然,现在暂时还实现不了,因为必须先继续进行下面的步骤。
SAVIHost的使用很简单,只需要把它跟756的vst插件放在同一个文件夹下,并改成相同的文件名即可。即756的vst插件文件名是OneTouch756.dll,则只需要把下载回来的savihost.exe改名为OneTouch756.exe即可。我在文末提供了一个已改好名的压缩包,下载回来解压后直接运行里面的OneTouch756.exe即可。
然后双击OneTouch756.exe,即可启动程序。程序启动后会自动载入756的VST插件,跟Cubase中载入插件一样,会出现一个蓝色版的OT756。
首先要对它进行一些设置。点击菜单Devices->MIDI,Input Port那里选择前面音频设置那里对应的MIDI通道。即如果前面选择的是“MIDI Yoke NT: 1”,这里也选择同样的。
实际上这个就是虚拟MIDI通道的输出端口。MIDI数据通过这个端口输出到SAVIHost中,SAVIHost通过调用OT756的VST插件,将MIDI数据转换为音频播放出来。
另外,如果机器性能不够强劲,播放时可能声音会有点爆音或不连续,可以在Devices->Wave菜单项中更改音频输出设置。如果你的声卡比较牛,可能会有ASIO驱动,在Output Port那里选择ASIO端口可以降低延迟,没有的话就用默认的设置吧。然后是Buffer(输出缓冲),这个值太大会增加延迟,太小的话就会因CPU处理不及时而产生爆音。因为我们对实时性要求不是很高,这个值可以设高点,以保证播放质量。
另外,在Engine->Priority里,可以设置程序的优先级。将其设高点可以提高性能。
此外,还需要在Effect->Filter里面过滤一些事件,以提高兼容性。可以直接导入压缩包中的注册表文件OneTouch756.reg进行设置。
这样,基本的设置就完成了。有兴趣的朋友可以研究一下它的其它菜单项,反正并不是很复杂,这里就不再罗嗦了。设置完成后,关闭SAVIHost,它会自动保持设置,下次再运行时就不用重新进行设置了。今后,我们要做的事就是双击OneTouch756.exe运行它,然后最小化它,然后在有需要的时候关闭并重新运行它(事实上,经常要这么做……)
接下来,找一首你已经在手机上听过n遍的midi,用一款你熟悉的播放器,听听在电脑上和在手机上音色是不是差不多。是的话说明前面的活没白干,终于成功地把你的电脑变成了一台OT756的MIDI合成器:) 如果有点不一样也不用担心,一是电脑的音频系统好很多,所以出来的声音自然跟手机那个小喇叭出来的有点不一样。二是鼓声的问题,不知为何,手机上的鼓声基本上是错乱不正常的,甚至有的鼓声是爆音,而SAVIHost的鼓声则是正常的,难道是声音芯片的bug?三是软件自身的问题,播放几首MIDI后就会无法正常复位,必须要关闭SAVIHost然后重新运行,才能让声音恢复正常。如果是很不一样或者完全没有声音出来,那么就回头检查一下各个地方的设置有没有错误吧。
最后还要提醒的是,千万不要在同一个程序里把MIDI输入和输出设成同一个MIDI通道,以免造成Feedback。如这种设置就是极其危险的:
附:
SAVIHost及OT756、OT735插件下载地址:
http://ohfaint.3322.org/ot756/bin.rar
MIDI Yoke NT下载地址(附安装说明):
http://ohfaint.3322.org/ot756/myokent172.rar
Sonic Foundry Virtual MIDI Router下载地址(附安装说明):
http://ohfaint.3322.org/ot756/SFVMR.rar
SAVIHost的主页:
http://www.hermannseib.com/english/savihost.htm
Loopbe1的主页:
http://www.nerds.de/en/loopbe1.html
Hubi's MIDI LoopBack device主页:
http://members.magnet.at/hubwin/midi.html
MIDI Yoke的主页:
http://www.midiox.com/index.htm?http://www.midiox.com/myoke.htm
标签:
留言评论