【发布时间】:2011-12-08 18:24:28
【问题描述】:
Android 平台可以使用哪些类与外部 MIDI 设备进行通信(输入/输出)?我有 HTC Desire 智能手机,它有 USB 端口,我认为可以使用标准 USB 电缆 + [Type A -> Mini A] 转换器将它连接到 MIDI 合成器。我想编写一个 MIDI 音序器应用程序,它能够从合成器录制 MIDI 流,然后再播放。
【问题讨论】:
Android 平台可以使用哪些类与外部 MIDI 设备进行通信(输入/输出)?我有 HTC Desire 智能手机,它有 USB 端口,我认为可以使用标准 USB 电缆 + [Type A -> Mini A] 转换器将它连接到 MIDI 合成器。我想编写一个 MIDI 音序器应用程序,它能够从合成器录制 MIDI 流,然后再播放。
【问题讨论】:
简短回答:没有。稍微长一点的答案:在 HTC Desire 上,没有对 USB 主机模式的内置支持(您需要它,因为 USB-midi 适配器将是 USB 客户端)。 (Android 3.1 确实支持 USB 主机模式,但 HTC Desire 不支持) 如果你不怕烙铁,你可以选择 midi-over-bluetooth 路线:http://nettoyeur.noisepages.com/2011/01/midi-over-bluetooth-part-iii-new-hardware/
【讨论】:
这方面发生了很大变化。以下库允许使用 API 12+ 上的 USB OTG 适配器进行 MIDI i/o:
https://github.com/kshoji/USB-MIDI-Driver
它远非完美,在我的测试中,相当崩溃,但对于寻找相关课程的人来说,它至少应该是一个很好的起点。
【讨论】:
正如@edovino 所说,您需要 USB 主机模式,然后是驱动程序。
如果您不介意围绕手机进行操作,并且硬件支持它,那么您确实有一些选择。看看这个链接:http://sven.killig.de/android/N1/2.2/usb_host/
这个家伙能够让音频、视频、键盘和其他一些东西正常工作。他包括音频/MIDI 驱动程序。
【讨论】:
是的,如上所述,使用手机是不可行的,因为它不提供 USB 主机功能。在过去的几个月里,我一直在虔诚地工作,为我的合成器制作一个 XY 控制器,以便我可以传输控制器值以用于表演。我想,这就是您想要使用附加功能做的事情。
蓝牙绝对是一种选择,如果您查找 libpd,Peter Brinkmann 本人已经解决了这个问题,并承认用于 MIDI 的蓝牙加密狗并不遥远。
WiFi 也是人们可能愿意关注的东西。使用 rtpMIDI,我们可以在 PC 端创建会话,并使用几乎任何支持 WiFI 的 MIDI 设备来传输/接收数据。如果您希望使用手机控制软件合成器,这似乎很理想。 TouchDAW 和 TouchOSC,android 上的应用程序,利用了这个功能。
使用 USB-Android 驱动程序,我看到的唯一问题是不支持使用 USB 主机进行同步传输。因此,我们不能保证延迟确定性。但是,考虑到没有附加其他总线配件,在我的测试中性能似乎相当不错。
【讨论】: