使用命令行參數(shù)
package book.java;
import java.nio.channels.ShutdownChannelGroupException;
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 MideSound {
public MideSound() {
// TODO Auto-generated constructor stub
}
public void play(int instrument, int note) {
//獲得播放器并打開
try {
Sequencer player = MidiSystem.getSequencer();
player.open();
Sequence seq = new Sequence(Sequence.SMPTE_30DROP, 4);
Track track = seq.createTrack();
ShortMessage cMessage = new ShortMessage();
cMessage.setMessage(192, 1, instrument, 0);
MidiEvent first = new MidiEvent(cMessage, 1);
track.add(first);
ShortMessage aMessage = new ShortMessage();
aMessage.setMessage(144, 1, note, 100);
MidiEvent noteOn = new MidiEvent(aMessage, 1);
track.add(noteOn);
ShortMessage bMessage = new ShortMessage();
bMessage.setMessage(144, 1, note, 100);
MidiEvent noteOff = new MidiEvent(bMessage, 16);
track.add(noteOff);
player.setSequence(seq);
player.start();
} catch(Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
// 構建播放器對象
MideSound mini = new MideSound();
if (args.length < 2) {
System.out.println("Don't forget the instrument and note args!");
} else {
int instrument = Integer.parseInt(args[0]);
int note = Integer.parseInt(args[1]);
mini.play(instrument, note);
}
mini.play();
}
}