android - 在 Android 上通过 USB 发送 MIDI 消息

标签 android usb message midi

我想在 android 上制作一个应用程序,通过 USB 将 MIDI 消息发送到计算机,以便能够控制音乐软件,如 Cubase、FL、Reason 等...

Windows 上的音乐软件会自动识别硬件 MIDI Controller (例如键盘)。我猜是因为他们使用了音乐软件直接识别的通用MIDI协议(protocol)。他们不需要自己的司机。

我希望能够将我的手机/平板电脑用作 MIDI Controller ,而无需在计算机上安装五线谱(就像使用硬件 Controller 一样)。

Android 开发人员有一个演示代码可以通过 USB 控制导弹发射器玩具。如果我使用相同的技术发送遵循 MIDI 协议(protocol)的消息,它会像那样工作吗?

预先感谢您的帮助

最佳答案

有了 Android 6.0 (API 23),这现在成为可能 - Android 设备可以充当类兼容(无需驱动程序)MIDI 设备。

要切换到 USB-MIDI 模式,用户可以从屏幕顶部向下滑动以访问 USB 模式选择屏幕(如下)。

Screenshot showing USB selection menu

应用程序可以使用 new MIDI API 发送 MIDI 消息.下面是发送 MIDI NoteOn 消息的一些代码:

byte[] buffer = new buffer[3];
buffer[0] = (byte)0x90 + (byte)0x01; // Note On - Channel 1
buffer[1] = (byte)0x3C; // pitch (Note C3)
buffer[2] = (byte)127; // velocity
int offset = 0;
inputPort.send(buffer, offset, numBytes);

要发送其他消息类型,请咨询 MIDI message specification .请注意,字节是用 Java 签名的,所以 this post might be helpful .

关于android - 在 Android 上通过 USB 发送 MIDI 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9102850/

相关文章:

XMPP:Smack 客户端未收到聊天消息

android - java.lang.SecurityException : Neither user 10032 nor current process has android. 权限.MODIFY_PHONE_STATE

Android-来自 WebView 的简单书签

java - 无法以编程方式安装 apk 文件

java - 来自 USB 的自定义信号

windows - 如何为 Windows 平台的 USB 设备编写驱动程序?

mysql - ejabberd 16.06 + mysql 5.5.50,消息历史记录不保存

android - Android Studio中的空白 Activity 和基本 Activity 有什么区别?

python - 在 Windows 中禁用特定的 USB 端口

ios - 消息应用程序 Swift - 显示所有对话