📄 playmidi.java
字号:
import java.io.*;
import javax.sound.midi.*;
import java.net.URL;
/**
* 播放Midi音乐
* @author fantasyer
* @version 1.0
*/
public class PlayMidi
{
private static Sequence sequence; //存放音乐数据
private static Sequencer sequencer; //用于播放sequence
/**
* 加载Midi资源
* @param fileName 文件名称
*/
public static void loadMidi(String fileName)
{
try
{
URL url = Class.forName("PlayMidi").getClassLoader().getResource(fileName);
sequence = MidiSystem.getSequence(url);
sequencer = MidiSystem.getSequencer();
sequencer.open();
sequencer.setSequence(sequence);
sequencer.addMetaEventListener(new MetaEventListener()
{
public void meta(MetaMessage e)
{
if (e.getType()==47)
{
sequencer.close();
}
}
});
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 播放Midi声音文件
* @param isloop 是否循环播放
*/
public static void play(boolean isloop)
{
if (sequencer==null)
{
return;
}
try
{
if (isloop)
{
sequencer.setLoopStartPoint(0);
sequencer.setLoopEndPoint(-1);
sequencer.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);
}
sequencer.start();
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 停止播放
*/
public static void stop()
{
if (sequencer==null)
{
return;
}
sequencer.stop();
}
//for test
public static void main(String[] args)
{
PlayMidi.loadMidi("sound/a16.mid");
PlayMidi.play(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -