【发布时间】:2013-09-25 18:39:17
【问题描述】:
在我的客户端上,我试图让 MIDI 文件淡出,然后再继续播放序列中的下一个 MIDI,但我遇到了麻烦。
使用下面的代码,它会在 track.add 处导致 nullpointerException,我想知道我做错了什么?
我对 Java 编程比较陌生,所以请具体回答
public void run() {
active = true
String s = findcachedir();
uid = getuid(s);
if(midiplay)
{
/*
midi = s + savereq;
midiplay = false;
*/
midi = s + savereq;
try {
//System.out.println("Play MIDI " + midi);
if (musicSr != null)
{
musicSr.stop();
musicSr.close();
}
musicSr = null;
musicS = null;
File music = new File(midi);
if(music.exists())
{
musicS = MidiSystem.getSequence(music);
}
for (int k = 0; k < 16; k++) {
musicS.getTracks();
track.add(
new MidiEvent(
new ShortMessage(
ShortMessage.CONTROL_CHANGE,
k,
7,
20),
track.getTicks()));
}
// Create a sequencer for the sequence
musicSr = MidiSystem.getSequencer();
musicSr.open();
musicSr.setSequence(musicS);
musicSr.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);
musicSr.start();
} catch (Exception ex) {
ex.printStackTrace();
}
midiplay = false;
}
savereq = null;
}
}
public static Sequencer musicSr = null;
Sequence musicS = null;
` 如果您出于任何原因需要,整个班级
【问题讨论】:
-
您的曲目在哪里声明?
-
我在班级底部有它
private Track track;
标签: java exception audio sequence midi