创建音乐盒播放器
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(); } } }
相关文章推荐
- 两圆相交面积计算
- UVA 129
- SQL Server 2016 CTP2.2 的关键特性
- Java设计模式:工厂模式举例
- 读书笔记-《人人都是产品经理》,重读
- Java基本语法--程序流程控制
- [精通iOS开发(第5版)]第21章 集合视图 笔记
- 在eclipse中使用Lombok
- tomcat之jvm分析
- MySQL的InnoDB索引原理详解 (转)
- codeforces 505 D Mr. Kitayuta's Technology
- uva 673 Parentheses Balance(栈)
- BP神经网络设计常用的基本方法和实用技术
- 一个工程师该如何高效工作
- Linux vsftpd移植笔记
- acdream 1023 xor按位思考
- 字符串是否为空
- java web系统架构设计需要解决的几个问题
- LeetCode#18 4 Sum
- MyBatis学习系列十:Spring集成