10

我的 Windows PC 上有 Fruityloops 和 Propellerheads Reason 软件合成器。

有什么方法可以从 Visual Basic 或 Python 获取和编写这些脚本?或者至少从代码向合成器发送 Midi 消息?

更新:尝试使用类似“midi-mapper”的东西(感谢链接MusiGenesis)似乎不起作用。我认为 Reason 或 FL Studio 不像标准的 GM Midi 合成器。

更新 2:如果您对此问题感兴趣,也请查看此问题。

4

7 回答 7

3

这两个应用程序都支持 MIDI。只是他们看不到对方。

为了在应用程序之间通过 MIDI 发送消息,您需要安装一个虚拟 MIDI 端口

有几个免费提供,但这个工作: http: //www.midiox.com/zip/MidiYokeSetup.msi

您将获得一个可以写入的虚拟 MIDI 输出端口,就好像它是一个普通的 MIDI 设备一样。在 Fruity Loops 或 Rebirth 中,您选择该端口作为输入。这就是连接程序所需要做的一切。

它会像这样工作:

Your Application--> Virtual MIDI Port-->FruityLoops

于 2010-05-15T11:55:02.300 回答
2

我认为 FL Studio 和 Reason 都可以配置为默认的 MIDI 播放设备。要从 VB.NET 向其中任一方发送 MIDI 消息,您需要 PInvoke midiOutOpen、midiOutShortMsg 和 midiOutClose API 调用。这是代码示例的链接:

http://www.answers.com/topic/midioutopen

它们适用于 VB6,但它们应该很容易转换为 VB.NET。

我知道 FL Studio 可以从为 FL(或 VSTx 插件)编写的插件“驱动”,但我认为这些总是用 C 或 C++ 编写的。

编辑:我刚刚了解到 Windows Vista 放弃了 MIDI 映射器(这将使设置 FL 或 Reason 成为默认的 MIDI 设备变得简单)。惊人。这是我找到的替代解决方案的链接:

http://akkordwechsel.de/15-windows-vista-und-der-midi-mapper/

我刚刚尝试过(它只是一个 *.CPL 文件,您可以双击运行)并且它似乎可以工作(尽管 GM Synth 是我笔记本电脑上唯一可用的选项,所以我不确定它是否会选择up FL 或 Reason 作为选择)。

于 2008-11-06T04:40:03.947 回答
2

注意:此答案不能完全回答您提出的问题,但可能会达到您想要的结果:)

您可以使用 jVSTWrapper ( http://jvstwrapper.sourceforge.net/ ) 在 Java 中编写 VST 插件。如果你真的想使用 Python,你可以使用 Jython 来连接 java 并这样做。或者,您可以只用 Java 或其他用于 JVM 的脚本语言(如 Groovy)编写插件。

于 2008-11-06T04:57:01.043 回答
1

您需要的是一个 VST MIDI 脚本/脚本插件来创建可以发送到任何 MIDI 通道的 MIDI 事件逻辑。您需要在 FL 中为需要调整其值的 VST 乐器/效果设置一个 MIDI 通道。谷歌那里有一些插件,如果你发现任何有用的东西,请在这里分享它们:)

于 2010-05-15T12:06:08.380 回答
0

有一个开源音乐工作站,叫做 Frinika,你可以用 Javascript 编写脚本。(插入/删除音符,更改音高轮等 MIDI 效果。)它可以导入/导出常规 MIDI 文件,因此它可以与果味循环或您拥有的任何其他东西一起使用。

// 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 文档的源文件:

frinika Javascript 文档/源代码

但也有其他选择。您也可以查看mingus,这是一个用于音乐理论和 midi 文件处理的 Python 库。它需要 Fluidsynth,演示应用程序也需要 GamePython,因此设置起来比 Frinika 复杂一些。

PS:Frinika 有一个特殊的错误:当拖动相邻的音符时,有些可能听起来不合适的长度。您可以通过前后移调连续音符(在钢琴卷帘视图中相当快)或前后拖动包含音符的部分来帮助实现这一点。重新启动 Frinika 也会有所帮助,但这是较慢的方法。所以这个错误不会影响保存的文件,也不会影响 midi 导出。

于 2010-12-14T14:01:38.880 回答
0

你可以写一个Rewire主机。不过,您必须获得许可证(许可证是免费的,但您的应用程序必须是专有的,因此不能开源)。

或者,您可以通过 MIDI 消息进行交互。

最后,您可以实现一个虚拟音频设备,它将音频路由到您想要的任何位置或以某种方式处理它。我想所有这些都会相当困难。MIDI 可能是三者中最简单的(我不知道 Rewire 协议的使用有多难)。

于 2008-11-06T13:30:11.570 回答
0

说到 Reason,你可以用它做很多事情,因为它是封闭的架构——你可以使用 VST 插件(或任何其他类型,如 DirectX 插件)——你唯一的选择是使用 MIDI。

关于 Fruity Loops,您可以编写一个 VST 插件,该插件可以从脚本语言(VB、Python 或其他)中获取输入,但为了编写这样的东西,您必须使用 Delphi 或 C++。

或者,您可以查看由 Cycling74 制作的 MAX——它类似于音乐的 IDE;-)——我很确定您可以使用 Python。

于 2008-11-06T09:30:56.823 回答