一个小小的java音乐播放器,是的,他只会发出奇怪的一声“den~” 。仅此而已。
先上代码:
package h220305;
import javax.sound.midi.*;
public class MiniMiniMusicApp {
public static void main(String[] args) {
MiniMiniMusicApp mini = new MiniMiniMusicApp();
mini.play();
}
public void play() {
try {
Sequencer player = MidiSystem.getSequencer(); //播放器
player.open();
Sequence seq = new Sequence(Sequence.PPQ, 4); //乐曲
Track track = seq.createTrack(); //带有乐曲信息的记录
ShortMessage a = new ShortMessage();
a.setMessage(144, 1, 43, 100); //音符
//参数依次为a.setMessage(指令(如144为打开,128为关闭),频道,音符,声音大小)
MidiEvent noteOn1 = new MidiEvent(a, 1); //音符加发音时机组成MidiEvent
track.add(noteOn1); //把MidiEvent add 进 track
ShortMessage b = new ShortMessage();
b.setMessage(128, 1, 43, 100);
MidiEvent noteOff1 = new MidiEvent(b, 16);
track.add(noteOff1);
player.setSequence(seq);
player.start();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
小小播放器的工作原理(midi的工作原理):
将带有音乐信息的midi文件发送midi装置,midi装置利用喇叭来发出声音。
midi文件更像是一张乐谱,它带有乐曲的信息但不具有播放乐曲的功能。而midi装置知道要如何读取midi文件并利用硬件设施加以播放。
播放音乐的必备条件:
乐曲的音符等其他信息(MidiEvent)组成带有乐曲的信息记录(track),然后通过排序等整理形成要演奏的乐曲(Sequence),最后通过发声的装置来播放声音(Sequencer)。
注意: MidiEvent是由音符加上发声时机所组成的