用Java为Garage band构建sysex消息

时间:2014-05-29 16:34:46

标签: java midi javax.sound.midi

我试图通过从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"。在网上寻找关于这个问题的一些信息让我觉得我没有朝着正确的方向前进,因为似乎没有什么是真正清楚的。有人熟悉这个问题吗?

1 个答案:

答案 0 :(得分: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 Control Codes