发送和接收Java Midi Sysex消息
我想用Java声音API发送和接收SysEx消息 我可以向设备发送消息,但我希望在发送命令后接收从设备发送的SysEx消息 这是我的密码:发送和接收Java Midi Sysex消息,java,midi,Java,Midi,我想用Java声音API发送和接收SysEx消息 我可以向设备发送消息,但我希望在发送命令后接收从设备发送的SysEx消息 这是我的密码: try { MidiDevice device = MidiSystem.getMidiDevice(info); byte[] dataAlone = { (byte) 0xF0, (byte) 0xB0, (byte) 0x63, (byt
try {
MidiDevice device = MidiSystem.getMidiDevice(info);
byte[] dataAlone = {
(byte) 0xF0,
(byte) 0xB0, (byte) 0x63, (byte) 0x00,
(byte) 0xB0, (byte) 0x62, (byte) 0x0C,
(byte) 0xB0, (byte) 0x60, (byte) 0x7F,
(byte) 0xF7
};
SysexMessage message1 = new SysexMessage(dataAlone, dataAlone.length);
device.open();
Receiver rcvr = device.getReceiver();
rcvr.send(message1, -1);
rcvr.close();
} catch (InvalidMidiDataException | MidiUnavailableException e) {
System.out.println(e);
}
当我发送此消息时,设备将使用SysEx消息进行应答,我可以在计算机上运行的midi应用程序上看到该消息。以下是缺失的代码:
// To find the available Midi IN devices on your system, scan the available MidiDevices
// and test if (!(device instanceof Sequencer) && device.getMaxTransmitters() != 0)
// ...
inDevice.open();
// tIn will transmit Midi IN data. Don't forget to close it when no longer used
Transmitter tIn = inDevice.getTransmitter();
// Connect it to our MidiMessage handler
tIn.setReceiver(new MidiInMessageHandler());
// ...
class MidiInMessageHandler implements Receiver
{
@Override
public void send(MidiMessage message, long timeStamp)
{
if (message instanceof SysexMessage)
{
// Do something
}
}
@Override
public void close()
{
// Nothing
}
}
如果您需要更多示例代码,请查看我的应用程序JJazzLab-X,特别是
Midi
模块中的JJazzMidiSystem.java
和MidiUtilities.java
。您需要实现接收器
接口。另请参阅,谢谢,我们确实实现了customReceiver,现在它正在工作。