win7下用java编写了一个有关midi的小程序,但是无法发声,求帮助

mmrx 2013-04-16 06:07:52

import javax.sound.midi.*;
public class MiniMiniMusicApp {
public static void main(String[] args){

}

public void play(){
try{
Sequencer player = MidiSystem.getSequencer();//取得sequencer并将其打开
player.open();

Sequence seq = new Sequence( Sequence.PPQ,4 );//用不着管参数的定义

Track track = seq.createTrack();//要求取得Track

ShortMessage a = new ShortMessage();//对Track加入几个MidiEvent,要注意
//是setMessage()的参数,以及
//MidiEvent的constructor。
a.setMessage( 144,1,44,100 );
MidiEvent noteOn = new MidiEvent( a,1 );
track.add( noteOn );

ShortMessage b = new ShortMessage();
b.setMessage( 128,1,144,100 );
MidiEvent noteOff = new MidiEvent( b,16 );
track.add( noteOff );

player.setSequence( seq );//将得到的Sequence送到Sequencer上

player.start();//开始播放
} catch ( Exception ex ){
ex.printStackTrace();
}




}//关闭播放
}//关闭类

运行之后没有声音,怎么回事,是电脑的相关设置么?
...全文
41 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmrx 2013-04-16
  • 打赏
  • 举报
回复
import javax.sound.midi.*;
public class MiniMiniMusicApp {
	public static void main(String[] args){
		
	}
	
	public void play(){
		try{
			Sequencer player = MidiSystem.getSequencer();//取得sequencer并将其打开
			player.open();
			
			Sequence seq = new Sequence( Sequence.PPQ,4 );//用不着管参数的定义
			
			Track track = seq.createTrack();//要求取得Track
			
			ShortMessage a = new ShortMessage();//对Track加入几个MidiEvent,要注意
			                                    //是setMessage()的参数,以及
			                                    //MidiEvent的constructor。
			a.setMessage( 144,1,44,100 );
			MidiEvent noteOn = new MidiEvent( a,1 );
			track.add( noteOn );
			
			ShortMessage b = new ShortMessage();
			b.setMessage( 128,1,144,100 );
			MidiEvent noteOff = new MidiEvent( b,16 );
			track.add( noteOff );
			
			player.setSequence( seq );//将得到的Sequence送到Sequencer上 
			
			player.start();//开始播放
		   } catch ( Exception ex ){
			   ex.printStackTrace();
		   }
			
			
			
			
    }//关闭播放
}//关闭类
	
mmrx 2013-04-16
  • 打赏
  • 举报
回复
import javax.sound.midi.*;
public class MiniMiniMusicApp {
	public static void main(String[] args){
		
	}
	
	public void play(){
		try{
			Sequencer player = MidiSystem.getSequencer();//取得sequencer并将其打开
			player.open();
			
			Sequence seq = new Sequence( Sequence.PPQ,4 );//用不着管参数的定义
			
			Track track = seq.createTrack();//要求取得Track
			
			ShortMessage a = new ShortMessage();//对Track加入几个MidiEvent,要注意
			                                    //是setMessage()的参数,以及
			                                    //MidiEvent的constructor。
			a.setMessage( 144,1,44,100 );
			MidiEvent noteOn = new MidiEvent( a,1 );
			track.add( noteOn );
			
			ShortMessage b = new ShortMessage();
			b.setMessage( 128,1,144,100 );
			MidiEvent noteOff = new MidiEvent( b,16 );
			track.add( noteOff );
			
			player.setSequence( seq );//将得到的Sequence送到Sequencer上 
			
			player.start();//开始播放
		   } catch ( Exception ex ){
			   ex.printStackTrace();
		   }
			
			
			
			
    }//关闭播放
}//关闭类
	
mmrx 2013-04-16
  • 打赏
  • 举报
回复
import javax.sound.midi.*; public class MiniMiniMusicApp { public static void main(String[] args){ } public void play(){ try{ Sequencer player = MidiSystem.getSequencer();//取得sequencer并将其打开 player.open(); Sequence seq = new Sequence( Sequence.PPQ,4 );//用不着管参数的定义 Track track = seq.createTrack();//要求取得Track ShortMessage a = new ShortMessage();//对Track加入几个MidiEvent,要注意 //是setMessage()的参数,以及 //MidiEvent的constructor。 a.setMessage( 144,1,44,100 ); MidiEvent noteOn = new MidiEvent( a,1 ); track.add( noteOn ); ShortMessage b = new ShortMessage(); b.setMessage( 128,1,144,100 ); MidiEvent noteOff = new MidiEvent( b,16 ); track.add( noteOff ); player.setSequence( seq );//将得到的Sequence送到Sequencer上 player.start();//开始播放 } catch ( Exception ex ){ ex.printStackTrace(); } }//关闭播放 }//关闭类

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧