7

私はMIDIシーケンサーを作成しており、私が知る限りシーケンサーを初期化するには、次を使用する必要があります:

Sequencer sequencer = MidiSystem.getSequencer();

しかし、これにより、この1つのメソッド呼び出しでプログラムの開始が非常に遅くなり、最大2分かかります!

これを修正する方法はありますか?ありがとうございました

4

1 に答える 1

1

MidiSystem.getSequencer() のコードを見ると、前のものが失敗した場合に次のものを接続しようとして、さまざまなものを接続しようとしているようです。これは、すべての接続試行が最後まで失敗した場合、多くの時間がかかる可能性があることを意味します。

この理論をテストするには、次を使用してみてください

シーケンサー シーケンサー = MidiSystem.getSequencer(false);

その行がより速く実行されるかどうかを確認します。実行される場合、問題はデフォルトのシンセサイザーへの接続にかかる時間です。

getSequencer() を呼び出すと、一連のイベントは

  1. デフォルトのデバイスに接続されているデフォルトのシーケンサーを取得する
  2. 返されたシーケンサーはデフォルトのシンセサイザーに接続されています...
  3. 使用可能なシンセサイザーがない場合、またはデフォルトを開くことができない場合は、デフォルトのレシーバーに接続します。接続は、Sequencer から Transmitter インスタンスを取得し、それを Receiver に設定することによって行われます。

このテキストは Javadoc にあるものとほとんど同じですが、ご覧のとおり、呼び出しを少し遅くするために接続を作成しようとする試みが十分にあります。

于 2013-02-21T10:12:36.037 に答える