我在Windows电脑上安装了Fruityloops和Propellerheads Reason软件合成器。
有没有办法从Visual Basic或Python中访问并编写这些软件?或者至少能否从代码发送Midi消息到合成器?
更新:尝试使用像“midi-mapper”之类的工具(感谢MusiGenesis提供的链接),似乎不起作用。 我认为Reason或FL Studio不像标准的GM Midi合成器。
更新2:如果您对此问题感兴趣,请查看这个。
我在Windows电脑上安装了Fruityloops和Propellerheads Reason软件合成器。
有没有办法从Visual Basic或Python中访问并编写这些软件?或者至少能否从代码发送Midi消息到合成器?
更新:尝试使用像“midi-mapper”之类的工具(感谢MusiGenesis提供的链接),似乎不起作用。 我认为Reason或FL Studio不像标准的GM Midi合成器。
更新2:如果您对此问题感兴趣,请查看这个。
这两个应用程序都支持MIDI,只是它们彼此之间无法通信。
为了在应用程序之间通过MIDI发送消息,您需要安装一个虚拟MIDI端口。
有几个免费的选项可供选择,但是这个工具可以使用:http://www.midiox.com/zip/MidiYokeSetup.msi
您将获得一个虚拟MIDI输出端口,您可以像操作普通MIDI设备一样将数据写入该端口。在Fruity Loops或Rebirth中,您选择该端口作为输入即可连接这两个程序。
连接方式如下:
您的应用程序
--> 虚拟MIDI端口
--> FruityLoops
说到Reason,由于其封闭的架构,你可以做很多事情 - 你可以使用VST插件(或任何其他类型的插件,如DirectX)- 你唯一的选择是使用MIDI。
关于Fruity Loops,你可以编写一个VST插件,它可以从脚本语言(VB、Python或其他语言)中获取输入,但为了编写这样的东西,你必须使用Delphi或C++。
或者,你可以查看由Cycling74制作的MAX - 这是类似于音乐IDE的东西;-) - 我非常确定你可以在其中使用Python。
你可以编写一个Rewire主机。不过,你需要获得许可证(许可证是免费的,但你的应用程序必须是专有的,所以不能开源)。
或者,你可以通过MIDI消息进行接口。
最后,你可以实现一个虚拟音频设备,将音频路由到/从任何你想要的地方或以某种方式处理它。 我想这些都会相当困难。 MIDI可能是三个中最容易的(我不知道Rewire协议使用起来有多容易或困难)。
// Insert New
song.newLane("MyMidiLane", type("Midi"));
lane = song.getLane("MyMidiLane");
part = lane.newPart( time("10.0:000"), time("4.0:000") );
part.insertNote(note("c#3"), time("11.2:000"), time("2:0"), 120 );
part.insertNote(note("f3"), time("11.3:000"), time("1:0"), 100 );
part.insertNote(note("g#3"), time("11.3:000"), time("1:0"), 100 );
part.insertNote(note("b3"), time("11.3:000"), time("0:64"), 100 );
part.removeNote(note("f3"), time("11.3:000"));
part = song.newLane("MyTextLane",
type("Text")).newPart(time("24.0:000"), time("10.0:000"));
part.text = "This is the test text to be inserted.";
part.lane.parts[0].remove(); // remove initially inserted text-part
另一个阅读/更改笔记的例子:
lane = song.getLane("MyMidiLane");
// a lane has a fixed instrument assigned
lane.parts[0].notes[0].duration=64
lane.parts[0].notes[1].duration=32
lane.parts[0].notes[1].startTick=120
// Parts are blocks of notes that you can drag around together in the Frinika GUI.
// They're like patterns in trackers.
for (i in lane.parts[0].notes){
println("i: "+i+", n: "+noteName(lane.parts[0].notes[i].note));
println("i: "+i+", dur: "+lane.parts[0].notes[i].duration);
println("i: "+i+", startT: "+lane.parts[0].notes[i].startTick);
}
http://frinika.appspot.com/ 它还有一个Java Webstart启动器,所以你甚至不需要安装。
它曾经捆绑了Javadoc文档,但出于某种原因,它们最新的下载不再包含该文档。这很遗憾,因为那里记录了Javascript绑定。所以,现在你必须浏览源代码或自己构建Javadoc。(它还具有一些内置示例,可从脚本窗口访问,你应该先查看它们。我的第一个示例就是来自那里。)
这是你将找到Javascript文档的源文件:
但是还有其他选择。您也可以查看mingus,这是一个用于音乐理论和midi文件处理的Python库。它需要Fluidsynth,并且演示应用程序还需要GamePython,因此设置比Frinika更复杂。
P.S.: Frinika有一个特定的错误:当拖动相邻的音符时,有些可能不会发出正确的长度。您可以通过在钢琴卷轴视图中快速转换连续音符(相对较快),或者拖动包含音符的部分来帮助解决这个问题。重新启动Frinika也有帮助,但这是较慢的方法。因此,此错误不会影响保存的文件,也不会影响midi导出。