很久前看到别人写的电子乐器软件,感觉很炫,一直以为音效是采用录制的音乐,然后事件触发音效播放,今天才知道理解错了,javax.sound.midi包下提供了一系列与音乐播放,音效组合相关的API.这里实现一个简单的乐器音效组合.来说明相关参数的作用.
package Test;
import javax.sound.midi.MidiEvent;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Sequence;
import javax.sound.midi.Sequencer;
import javax.sound.midi.ShortMessage;
import javax.sound.midi.Track;
/**
*
*
*
*
*
*/
public class MidiPlayer {
public void play(){
try {
Sequencer player = MidiSystem.getSequencer();
player.open();
//节拍器
Sequence seq = new Sequence(Sequence.PPQ,4);
Track track = seq.createTrack();
int r=0;
for(int i=0; i<60; i+=4){
r = (int)((Math.random()*50)+1); //随即音符
track.add(makeEvent(144, 1, r, 100, i));
track.add(makeEvent(128, 1, r, 100, i+2));