基本上,我希望在音序器实时播放时显示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;
}
}
但我不知道该怎么做。
答案 0 :(得分:2)
将ControllerEventListener添加到Sequencer。它将为您节省主动等待时间,并提供您需要显示的所有信息。
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);
同时查看此page。