在 C# 中将 MIDI 消息发送到 DAW

Posted

技术标签:

【中文标题】在 C# 中将 MIDI 消息发送到 DAW【英文标题】:Sending MIDI messages to DAW in C# 【发布时间】:2011-11-02 03:00:34 【问题描述】:

我已经搜索了大约一天,但没有找到任何可以为我指明正确方向的信息 - 要么缺少信息,要么我不擅长互联网,要么很难找到有关音乐的信息为一门名为乐谱的编程语言编程。 无论如何: 我想获取我已经烹制的数据(来自相机、kinect、操纵杆控制等)并使用它来将 MIDI 数据发送到其他程序,例如 Propellerhead Reason 或我机器上的其他 DAW。收集输入和处理数据不是问题,但发送 MIDI 消息才是问题。我已经从 codeproject 下载了 C# MIDI Toolkit,不知道从哪里开始。有人可以指出模拟 NoteOn 消息的方向,以由 DAW 解释,或发送 MIDI 数据的其他基本示例?

我可以找到访问 Microsoft MIDI 合成器、解释来自键盘的消息并路由它们的示例,以及许多其他示例,但我觉得这是非常基本的,我不确定为什么我找不到任何相关信息。

谢谢!

【问题讨论】:

【参考方案1】:

按照MusiGenesis 的建议,我建议创建一个虚拟MIDI 端口。但是,有一种方法可以将其直接嵌入到您的软件中,甚至可以适当地命名。

http://www.tobias-erichsen.de/virtualMIDI.html

Tobias 的驱动程序允许你这样做,如果你给他发一封电子邮件,他会向你发送 API,我发现它很容易与 .NET 集成。

从那里,C# MIDI Toolkit 就是您所需要的。我还建议查看NAudio。

【讨论】:

+1。我已经使用了这个精确的设置(虚拟 MIDI 端口 + MIDI 工具包),并且已经能够使用 C# 发送 MIDI 消息 如果有一个使用 naudio 或 C# midi 工具包的例子会很好。我不知道如何让它们一起工作【参考方案2】:

This answer 似乎暗示可以配置一个虚拟 MIDI 端口,您的 Codeproject MIDI 示例可以向其中写入消息,并且在 Reason 中可以选择作为输入源(我自己没有尝试过,所以我可以'不说这是否可行)。

除此之外,远程控制 Reason 的常规方法是编写 VST 插件(难度:相当高)。

【讨论】:

是的,我试图避免编写 VST。由于 Reason 对他们没有任何支持,我不知道即使调查它也会有所帮助。我知道这种事情在 Max/MSP 中很容易做到,但不幸的是 Max/MSP 非常昂贵。不过,您已经让我走上了正确的道路,我相信它即将开始工作。谢谢! 我赞同MusiGenesis 关于使用虚拟MIDI 端口的建议。这是在同一台计算机上运行的应用程序之间发送 MIDI 数据的标准方式。 @TheJew72:如果您让虚拟端口工作正常,请在此处发表评论。我很想知道这一点。 我使用了一个名为“LoopBe”的虚拟端口程序,它运行良好。我认为它只支持一个端口或其他东西,但这就是我所需要的。我现在有了我的 Kinect 控制 Propellerhead Reason,这非常酷。谢谢你

以上是关于在 C# 中将 MIDI 消息发送到 DAW的主要内容,如果未能解决你的问题,请参考以下文章

使用 Arduino 发送 MIDI SysEx 消息?

如何在 unix 中将 midi 音符输出到 midi 乐器?

如何将midi从java程序发送到OSX上的IAC总线

c#在linux上向本地syslog服务发送消息

如何在c#中将输入发送到winlogon

Android上的Midi事件路由