我似乎无法关闭 Java 中音序器的默认输出。我总是在向另一个端口发送消息时获得标准的 MIDI 声音。
寻找我的港口
Sequencer sequencer = MidiSystem.getSequencer();
MidiDevice.Info[] midiDeviceInfos = MidiSystem.getMidiDeviceInfo();
// 1 is the port I want
MidiDevice midiOutDevice = MidiSystem.getMidiDevice(midiDeviceInfos[1]);
Receiver midiOutReceiver = midiOutDevice.getReceiver();
sequencer.getTransmitter().setReceiver(midiOutReceiver);
Run Code Online (Sandbox Code Playgroud)
这会导致 MIDI 不可用异常:MIDI IN 接收器不可用。
除非我将其更改为(这使我获得所需的端口),但仍然是默认的 MIDI:
Receiver midiOutReceiver = MidiSystem.getReceiver();
sequencer.getTransmitter().setReceiver(midiOutReceiver);
Run Code Online (Sandbox Code Playgroud)
无法移除任何发射器或接收器
sequencer.getTransmitters().remove(INT)
sequencer.getReceivers().remove(INT)
Run Code Online (Sandbox Code Playgroud)
现在无论我做什么,我总是听到音序器的默认 MIDI 输出(这给了我一个编译错误)
如何在没有 Java 中音序器的标准端口的情况下仅将 MIDI 发送到 1 个端口?
终于找到了一种方法来避免音序器对象具有的默认连接。您可以选择不传递任何参数来选择默认音序器。但是如果你使用 getSequencer 方法传递一个布尔值,你可以选择!
Sequencer seq = MidiSystem.getSequencer(false);
Run Code Online (Sandbox Code Playgroud)