【发布时间】:2012-12-28 16:35:10
【问题描述】:
我正在制作一个简单的应用程序来播放 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 输出端口?
【问题讨论】:
标签: java midi midi-interface javax.sound.midi