【发布时间】:2019-01-02 19:21:49
【问题描述】:
我想使用 Java 音序器及其 setLoopCount() 方法循环一个 Midi 序列。
如果音序器的输出连接到外部 Midi 输出设备,则每次序列循环时都会引入明显的延迟。
如果音序器连接到内部 Java 合成器 (Gervill),我不会注意到循环之间有任何延迟。我尝试了不同的循环点,它不会改变问题。我正在使用 Win10/Java 8。
sequencer = MidiSystem.getSequencer(false);
sequencer.open();
Sequence sequence = MidiSystem.getSequence(midiFile);
sequencer.setSequence(sequence);
// outDevice=Java synth (Gervill)
// or
// outDevice=Edirol UA-25 (USB)
Receiver outDeviceReceiver = outDevice.getReceiver();
Transmitter seqTransmitter = sequencer.getTransmitter();
seqTransmitter.setReceiver(outDeviceReceiver);
int startLoopTick = 0;
int endLoopTick = -1; // Loop at end of sequence
sequencer.setLoopStartPoint(startLoopTick);
sequencer.setLoopEndPoint(endLoopTick);
sequencer.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);
// if outDevice==Edirol there is a slight delay between loops
sequencer.start();
【问题讨论】:
-
这听起来像是您的特定 Java 实现中的错误。
-
我将 Oracle JDK 8 用于 Win10 x64。有替代品吗?