我正在制作一个简单的应用程序来播放 Java 中的 MIDI 文件。
我正在使用javax.sound.midi
图书馆。
我可以正确检索我的 MIDI 输出设备(USB 到 MIDI 电缆)。
但是当我播放序列时,它总是在默认的声音合成器中播放,这是主机操作系统的通用 Midi (Soundfont) 播放。
我遇到的问题是更改默认的 MIDI 输出。
当我执行
Receiver MidiOutReceiver; //instantiated earlier
Sequencer MidiOutSequencer = MidiSystem.getSequencer();
MidiOutSequencer.open();
MidiOutSequencer.start();
我从扬声器中听到 MIDI 序列再现。
参考文档后
3.10。 “Java Sound Sequencer”隐式连接到默认合成器, 3.5. 在您的程序中,您可以自己获取 Synthesizer 实例并连接 它使用发射器/接收器对显式发送到定序器。 所以你知道使用的是哪个合成器。 如果您获得了预连接到合成器的音序器, 您可以使用 getTransmitters() 方法找出合成器。但是没有提到如何显式使用这个 Transmitter / Receiver 对并使用新的 Default Synthesizer 实例化 Sequencer 对象。
我有正确的发射器和接收器。但是他们不是把MIDI弹出来的。
当我尝试
MidiSystem.getTransmitter().setReceiver(MidiOutReceiver);
它似乎没有改变任何东西。
如何明确地将此接收器/发射器对与合成器一起使用,以便默认音序器使用我的 MIDI 输出端口?