我试图通过从Java程序发送一些midi消息来控制我的GarageBand音序器。它在ShortMessage上运行良好。例如,我可以这样在GarageBand中记录一个C3:
ShortMessage myMsg = new ShortMessage();
myMsg.setMessage(ShortMessage.NOTE_ON, 0, 60, 93);
Receiver receiver = MidiSystem.getReceiver();
receiver.send(myMsg, -1);现在,我想发送一些SysEx消息来“控制”我的音序器,例如,开始录制。但是构建SysexMessage比构建ShortMessage更难,因为它需要构建一个字节数组。特别是,必须指定“制造商ID”。在网上查找关于这个问题的一些信息给我的感觉是我走错了方向,因为似乎没有什么是真正清楚的。有人熟悉这个问题吗?
发布于 2014-05-31 23:46:48
可以使用字节数组创建SysEx消息:
byte[] mmcStart = new byte[]
{ (byte)0xf0, 0x7f, 0x7f, 0x06, 0x02, (byte)0xf7 };
SysexMessage myMsg = new SysexMessage(mmcStart);制造商ID用于防止在使用特定于供应商的消息时发生冲突。标准化消息使用预留制造商ID 7E (用于非实时消息)或7F (用于实时消息)。
请注意,除了MMC启动消息之外,还有一个简单的MIDI启动消息(ShortMessage.START)。
但是,请参阅GarageBand Control Codes,GarageBand对这两种方法都不支持。
https://stackoverflow.com/questions/23938290
复制相似问题