MidiSystem.getSequencer()非常慢

时间:2013-02-12 22:07:40

标签: java midi

我正在创建MIDI音序器并根据我的知识初始化音序器,我需要使用:

Sequencer sequencer = MidiSystem.getSequencer();

但这导致我的程序在这个方法调用中开始非常非常慢,最多2分钟!

任何想法如何解决这个问题? 谢谢

1 个答案:

答案 0 :(得分:1)

查看MidiSystem.getSequencer()的代码,看起来它试图连接各种尝试连接下一个的东西,如果前一个失败的话。这意味着如果所有连接尝试都失败到最后,则可能需要很长时间。

要测试此理论,请尝试使用

Sequencer sequencer = MidiSystem.getSequencer(false);

并查看该行是否执行得更快,如果确实如此,则问题是连接到默认合成器所需的时间。

调用getSequencer()时,系列事件为

  1. 获取连接到默认设备的默认Sequencer
  2. 返回的Sequencer已连接到默认的Synthesizer ...
  3. 如果没有合成器可用或默认无法打开,请连接到默认接收器。通过从Sequencer获取Transmitter实例并设置它的Receiver来建立连接。
  4. 这个文本几乎是javadoc中的文字,但正如你所看到的,有足够的尝试创建连接以使调用有点慢。