代码之家  ›  专栏  ›  技术社区  ›  Dan Rosenstark

Android上的MIDI:Java和/或AIR库

  •  2
  • Dan Rosenstark  · 技术社区  · 14 年前

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

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

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

    另一方面, 如果应用程序是在AdobeAir中完成的,我会有什么选择呢? 用于与MIDI通信?

    显然,另一种选择是通过TCP/IP套接字向Java主机发送/接收消息,并以这种方式进行讨论,但听起来有点麻烦。或者也许不是?毕竟,DSMI使用的是主机程序。

    1 回复  |  直到 12 年前
        1
  •  3
  •   Mark    14 年前

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

    在Android中,唯一能访问MIDI功能的是Jetplayer类,它非常适合在游戏中使用。Android将播放一个MIDI文件,但它使用的代码路径不明确,无法从内存写入MIDI硬件。

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

    在我看来,你需要做的是将DSMI端口连接到Android,它的 open source iPhone库看起来很简单,不应该很难移植。

    编辑:

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