2

一段时间以来,我一直在考虑(重新)在 iPad 上构建一个应用程序,我将使用 Objective-C 和DSMI将 MIDI 信号发送到主机。这还不错(我的意思是,除了实际编写应用程序)。

现在我正在考虑开发适用于 Android 平板电脑 (TBA) 的应用程序。

在 Java 中,哪些选项可用于 MIDI 消息通信?我对 javax.sound.midi 非常熟悉,但是我需要一个虚拟 MIDI 端口来向主机发送消息。

另一方面,如果应用程序是在 Adob​​e AIR 中完成的,我有哪些选项可用于与 MIDI 通信?

显然,另一种选择是通过 TCP/IP 套接字向 Java 主机发送/接收消息,并以这种方式交谈,但这听起来有点麻烦......或者可能不是?毕竟,DSMI 确实使用了主机程序。

4

1 回答 1

3

javax.sound.midi 在 android 中不可用。

在 android 中访问 midi 功能的唯一途径是通过 JetPlayer 类,它非常适合在游戏中使用。Android会播放midi文件,但不清楚它使用什么代码路径,无法从内存写入midi硬件。

在我制作的一个应用程序中,我需要根据 GUI/用户交互动态播放音符,最终不得不使用样本和音高过滤器来创建音符。

听起来你需要做的是将 DSMI 移植到 android,它的开源iPhone 库看起来很简单,移植应该不难。

编辑:

在考虑了这一点之后,您不会通过使用 javax.sound.midi 或 AIR 中存在的任何 midi 功能获得任何东西。您需要做的就是通过网络链接将 MIDI 消息传递到另一个负责与实际 MIDI 合成器设备通信的设备。这正是 DSMI 所做的。将 iPhone libdsmi 移植到 Android 是您需要做的,它只有 2 个源文件和 2 个标头。1 处理非常简单的 MIDI 消息格式,几乎可以逐行转换为 java,而另一个处理与 DSMI 服务器的网络连接,需要重写以使用 Android 语义来创建网络连接。

于 2010-05-26T15:32:01.547 回答