【发布时间】:2013-10-24 20:10:42
【问题描述】:
我正在使用 Unity3D 标准版。对于那些不知道的人,它是一个支持 C#/.NET 脚本的 3D 游戏引擎(因此它可以访问 .NET 2.0 API)。
我创建了自己的合成器。 (目前它正在响应由 MIDI 音序器咀嚼 MIDI 文件生成的 note-ON 事件。)
现在我希望从 MIDI 键盘捕捉 note-ON 事件。
我打算至少将我的应用程序部署到 iOS,希望其他操作系统也能效仿。所以目标场景是:
- 有人在 iPhone 上运行我的应用程序,他们有一个 MIDI 键盘连接到他们的 Windows 机器
- 有人在 Android 平板电脑上运行我的应用程序,他们有一个连接到他们的 Linux 机器的 MIDI 键盘
- 有人在 OS X 上运行我的应用程序,他们有一个连接到 OS X 的 MIDI 键盘
最后一个是我现在的情况,所以如果有人有一个不扩展的解决方案,我仍然对它非常感兴趣——这至少可以让我一起得到一个功能原型.
存在一个资产 MIDI Unified,它将与 MIDI 设备连接。但是,它需要 PRO 版本。这是因为PRO版本允许使用原生插件。
我相信应该可以在不使用本机插件的情况下将 MIDI 导入 Unity,而是通过网络连接。
(请注意,我不是在说 Internet 连接、以太网连接、TCP/IP、UDP、HTTP,因为我不完全确定正确的术语是什么。)
似乎有用于通过网络发送 MIDI 信号的实用程序:ipMIDI 将在 Windows 和 OS X 上执行此操作。在 Linux 中可能会执行此操作。
OSX 有一个“Audio MIDI setup”实用程序,有人告诉我它允许将 MIDI 信号从设备引导到本地主机。 (也许这就是为什么 ipMIDI for OS X 是免费的?)
编辑:我刚刚发现音频 MIDI 设置实现了RTP MIDI,这似乎是通过网络传输 MIDI 的最佳标准(它可以应对有损网络)。
所以我很确定任务变成了:如何在 C#/.NET 中实现 RTP MIDI?
但也许有一些更简单(但功能较弱)的解决方案,例如,一些解决方案仅适用于 OSX 上的 localhost 并接收来自 localhost 的 Note-ON MIDI 消息。
如果我能获得第一代应用程序的基本解决方案,然后在我有能力的情况下将其替换为强大的组件,我将非常高兴。
就我所知,有人可以整理一下吗?
π
编辑:http://u3d.as/content/sta-blockhead/websocket-sharp-for-unity/4X4这有帮助吗?
【问题讨论】:
-
我的第一个问题是 - 为什么不能使用 Unity3D 的专业版?您现在可以以每月 75 美元的价格购买 Unity3D,而不是过去必须支付的大笔预付款。根据您的尝试,我认为这是值得的。
标签: networking unity3d midi