您的位置:首页 > 其它

创建音乐盒播放器

2015-08-01 20:15 417 查看
<pre name="code" class="java">import javax.sound.midi.*;//使用命令列参数改变乐器和音符
public class MiniMusicCmdLine
{
public static void main(String [] args)
{
MiniMusicCmdLine mini=new MiniMusicCmdLine();
if(args.length<2)
System.out.println("Don't forget the instrument and note args");
else
{
System.out.println("main start");
int instrument=Integer.parseInt(args[0]);
int note=Integer.parseInt(args[1]);
mini.play(instrument,note);
System.out.println("main end");
}
System.out.println("main end");
}
public void play(int instrument,int note)
{
try{
System.out.println("try start");
Sequencer player=MidiSystem.getSequencer();
player.open();
Sequence seq =new Sequence(Sequence.PPQ,4);
Track track=seq.createTrack();
MidiEvent event = null;
ShortMessage first=new ShortMessage();
first.setMessage(192,1,instrument,0);
MidiEvent changeInstrument=new MidiEvent(first,1);
track.add(changeInstrument);
ShortMessage a=new ShortMessage();
a.setMessage(144,1,note,100);
MidiEvent noteOn=new MidiEvent(a,1);
track.add(noteOn);
ShortMessage b=new ShortMessage();
b.setMessage(128,1,note,100);
MidiEvent noteOff=new MidiEvent(b,16);
track.add(noteOff);
player.setSequence(seq);
player.start();
System.out.println("try end");
}catch(Exception ex)
{
ex.printStackTrace();
}
}
}//e:\java project\head first java\chapter 11\minimusiccmdline


import javax.sound.midi.*;//此程序没有进行风险处理所以出错public class MusicTest1{public void play(){Sequencer sequencer=MidiSystem.getSequencer();//Sequencer的作用是蒋midi的信息组合成乐曲System.out.println("We got a sequencer");}public static void main(){MusicTest1 mt=new MusicTest1();mt.play();}}


import javax.sound.midi.*;//进行风险处理后的程序
public class MusicTest1
{
public void play()
{
try
{
Sequencer sequencer=MidiSystem.getSequencer();
System.out.println("Successfully got a sequencer");
}
catch(MidiUnavailableException ex)
{
System.out.println("Brummer");
}
}
public static void main(String [] args)
{
MusicTest1 mt=new MusicTest1();
mt.play();
}
}


public void takeRisk()throws BadException{//throws throw try catch example
if(abandonAllHope)
throw new BadException();
}
public void crossFingers()
{
try
{
anObject.takeRisk();
}catch(BadException ex)
{
System.out.println("Aaargh!");
ex.printStackTrace();
}
}


public class TestExceptions//test exceptions
{
public static void main(String [] args)
{
String test="no";
try{
System.out.println("start try");
doRisky(test);
System.out.println("end try");
}catch(ScaryException se){
System.out.println("Scary exception");
}finally{
System.out.println("finally");
}
System.out.println("end of main");
}
static void doRisky(String test)throws ScaryException{
System.out.println("start risky");
if("yes".equals(test))
{
throw new ScaryException();
}
System.out.println("end risky");
return;
}
}


public class Washer//ducking exceptions
{
Laundry laundry=new Laundry();
public void foo()throws ClothingException{
laundry.doLaundry();
}
public static void main(String [] args)throws ClothingException{
Washer a=new Washer();
a.foo();
}
}


import javax.sound.midi.*;//first 音乐盒
public class MiniMiniMusicApp
{
public static void main(String [] args)//在main中若class 中实例变量或者函数声明为static则在main中不需要声明一个对象就可以直接用,否则则需要声明一个对象再调用函数或者实例变量
{
MiniMiniMusicApp mini =new MiniMiniMusicApp();
mini.play();
}
public void play()
{
//取得Sequencer并将它打开
try{
Sequencer player =MidiSystem.getSequencer();
player.open();
Sequence seq=new Sequence(Sequence.PPQ,4);
Track track=seq.createTrack();//取得track
//对track加入几个MidiEvent,注意setMessage()的参数以及MidiEvent的constructor
ShortMessage a=new ShortMessage();
a.setMessage(141,1,44,100);
MidiEvent noteOn=new MidiEvent(a,1);
track.add(noteOn);

ShortMessage b=new ShortMessage();
b.setMessage(128,1,44,100);
MidiEvent noteOff=new MidiEvent(b,16);
track.add(noteOff);
player.setSequence(seq);
player.start();
}catch(Exception ex)
{
ex.printStackTrace();
}
}
}


import javax.sound.midi.*;//使用命令列参数改变乐器和音符
public class MiniMusicCmdLine
{
public static void main(String [] args)
{
MiniMusicCmdLine mini=new MiniMusicCmdLine();
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);
}
}
public void play(int instrument,int note)
{
try{
Sequencer player=MidiSystem.getSequencer();
player.open();
Sequence seq =new Sequence(Sequence.PPQ,4);
Track track=seq.createTrack();
MidiEvent event = null;
ShortMessage first=new ShortMessage();
first.setMessage(192,1,instrument,0);
MidiEvent changeInstrument=new MidiEvent(first,1);
track.add(changeInstrument);
ShortMessage a=new ShortMessage();
a.setMessage(144,1,note,100);
MidiEvent noteOn=new MidiEvent(a,1);
track.add(noteOn);
ShortMessage b=new ShortMessage();
b.setMessage(128,1,note,100);
MidiEvent noteOff=new MidiEvent(b,16);
track.add(noteOff);
player.setSequence(seq);
player.start();
}catch(Exception ex)
{
ex.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: