Python MIDI 输出到FruityLoops Studio
我正在做一个项目,想用Python为FL Studio(也叫Fruity Loops)创建一个虚拟的MIDI输入。我查了一些资料,但找到的模块都是关于创建MIDI文件的,这不是我想要解决的问题。
那么,我应该用哪个模块来处理Python中的MIDI输入和输出呢?
2 个回答
我刚好想做你提到的事情,结果发现了一个叫做python的“mido库”。在这个页面上,你可以看到:
import mido
output = mido.open_output()
output.send(mido.Message('note_on', note=60, velocity=64))
我觉得这段代码是默认设备已经设置好了,所以你可能需要先运行:
names = mido.get_output_names()
print(names)
来查看有哪些midi设备可以输出。一旦你知道了设备的名称,你可以这样做:
output = mido.open_output(names[indexOfYourDeviceHere])
output.send(mido.Message('note_on', note=60, velocity=64))
那么,这个怎么跟FL Studio配合呢?我安装了LoopBe1虚拟MIDI驱动,所以当我运行上面的代码时,LoopBe内部MIDI设备就会出现。同样,在FL Studio中我也启用了LoopBe内部MIDI设备。因此,当你的python程序写入这个设备时,FL Studio会把它当作midi输入来读取!
不过,我在我的Windows电脑上设置mido时遇到了一些麻烦,所以我想给你一些建议。要读取或写入midi设备,你需要安装一个“mido后端”。在Linux上,我只需按照他们安装页面上的说明安装portmidi,就顺利搞定了。
但是在Windows上,我在使用portmidi或其他选项时遇到了很多麻烦。最后,我决定为Windows安装pygame(第三个选项),然后用以下命令将其设置为我的后端:
mido.set_backed("mido.backends.pygame")
这样一来,在Windows上就一切正常了。你可以通过谷歌轻松找到Windows版的pygame和mido安装页面。希望这些信息对你有帮助。
Ahmet,我推荐你使用MIDI Yoke。制作一个虚拟MIDI设备驱动程序可不是件简单的事,而且用Python是做不到的。
http://www.midiox.com/myoke.htm
编辑于2011年:过去一年里有些事情发生了变化。我建议你使用Tobias Erichsen的驱动程序,它可以让你创建虚拟端口并向它们发送数据。如果你能使用DLL文件,就可以使用他的驱动程序。
相关信息在这里:http://www.tobias-erichsen.de/rtpMIDI.html
如果需要API,可以联系他。