1

基本的には、MIDI ノート (トラック、ノート、オクターブ) のデータをシーケンサーでリアルタイムに取得して表示したいと考えています。

これを次のコードに追加できるようにしたいと思います。

Sequencer sequencer = MidiSystem.getSequencer();
sequencer.setSequence(MidiSystem.getSequence(song));
sequencer.open();
sequencer.start();
while(true) {
    if(sequencer.isRunning()) {
        try {
            Thread.sleep(1000); // Check every second
        } catch(InterruptedException ignore) {
            break;
        }
    } else {
        break;
    }
}

しかし、私はそれを行う方法がわかりません。

4

1 に答える 1

2

ControllerEventListener をシーケンサーに追加します。アクティブな待機を節約し、表示する必要があるすべての情報を提供します。

ControllerEventListener controllerEventListener = new ControllerEventListener() {
   public void controlChange(ShortMessage event) {
      // TODO convert the event into a readable/desired output
      System.out.println(event);
   }
};

Sequencer sequencer = MidiSystem.getSequencer();
int[] controllersOfInterest = { 1, 2, 4 };
sequencer.addControllerEventListener(controllerEventListener, controllersOfInterest); 

こちらのページもあわせてご覧ください。

于 2012-09-13T20:39:43.680 に答える