【Java开源代码栏目提醒】:网学会员,鉴于大家对Java开源代码十分关注,论文会员在此为大家搜集整理了“MidiPlayer.java”一文,供大家参考学习!
import javax.sound.midi.*;
import java.io.*;
class MidiPlayer implements Runnable{
protected Sequence m_Midi;
protected Sequencer m_player;
public boolean m_bOk;
private Thread m_thread;
MidiPlayer(String FileName){
File file=new File(FileName);
m_bOk=true;
m_thread=null;
try{m_Midi=MidiSystem.getSequence(file);}
catch(InvalidMidiDataException ie){m_bOk=false;}
catch(IOException ie){m_bOk=false;}
try{m_player=MidiSystem.getSequencer();}
catch(MidiUnavailableException ie){m_bOk=false;}
}
public void run(){
while(m_thread!=null){
try{m_player.open();}
catch(MidiUnavailableException ie){}
try{m_player.setSequence(m_Midi);}
catch(InvalidMidiDataException ie){}
m_player.start();
while(m_player.isRunning()&&m_thread!=null){
try{Thread.sleep(1000);}
catch(InterruptedException ie){}
}
m_player.close();
}
}
public void play(){
if(m_player.isRunning()==false&&m_thread==null){
try{m_player.open();}
catch(MidiUnavailableException ie){}
try{m_player.setSequence(m_Midi);}
catch(InvalidMidiDataException ie){}
m_player.start();
}
}
public void loop(){
if(m_player.isRunning()==false&&m_thread==null){
m_thread=new Thread(this);
m_thread.start();
}
}
public void stop(){
if(m_thread!=null&&m_thread.isAlive())m_thread.yield();
m_thread=null;
if(m_player.isRunning())m_player.close();
}
}