如何循环Midi序列Java

Wnt*_*pin 5 java midi loops

我对Java编程很新,并且想知道如何在游戏正常播放时正确循环MIDI序列.我有一些代码,我知道我应该使用setLoopCount()来做到这一点,但我不确定如何实现它.

这是我到目前为止的代码

Sequencer myseq; 
myseq = MidiSystem.getSequencer(); 
myseq.open();
File myMidiFile = new File("sounds/music.midi");
Sequence supersequence = MidiSystem.getSequence(myMidiFile);
myseq.setSequence(supersequence);
myseq.start(); 
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

Win*_*ute 1

有一本关于java游戏开发的好书(但很老):http://www.brackeen.com/javagamebook/源代码可以在网站上找到。查看第 4 章... 在 SoundManagerTest.java 文件中,您将找到有关循环 midi 声音的示例。我希望它不会太过时。

顺便说一句:MIDI 循环和 Java 5 似乎存在问题。请查看页面末尾:

Java 5 和 Java 6 中的声音问题。

Sun 更新了 Java 5 中的声音引擎,这导致了一些问题。以下是修复方法: MIDI 音乐不循环。在 MidiPlayer.java 中添加此行(以粗体显示):

public void meta(MetaMessage event) {
  if (event.getType() == END_OF_TRACK_MESSAGE) {
   if (sequencer != null && sequencer.isOpen() && loop) {
       sequencer.setTickPosition(0);
       sequencer.start();
   }
  }
}
Run Code Online (Sandbox Code Playgroud)