我想在 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 模式选择屏幕(如下)。
应用程序可以使用 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/