我从java开始,并试着用midi播放一些声音。我正在关注“Head First”一书。问题是我听不到任何声音,这是我的代码
package pakedz;
import javax.sound.midi.*;
public class odtwarzaczMuzyki {
public void graj(){
try {
Sequencer sekwenser = MidiSystem.getSequencer();
System.out.println("Mamy sekwenser");
sekwenser.open();
Sequence sekwencja = new Sequence(Sequence.PPQ,4);
Track sciezka = sekwencja.createTrack();
ShortMessage a = new ShortMessage();
a.setMessage(144, 1, 20, 100);
MidiEvent nutaP = new MidiEvent(a, 1);
sciezka.add(nutaP);
ShortMessage b = new ShortMessage();
b.setMessage(128, 1, 44, 100);
MidiEvent nutaK = new MidiEvent(b, 16);
sciezka.add(nutaK);
sekwenser.setSequence(sekwencja);
} catch (Exception ex) {
System.out.println("KUTASMARIAN");
}
};
public static void main (String[] args){
odtwarzaczMuzyki radio = new odtwarzaczMuzyki();
radio.graj();
}
}
我正在使用java 8.0
答案 0 :(得分:1)
需要在Sequencer中调用start()
方法。以下是修改后的(未经测试的)代码。
建议您查看Javadoc和official tutorials。
package pakedz;
import javax.sound.midi.*;
public class odtwarzaczMuzyki {
public void graj(){
try {
Sequencer sekwenser = MidiSystem.getSequencer();
System.out.println("Mamy sekwenser");
sekwenser.open();
Sequence sekwencja = new Sequence(Sequence.PPQ,4);
Track sciezka = sekwencja.createTrack();
ShortMessage a = new ShortMessage();
a.setMessage(144, 1, 20, 100);
MidiEvent nutaP = new MidiEvent(a, 1);
sciezka.add(nutaP);
ShortMessage b = new ShortMessage();
b.setMessage(128, 1, 44, 100);
MidiEvent nutaK = new MidiEvent(b, 16);
sciezka.add(nutaK);
sekwenser.setSequence(sekwencja);
sekwenser.start();
}
catch (Exception ex) {
System.out.println("KUTASMARIAN");
}
};
public static void main (String[] args) {
odtwarzaczMuzyki radio = new odtwarzaczMuzyki();
radio.graj();
}
}