创建音乐盒播放器

来源:互联网 发布:五道口金融博士知乎 编辑:程序博客网 时间:2024/05/20 14:40
<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 exampleif(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的constructorShortMessage 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();}}}


0 0