2

我试图通过从 Java 程序发送一些 midi 消息来控制我的 GarageBand 音序器。它适用于短消息。例如,我可以用这种方式在 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”。在网上寻找一些关于这个问题的信息让我觉得我没有朝着正确的方向前进,因为似乎没有什么很清楚。有人熟悉这个问题吗?

4

1 回答 1

0

可以使用字节数组创建 SysEx 消息:

byte[] mmcStart = new byte[]
    { (byte)0xf0, 0x7f, 0x7f, 0x06, 0x02, (byte)0xf7 };
SysexMessage myMsg = new SysexMessage(mmcStart);

制造商 ID 用于防止在使用供应商特定消息时发生冲突。标准化消息使用reserverd 制造商ID 7E(用于非实时消息)或7F(用于实时消息)。

请注意,除了 MMC Start 消息外,还有一个普通的 MIDI Start 消息 ( ShortMessage.START)。

但是,GarageBand 都不支持。请参阅GarageBand 控制代码

于 2014-05-31T15:46:47.507 回答